it-swarm.com.de

So löschen Sie eine Benachrichtigung in Android

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?

88
rahul

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.

215
Janusz

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.

41
Chuck C.

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;
32
NPike

Versuchen Sie es mit der Standardmethode in NotificationManager .

NotificationManager.cancelAll(), um alle Benachrichtigungen zu entfernen. NotificationManager.cancel(notificationId), um bestimmte Benachrichtigungen zu entfernen.

13
Rohit Suthar

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());
}
8
Jim Vitek

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 !!!

3
sandalone
 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

3
Neeraj Singh

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());
}
1
    // 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 ...

1
user2962552
   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

1
Dhina k

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".

0
Samantha

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);
0
Ian Gough