it-swarm.com.de

Android: Benachrichtigung von der Benachrichtigungsleiste entfernen

Ich habe eine Anwendung erstellt und mit einem Ereignis kann ich eine Benachrichtigung in der Android-Benachrichtigungsleiste hinzufügen. Jetzt brauche ich ein Beispiel, wie diese Benachrichtigung aus der Benachrichtigungsleiste für ein Ereignis entfernt wird. 

143
Nezir

Das ist ganz einfach. Sie müssen cancel oder cancelAll in Ihrem NotificationManager aufrufen. Der Parameter der Abbruchmethode ist die ID der Benachrichtigung, die abgebrochen werden soll.

Siehe die API: http://developer.Android.com/reference/Android/app/NotificationManager.html#cancel(int)

158

Sie können diesen Kurzcode ausprobieren

public static void cancelNotification(Context ctx, int notifyId) {
    String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager nMgr = (NotificationManager) ctx.getSystemService(ns);
    nMgr.cancel(notifyId);
}
201
Ankit Patial

Sie können auch cancelAll im Benachrichtigungsmanager aufrufen, sodass Sie sich nicht einmal um die Benachrichtigungs-IDs kümmern müssen.

NotificationManager notifManager= (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notifManager.cancelAll();

BEARBEITEN: Ich wurde abgelehnt, daher sollte ich vielleicht angeben, dass dadurch nur die Benachrichtigung aus Ihrer Anwendung entfernt wird.

58
Stephane Mathis

setze einfach setAutoCancel (True) wie folgt:

Intent resultIntent = new Intent(GameLevelsActivity.this, NotificationReceiverActivityAdv.class);

PendingIntent resultPendingIntent =
        PendingIntent.getActivity(
                GameLevelsActivity.this,
                0,
                resultIntent,
                PendingIntent.FLAG_UPDATE_CURRENT
                );

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
        getApplicationContext()).setSmallIcon(R.drawable.icon)
        .setContentTitle(adv_title)
        .setContentText(adv_desc)
        .setContentIntent(resultPendingIntent)
         //HERE IS WHAT YOY NEED:
        .setAutoCancel(true);

NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(547, mBuilder.build());`
10
farhad.kargaran

Wenn Sie Benachrichtigung von einem Dienst generieren die im Vordergrund mit gestartet wird

startForeground(NOTIFICATION_ID, notificationBuilder.build());

Dann ausgeben

notificationManager.cancel(NOTIFICATION_ID);

funktioniert nicht Das Abbrechen der Benachrichtigung wird immer noch in der Statusleiste angezeigt. In diesem speziellen Fall lösen Sie diese auf zwei Arten:

1> Verwenden von stopForeground (false) im Dienst:

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

2> Zerstöre diese Serviceklasse mit aufrufender Aktivität:  

Intent i = new Intent(context, Service.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
if(ServiceCallingActivity.activity != null) {
    ServiceCallingActivity.activity.finish();
}
context.stopService(i);

Zweiter Weg lieber in Musik Player Benachrichtigung Mehr, weil auf diese Weise nicht nur Benachrichtigung entfernt, sondern auch Spieler entfernt werden ... !!

6
Dhruv Raval

das wird helfen:

NotificationManager mNotificationManager = (NotificationManager)
            getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.cancelAll();

dadurch sollten alle Benachrichtigungen der App entfernt werden

und wenn Sie eine Benachrichtigung erstellen, indem Sie

startForeground();

in einem Service. Sie müssen möglicherweise anrufen  

stopForeground(false);

Zuerst stornieren Sie die Benachrichtigung.

5
pilotmario

Verwenden Sie den NotificationManager, um Ihre Benachrichtigung abzubrechen. Sie müssen nur Ihre Benachrichtigungs-ID angeben

mNotificationManager.cancel (YOUR_NOTIFICATION_ID);

Überprüfen Sie auch diesen Link Siehe Developer Link

NotificationManager.cancel(id) ist die richtige Antwort. Sie können jedoch in Android Oreo und späteren Benachrichtigungen entfernen, indem Sie den gesamten Benachrichtigungskanal löschen. Dadurch sollten alle Nachrichten im gelöschten Kanal gelöscht werden.

Hier ist das Beispiel aus der Android Dokumentation :

NotificationManager mNotificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// The id of the channel.
String id = "my_channel_01";
mNotificationManager.deleteNotificationChannel(id);
1
gil.fernandes

Bitte versuchen Sie dies,

public void removeNotification(Context context, int notificationId) {      
    NotificationManager nMgr = (NotificationManager) context.getApplicationContext()
            .getSystemService(Context.NOTIFICATION_SERVICE);
    nMgr.cancel(notificationId);
}
1
Akansha patel

Auf Android-API> = 23 können Sie so etwas tun, um eine Gruppe von Benachrichtigungen zu entfernen.

  for (StatusBarNotification statusBarNotification : mNotificationManager.getActiveNotifications()) {
        if (KEY_MESSAGE_GROUP.equals(statusBarNotification.getGroupKey())) {
            mNotificationManager.cancel(statusBarNotification.getId());
        }
    }
1
Szabolcs Becze

Rufnummer einfach an:

public void delNoti(int id) {((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).cancel(id);}
0
phnghue