Ist es möglich, eine Benachrichtigung programmgesteuert zu löschen?
Ich habe es mit dem versucht, NotificationManager
aber es funktioniert nicht. Kann ich das auf andere Weise tun?
android
notifications
rahul
quelle
quelle
Antworten:
Verwenden Sie den folgenden Code, um eine Benachrichtigung abzubrechen:
In diesem Code wird immer dieselbe ID für Benachrichtigungen verwendet. Wenn Sie unterschiedliche Benachrichtigungen haben, die storniert werden müssen, müssen Sie die IDs speichern, die Sie zum Erstellen der Benachrichtigung verwendet haben.
quelle
setContentText
), obwohl ich die Priorität auf 2 festgelegt habe. Irgendwelche Vorschläge?Von: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
Aber Donal hat recht, Sie können nur Benachrichtigungen löschen, die Sie erstellt haben.
quelle
Da niemand eine Code-Antwort darauf gepostet hat:
.. und wenn Sie bereits Flags haben, können Sie ODER FLAG_AUTO_CANCEL folgendermaßen vorgehen:
quelle
notifcation.flags |= Notification.FLAG_AUTO_CANCEL;
Bitte versuchen Sie es mit der in NotificationManager bereitgestellten Standardmethode .
NotificationManager.cancelAll()
um alle Benachrichtigungen zu entfernen.NotificationManager.cancel(notificationId)
bestimmte Benachrichtigung zu entfernen.quelle
cancel
Methode hat, ist diecancel
Methode nicht statisch. Sie benötigen also eine InstanzNotificationManager
wie diese:NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Dann können SienotificationManager.cancel(notificationId);
wie Rohit Suthar aufrufen, auf den in seiner Antwort verwiesen wird.notificationId
ist einfach die ID, an die Sie übergeben habennotificationManager.notify(notificationId, mNotification)
Ab API-Level 18 (Jellybean MR2) können Sie andere Benachrichtigungen als Ihre eigenen über NotificationListenerService abbrechen.
...
quelle
.setAutoCancel (true)
Wenn Sie auf Benachrichtigung klicken, öffnen Sie die entsprechende Aktivität und entfernen Sie die Benachrichtigung aus der Benachrichtigungsleiste
quelle
Wenn Sie eine Benachrichtigung von einem Dienst generieren, der im Vordergrund mit gestartet wird
Dann ausstellen
Die Benachrichtigung wird nicht abgebrochen, und die Benachrichtigung wird weiterhin in der Statusleiste angezeigt. In diesem speziellen Fall müssen Sie ausstellen
aus dem Dienst heraus, um ihn wieder in den Hintergrundmodus zu versetzen und gleichzeitig die Benachrichtigungen abzubrechen. Alternativ können Sie es in den Hintergrund verschieben, ohne dass es die Benachrichtigung abbricht und dann die Benachrichtigung abbricht.
quelle
Wenn Sie
NotificationCompat.Builder
(einen Teil vonandroid.support.v4
) verwenden, rufen Sie einfach die Methode des Objekts aufsetAutoCancel
Einige Leute berichteten, dass
setAutoCancel()
dies für sie nicht funktioniert hat, also können Sie es auch so versuchenBeachten Sie, dass die Methode
getNotification()
veraltet ist !!!quelle
Dies funktioniert, wenn Sie einen Benachrichtigungs-Builder verwenden ...
quelle
Für weitere Informationen klicken Sie hier http://androiddhina.blogspot.in/2015/01/how-to-clear-notification-in-android.html
quelle
Wie bereits beantwortet, bevor Sie mit API Level 18 beginnen, können Sie Benachrichtigungen, die von anderen Apps als Ihren eigenen Apps veröffentlicht wurden, mit NotificationListenerService abbrechen. Dieser Ansatz funktioniert jedoch nicht mehr mit Lollipop. Hier erfahren Sie, wie Sie Benachrichtigungen entfernen, die auch die Lillipop-API abdecken.
quelle
cancelNotification
was ist das?Alle Benachrichtigungen (auch andere App-Benachrichtigungen) können durch Abhören von 'NotificationListenerService' entfernt werden, wie in NotificationListenerService Implementation erwähnt
Im Service müssen Sie anrufen
cancelAllNotifications()
.Der Dienst muss für Ihre Anwendung aktiviert werden über:
'Apps & Benachrichtigungen' -> 'Spezieller App-Zugriff' -> 'Benachrichtigungszugriff'.
quelle
Dieser Code hat bei mir funktioniert:
quelle