Est-il possible d'effacer une notification par programme?
Je l'ai essayé avec le NotificationManager
mais cela ne fonctionne pas . Y at-il un autre moyen de le faire?
Utilisez le code suivant pour annuler une notification:
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(NOTIFICATION_ID);
Dans ce code, il y a toujours le même identifiant que celui utilisé pour les notifications. Si vous avez différentes notifications à annuler, vous devez enregistrer les identifiants que vous avez utilisés pour créer la notification.
De: http://developer.Android.com/guide/topics/ui/notifiers/notifications.html
Pour effacer la notification de la barre d'état lorsque l'utilisateur la sélectionne dans la fenêtre Notifications, ajoutez l'indicateur "FLAG_AUTO_CANCEL" à votre objet Notification. Vous pouvez également l'effacer manuellement avec cancel (int) en lui passant l'ID de notification ou effacer toutes vos notifications avec cancelAll ().
Mais Donal a raison, vous ne pouvez effacer que les notifications que vous avez créées.
Puisque personne n'a posté de code, répondez à ceci:
notification.flags = Notification.FLAG_AUTO_CANCEL;
.. et si vous avez déjà des drapeaux, vous pouvez OR FLAG_AUTO_CANCEL comme ceci:
notification.flags = Notification.FLAG_INSISTENT | Notification.FLAG_AUTO_CANCEL;
Veuillez essayer la méthode par défaut fournie dans NotificationManager .
NotificationManager.cancelAll()
pour supprimer toutes les notifications. NotificationManager.cancel(notificationId)
pour supprimer une notification particulière.
À partir de l'API de niveau 18 (Jellybean MR2), vous pouvez annuler des notifications autres que la vôtre via NotificationListenerService.
@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());
}
Si vous utilisez NotificationCompat.Builder
(une partie de Android.support.v4
), appelez simplement la méthode de son objet setAutoCancel
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setAutoCancel(true);
Certains gars ont signalé que setAutoCancel()
ne fonctionnait pas pour eux, vous pouvez donc essayer aussi
builder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
Notez que la méthode getNotification()
est obsolète !!!
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)
lorsque vous cliquez sur la notification, ouvrez l'activité correspondante et supprimez la notification de la barre de notification
En fait, comme indiqué précédemment avant de commencer avec l'API de niveau 18, vous pouvez annuler les notifications envoyées par d'autres applications différentes de la vôtre à l'aide de NotificationListenerService, mais cette approche ne fonctionnera plus sous Lollipop. Voici le moyen de supprimer les notifications couvrant également l'API Lillipop.
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);
cela fonctionne si vous utilisez un générateur de notification ...
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager Nmang = (NotificationManager) getApplicationContext()
.getSystemService(ns);
Nmang .cancel(getIntent().getExtras().getInt("notificationID"));
pour plus de références, cliquez ici http://androiddhina.blogspot.in/2015/01/how-to-clear-notification-in-Android.html
Toutes les notifications (même les autres notifications d'application) peuvent être supprimées en écoutant «NotificationListenerService», comme indiqué dans NotificationListenerService Implementation
Dans le service, vous devez appeler cancelAllNotifications()
.
Le service doit être activé pour votre application via:
"Applications et notifications" -> "Accès spécial aux applications" -> "Accès aux notifications".
Si vous générez une notification à partir d'un service démarré au premier plan à l'aide de
startForeground(NOTIFICATION_ID, notificationBuilder.build());
Puis émettre
notificationManager.cancel(NOTIFICATION_ID);
ne finit pas par annuler la notification, et la notification apparaît toujours dans la barre d'état. Dans ce cas particulier, vous devrez émettre
stopForeground( true );
depuis le service pour le remettre en arrière-plan et annuler simultanément les notifications. Sinon, vous pouvez le placer en arrière-plan sans l'avoir annulée, puis annulée.
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);