2015-04-01 26 views
7

A adlı bir etkinliğim var, bunlar broadcast receiver'dan başlıyor. Etkinlik A bir bildirimi tetikledi ancak etkinlik yok olduğunda otomatik olarak kayboluyor (sonlandırma). Ancak bu bildirimi, kullanıcı bildirimi tıklatana veya el ile temizlemesine kadar tutmak istiyorum.Bildirim, etkinlik bittikten sonra kayboluyor

yayın alıcısından etkinlik başlangıç ​​

Intent i = new Intent(context,A.class); 
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); 
i.putExtras(intent.getExtras()); 
context.startActivity(i); 

Bildirim

Intent notificationIntent = new Intent(); 
notificationIntent.setClass(context,B.class); 
notificationIntent.setAction(Intent.ACTION_MAIN); 
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); 
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 
Notification notification = new NotificationCompat.Builder(context) 
     .setSmallIcon(R.drawable.notification_small) 
     .setContentTitle(status) 
     .setTicker(status) 
     .setAutoCancel(false) 
     .setContentText(message) 
     .setDefaults(Notification.DEFAULT_SOUND) 
     .setLargeIcon(
       Bitmap.createScaledBitmap(icon, 128, 128, false)) 
     .setContentIntent(pendingIntent) 
     .build(); 

tezahür seçenekleri

<activity android:name="com.example.activity.A" 
android:screenOrientation="portrait" 
android:launchMode="singleTask" 
android:taskAffinity="" 
android:excludeFromRecents="true"/> 

Not: Nasıl ben de SingleInstance ama hiçbir şans çalıştı.

Düzenleme (Sabit)

Garip bir hata yaptı. OnDestroy() işlevinde belirli bir bildirimi iptal etmek yerine clearAll() yöntemini çağırdım.

+1

mNotificationManager.cancel (NOTIFICATION_ID) ;? kullanarak bir yerde bildirimi iptal edermisiniz – Fahim

+0

bkz. Ben yorum yazımın temizlendiğini belirttim. – Fahim

cevap

1

kaldır autocancel() tamamen ve

public static final int NOTIFICATION_ID = 1; 
    private NotificationManager mNotificationManager; 
    NotificationCompat.Builder builder; 


    mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); 
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,new Intent(this, MenuActivity.class), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT); 

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this).setSmallIcon(R.drawable.icon).setContentTitle(" "). 
              setStyle(new NotificationCompat.BigTextStyle().bigText(bundle.get("").toString())). 
              setContentText(bundle.get("").toString()); 
    mBuilder.setContentIntent(contentIntent); 

    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build()); 
+0

Çalışmıyor. Kodunu tam olarak kopyalarım. Ama durum aynı. Bildirim görünür ancak etkinlik – shantanu

+1

bittiğinde açık ve test ettim, bildirimi bir yerde iptal etmediğinizi doğruladınız mı? –

+0

tüm kodu gönderebilir misin? –

3

Ben etkinliği yok edilir uygulamanızda tüm bildirim iptal düşünüyorum, bunu deneyin.

İlgili konular