2015-04-01 5 views
7

Ich habe eine Aktivität mit dem Namen A, die von einem broadcast receiver starten. Die Aktivität A hat eine Benachrichtigung ausgelöst, aber sie verschwindet automatisch, wenn die Aktivität zerstört wird (Ende). Aber ich möchte diese Benachrichtigung beibehalten, bis der Benutzer auf die Benachrichtigung klickt oder manuell löscht.Benachrichtigung verschwinden nach Abschluss der Aktivität

Wie Aktivität Start von Rundfunkempfänger

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); 

Mitteilung

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(); 

manifestieren Optionen

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

Hinweis: Ich habe versucht SingleInstance auch, aber kein Glück.

Edit (Fixed)

machte ich einen dummen Fehler. Ich habe clearAll() aufgerufen, anstatt eine bestimmte Benachrichtigung in der Funktion onDestroy() abzubrechen.

+1

Kündigen Sie die Benachrichtigung irgendwo mit mNotificationManager.cancel (NOTIFICATION_ID) ;? – Fahim

+0

Ich habe erwähnt, dass in meinem Kommentar, dass Sie die Benachrichtigung löschen – Fahim

Antwort

1

entfernen AUTOCANCEL() vollständig und versuchen diese,

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

funktioniert nicht. Ich kopiere deinen Code genau. Aber die Situation ist gleich. Benachrichtigung erscheint aber klar, wenn Aktivität – shantanu

+1

ich habe es getestet und woking, haben Sie verifiziert, dass Sie die Benachrichtigung nicht irgendwo abbrechen? –

+0

können Sie den ganzen Code posten? –

3

Ich glaube, Sie alle die Benachrichtigung in Ihrer App Cancelling, wenn die Aktivität zerstört wird.