Kann eine Benachrichtigung programmgesteuert gelöscht werden?
Ich habe es mit der NotificationManager
ausprobiert, aber es funktioniert nicht ..__ Gibt es eine andere Möglichkeit, wie ich es tun kann?
Verwenden Sie den folgenden Code, um eine Benachrichtigung abzubrechen:
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(NOTIFICATION_ID);
In diesem Code gibt es immer die gleiche ID, die für Benachrichtigungen verwendet wird. Wenn Sie unterschiedliche Benachrichtigungen haben, die abgebrochen werden müssen, müssen Sie die IDs speichern, die Sie zum Erstellen der Benachrichtigung verwendet haben.
Von: http://developer.Android.com/guide/topics/ui/notifiers/notifications.html
Um die Benachrichtigung über die Statusleiste zu löschen, wenn der Benutzer sie im Benachrichtigungsfenster auswählt, fügen Sie Ihrem Benachrichtigungsobjekt das Flag "FLAG_AUTO_CANCEL" hinzu. Sie können es auch manuell mit cancel (int) löschen, die Benachrichtigungs-ID übergeben oder alle Benachrichtigungen mit cancelAll () löschen.
Aber Donal hat Recht, Sie können nur Benachrichtigungen löschen, die Sie erstellt haben.
Da niemand darauf eine Code-Antwort gepostet hat:
notification.flags = Notification.FLAG_AUTO_CANCEL;
.. und wenn Sie bereits Flags haben, können Sie OR FLAG_AUTO_CANCEL wie folgt:
notification.flags = Notification.FLAG_INSISTENT | Notification.FLAG_AUTO_CANCEL;
Versuchen Sie es mit der Standardmethode in NotificationManager .
NotificationManager.cancelAll()
, um alle Benachrichtigungen zu entfernen. NotificationManager.cancel(notificationId)
, um bestimmte Benachrichtigungen zu entfernen.
Ab API-Level 18 (Jellybean MR2) können Sie andere Benachrichtigungen als NotificationListenerService 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());
}
Wenn Sie NotificationCompat.Builder
(einen Teil von Android.support.v4
) verwenden, rufen Sie einfach die Objektmethode setAutoCancel
auf.
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setAutoCancel(true);
Einige Leute berichteten, dass setAutoCancel()
für sie nicht funktioniert hat. Sie können dies auch versuchen
builder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
Beachten Sie, dass die Methode getNotification()
nicht mehr empfohlen wird !!!
Notification mNotification = new Notification.Builder(this)
.setContentTitle("A message from: " + fromUser)
.setContentText(msg)
.setAutoCancel(true)
.setSmallIcon(R.drawable.app_icon)
.setContentIntent(pIntent)
.build();
.setAutoCancel (true)
wenn Sie auf Benachrichtigung klicken, öffnen Sie die entsprechende Aktivität und entfernen Sie die Benachrichtigung aus der Benachrichtigungsleiste
Wie bereits vor dem Start mit API Level 18 beantwortet, können Sie Benachrichtigungen abbrechen, die von anderen Apps mit NotificationListenerService bereitgestellt werden. Diese Methode funktioniert jedoch nicht mehr auf Lollipop. Hier können Sie Benachrichtigungen entfernen, die auch die Lillipop-API betreffen.
if (Build.VERSION.SDK_INT < 21) {
cancelNotification(sbn.getPackageName(), sbn.getTag(), sbn.getId());
}
else {
cancelNotification(sbn.getKey());
}
// Get a notification builder that's compatible with platform versions
// >= 4
NotificationCompat.Builder builder = new NotificationCompat.Builder(
this);
builder.setSound(soundUri);
builder.setAutoCancel(true);
dies funktioniert, wenn Sie einen Benachrichtigungs-Generator verwenden ...
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager Nmang = (NotificationManager) getApplicationContext()
.getSystemService(ns);
Nmang .cancel(getIntent().getExtras().getInt("notificationID"));
weitere Informationen finden Sie hier http://androiddhina.blogspot.in/2015/01/how-to-clear-notification-in-Android.html
Alle Benachrichtigungen (auch andere App-Benachrichtigungen) können durch Abhören von 'NotificationListenerService' entfernt werden, wie unter NotificationListenerService Implementation erwähnt.
Im Service müssen Sie cancelAllNotifications()
aufrufen.
Der Dienst muss für Ihre Anwendung aktiviert sein über:
"Apps & Benachrichtigungen" -> "Spezieller Zugriff auf Apps" -> "Zugriff auf Benachrichtigungen".
Wenn Sie eine Benachrichtigung von einem Dienst generieren, der im Vordergrund mit gestartet wird
startForeground(NOTIFICATION_ID, notificationBuilder.build());
Dann ausgeben
notificationManager.cancel(NOTIFICATION_ID);
die Benachrichtigung wird nicht abgebrochen, und die Benachrichtigung wird weiterhin in der Statusleiste angezeigt. In diesem speziellen Fall müssen Sie ausstellen
stopForeground( true );
von innerhalb des Dienstes, um ihn in den Hintergrundmodus zurückzusetzen und gleichzeitig die Benachrichtigungen abzubrechen. Alternativ können Sie es in den Hintergrund schieben, ohne die Benachrichtigung abzubrechen, und dann die Benachrichtigung abbrechen.
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);