2012-11-30 16 views
16

Invio alcune notifiche sulla barra di notifica, volevo cancellare tutto quando si fa clic su una notifica. Per ora, ho eliminato uno ad uno usando Flag. So che notificationManager.cancelAll() potrebbe cancellare tutte le notifiche ma dove dovrei inserire in modo che possa essere attivato una volta che si fa clic su una notifica.Come cancellare correttamente tutte le notifiche una volta cliccato?

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? 
} 

risposta

58

La mia soluzione è di chiamarlo a onResume().

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

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

Non funziona nel mio caso. –

+0

Non funziona per me –

+0

funziona come un incantesimo –

1

È necessario utilizzare un intento in sospeso che invia una trasmissione e quindi inserire un ricevitore di trasmissione che annullerà tutte le notifiche. È meglio memorizzare tutti gli ID delle notifiche ed eliminarli uno per uno.

Problemi correlati