android notification - So löschen Sie eine Benachrichtigung in Android




6 Answers

Verwenden Sie den folgenden Code, um eine Benachrichtigung abzubrechen:

NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(NOTIFICATION_ID);

In diesem Code wird immer dieselbe ID für Benachrichtigungen verwendet. Wenn Sie verschiedene Benachrichtigungen haben, die storniert werden müssen, müssen Sie die IDs speichern, die Sie zum Erstellen der Benachrichtigung verwendet haben.

deutsch manager

Ist es möglich, eine Benachrichtigung programmatisch zu löschen?

Ich habe es mit dem NotificationManager versucht, aber es funktioniert nicht. Kann ich es anders machen?




Da niemand eine Code-Antwort darauf gepostet hat:

notification.flags = Notification.FLAG_AUTO_CANCEL;

.. und wenn Sie bereits Flaggen haben, können Sie ODER FLAG_AUTO_CANCEL so:

notification.flags = Notification.FLAG_INSISTENT | Notification.FLAG_AUTO_CANCEL;



Ab API-Stufe 18 (Jellybean MR2) können Sie über NotificationListenerService andere Benachrichtigungen als Ihre eigenen abbrechen.

@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public class MyNotificationListenerService extends NotificationListenerService {...}

...

private void clearNotificationExample(StatusBarNotification sbn) {
    myNotificationListenerService.cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
}



 Notification mNotification = new Notification.Builder(this)

                .setContentTitle("A message from: " + fromUser)
                .setContentText(msg)
                .setAutoCancel(true)
                .setSmallIcon(R.drawable.app_icon)
                .setContentIntent(pIntent)
                .build();

.setAutoCancel (wahr)

Wenn Sie auf Benachrichtigung klicken, öffnen Sie die entsprechende Aktivität und entfernen Sie die Benachrichtigung aus der Benachrichtigungsleiste




Eigentlich wie vor dem Start mit API Level 18 beantwortet, können Sie Benachrichtigungen, die von anderen Apps als Ihrem eigenen mit NotificationListenerService veröffentlicht wurden, abbrechen, aber dieser Ansatz funktioniert nicht mehr auf Lollipop, hier ist die Möglichkeit, Benachrichtigungen zu entfernen, die auch Lillipop API abdecken.

if (Build.VERSION.SDK_INT < 21) {
    cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
}
else {
    cancelNotification(sbn.getKey());
}



Wenn Sie eine Benachrichtigung von einem Service generieren, der im Vordergrund mit gestartet wird

startForeground(NOTIFICATION_ID, notificationBuilder.build());

Dann Ausstellung

notificationManager.cancel(NOTIFICATION_ID);

Am Ende wird die Benachrichtigung nicht abgebrochen und die Benachrichtigung wird weiterhin in der Statusleiste angezeigt. In diesem speziellen Fall müssen Sie einen Fehler beheben

stopForeground( true );

aus dem Dienst heraus, um es in den Hintergrundmodus zurückzusetzen und gleichzeitig die Benachrichtigungen zu löschen. Alternativ können Sie es in den Hintergrund schieben, ohne dass es die Benachrichtigung abbricht und die Benachrichtigung dann abbricht.

stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);



Related

android notifications