Est-il possible d'effacer une notification par programme?
Je l'ai essayé avec NotificationManager
mais ça ne marche pas. Y a-t-il une autre façon de le faire?
Est-il possible d'effacer une notification par programme?
Je l'ai essayé avec NotificationManager
mais ça ne marche pas. Y a-t-il une autre façon de le faire?
Réponses:
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 utilisé pour les notifications. Si vous avez différentes notifications qui doivent être annulées, vous devez enregistrer les identifiants que vous avez utilisés pour créer la notification.
setContentText
) bien que j'aie défini la priorité sur 2. Des suggestions?
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 publié de code de réponse à cela:
notification.flags = Notification.FLAG_AUTO_CANCEL;
.. et si vous avez déjà des indicateurs, vous pouvez OU FLAG_AUTO_CANCEL comme ceci:
notification.flags = Notification.FLAG_INSISTENT | Notification.FLAG_AUTO_CANCEL;
notifcation.flags |= 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.
cancel
méthode, la cancel
méthode n'est pas statique, vous avez donc besoin d'une instance NotificationManager
comme celle-ci: NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Vous pouvez alors appeler notificationManager.cancel(notificationId);
comme Rohit Suthar référencé dans sa réponse. notificationId
est simplement l'ID que vous avez transmisnotificationManager.notify(notificationId, mNotification)
À partir du niveau d'API 18 (Jellybean MR2), vous pouvez annuler les notifications autres que les vôtres 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());
}
Notification mNotification = new Notification.Builder(this)
.setContentTitle("A message from: " + fromUser)
.setContentText(msg)
.setAutoCancel(true)
.setSmallIcon(R.drawable.app_icon)
.setContentIntent(pIntent)
.build();
.setAutoCancel (vrai)
lorsque vous cliquez sur la notification, ouvrez l'activité correspondante et supprimez la notification de la barre de notification
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 pour annuler simultanément les notifications. Vous pouvez également le pousser en arrière-plan sans qu'il annule la notification, puis annuler la notification.
stopForeground( false );
notificationManager.cancel(NOTIFICATION_ID);
Si vous utilisez NotificationCompat.Builder
(une partie de android.support.v4
), appelez simplement la méthode de son objetsetAutoCancel
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setAutoCancel(true);
Certains types signalaient que setAutoCancel()
cela ne fonctionnait pas pour eux, vous pouvez donc essayer de cette façon également
builder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL;
Notez que la méthode getNotification()
est obsolète !!!
// 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
En fait, comme répondu avant de commencer avec le niveau d'API 18, vous pouvez annuler les notifications publiées par d'autres applications différentes de la vôtre en utilisant NotificationListenerService, mais cette approche ne fonctionnera plus sur 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());
}
cancelNotification
qu'est-ce que c'est?
Toutes les notifications (même les autres notifications d'application) peuvent être supprimées en écoutant 'NotificationListenerService' comme mentionné dans l' implémentation NotificationListenerService
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».
ce code a fonctionné pour moi:
public class ExampleReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
int notificationId = 1;
notificationManager.cancel(notificationId);
}
}
Je crois que le plus RÉCENT et MIS À JOUR pour AndroidX et la compatibilité descendante. La meilleure façon de faire (Kotlin et Java) devrait être la suivante:
NotificationManagerCompat.from(context).cancel(NOTIFICATION_ID)
Ou pour annuler toutes les notifications, c'est:
NotificationManagerCompat.from(context).cancelAll()
Conçu pour AndroidX ou les bibliothèques de support.