web-dev-qa-db-fra.com

Android: supprimer la notification de la barre de notification

J'ai créé une application et avec un événement, je parviens à ajouter une notification dans la barre de notification Android. Maintenant, j'ai besoin d'exemple pour savoir comment supprimer cette notification de la barre de notification d'un événement? 

143
Nezir

C'est assez simple. Vous devez appeler cancel ou cancelAll sur votre NotificationManager. Le paramètre de la méthode d'annulation est l'ID de la notification à annuler.

Voir l'API: http://developer.Android.com/reference/Android/app/NotificationManager.html#cancel(int)

158
RoflcoptrException

Vous pouvez essayer ce code rapide

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

Vous pouvez également appeler cancelAll sur le gestionnaire de notifications, de sorte que vous n’ayez même pas à vous soucier des identifiants de notification.

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

EDIT: J'ai été voté alors je devrais peut-être préciser que cela ne fera que supprimer la notification de votre application.

58
Stephane Mathis

il suffit de définir setAutoCancel (True) comme le code suivant:

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

Si vous générez Notification d'un service qui est lancé dans le avant-plan à l'aide de

startForeground(NOTIFICATION_ID, notificationBuilder.build());

Puis émettre

notificationManager.cancel(NOTIFICATION_ID);

ne fonctionne pas l'annulation de la notification et la notification apparaît toujours dans la barre d'état. Dans ce cas particulier, vous allez résoudre ces problèmes de deux manières:

(1>) Utilisation de stopForeground (false) dans le service:

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

2> Détruisez cette classe de service avec l'activité d'appel: 

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);

Seconde façon, préférez notification du lecteur de musique plus parce que non seulement la notification supprime mais supprime également le lecteur ... !!

6
Dhruv Raval

CA aidera:

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

cela devrait supprimer toutes les notifications faites par l'application

et si vous créez une notification en appelant

startForeground();

à l'intérieur d'un service.vous devrez peut-être appeler  

stopForeground(false);

d'abord, puis annulez la notification.

5
pilotmario

Utilisez le NotificationManager pour annuler votre notification. Il vous suffit de fournir votre identifiant de notification

mNotificationManager.cancel (YOUR_NOTIFICATION_ID);

vérifiez également ce lien Voir lien Développeur

1
Muhammad Usman Ghani

NotificationManager.cancel(id) est la réponse correcte. Vous pouvez cependant supprimer dans Android Oreo et les notifications ultérieures en supprimant tout le canal de notification. Cela devrait supprimer tous les messages du canal supprimé.

Voici l'exemple de la documentation Android :

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

S'il vous plaît essayez ceci,

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

Sur l'API Android> = 23, vous pouvez procéder de la sorte pour supprimer un groupe de notifications.

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

Il suffit d'appeler l'identification:

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