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?
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)
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);
}
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.
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());`
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 ... !!
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.
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
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);
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);
}
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());
}
}
Il suffit d'appeler l'identification:
public void delNoti(int id) {((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).cancel(id);}