2012-11-30 13 views
16

Ich sende ein paar Benachrichtigungen in der Benachrichtigungsleiste, ich wollte alles löschen, wenn eine der Benachrichtigungen angeklickt wird. Für jetzt lösche ich eins nach dem anderen mit Flag. Ich weiß, notificationManager.cancelAll() könnte die gesamte Benachrichtigung löschen, aber wo sollte ich setzen, so dass ich auslösen kann, sobald eine der Benachrichtigungen angeklickt wird.Wie werden alle Benachrichtigungen nach dem Klicken ordnungsgemäß gelöscht?

private static void generateNotification(Context context, String message) { 
    int icon = R.drawable.ic_launcher; 
    long when = System.currentTimeMillis(); 
    NotificationManager notificationManager = (NotificationManager) 
      context.getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(icon, message, when); 
    String title = context.getString(R.string.app_name); 
    Intent notificationIntent = new Intent(context, MainActivity.class); 

    // set intent so it does not start a new activity 
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | 
      Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    PendingIntent intent = 
      PendingIntent.getActivity(context, 0, notificationIntent, 0); 
    notification.setLatestEventInfo(context, title, message, intent); 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 

    notificationManager.notify(msgid, notification); 
    //notificationManager.cancelAll(); //i wan to clear all when the notification is clicked, where should i put this line? 
} 

Antwort

58

Meine Lösung ist es bei onResume() anrufen.

@Override 
protected void onResume() { 
super.onResume(); 

// Clear all notification 
NotificationManager nMgr = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
nMgr.cancelAll(); 
} 
+0

Es funktioniert nicht in meinem Fall. –

+0

funktioniert nicht für mich –

+0

funktioniert wie Charme –

1

Sie sollten eine anhängige Absicht verwenden, die eine Sendung sendet und dann an Ort und Stelle einen Rundfunkempfänger setzen, die alle Ihre Mitteilungen stornieren. Am besten merken Sie sich alle Benachrichtigungs-IDs und löschen sie einzeln.