Est-il possible de vérifier si une notification est visible ou annulé?
Je voudrais notification de mise à jour des données, mais la seule façon que j'ai trouvée est de lancer un nouveau avec le même Id.
Le problème est que je n'ai pas envie de relancer un nouveau si l'original a été annulée.
Est-il un moyen de savoir si une notification est visible ou annulé? Ou un moyen de mettre à jour une notification seulement si il existe?
Vous devez vous connecter pour publier un commentaire.
C'est comment je l'ai résolu:
C'est de cette façon que je générer la notification:
onResume()
méthode quiif(isNotificationVisible())
mon avis doit être annulée avec:((NotificationManager) getSystemService(NOTIFICATION_SERVICE)).cancel(MY_ID);
et après quefinish(); startActivity(getIntent());
j'obtiens une boucle qui mène à redémarrer mon téléphone. donc, cette méthode doit être traitée avec prudence....PendingIntent
collé autour, après, j'ai rejeté la notification, et même après que j'ai tué la totalité de l'app. Seulement de redémarrer le téléphone de s'en débarrasser. Aussi,setLatestEventInfo()
ne semble plus exister, donc j'ai simplement utilisésetContentIntent()
à la place.isNotificationVisible()
toujours retournéfalse
.Si vous utilisez
API >= 23
pouvez utiliser cette méthode pour obtenir de notification actif:mNonificationManager
declration.Je pense que vous pouvez utiliser deleteIntent de
Notification
classe.Je me souviens de l'une de mes application que j'utilise les utiliser à un feu de Diffusion (personnalisé de Diffusion) lorsqu'une notification est annulée ou la barre de Notification a été effacé.
Une alternative à la
deleteIntent
est la suivante, qui s'est avérée bénéfique dans ma propre application:En gros, vous créez une intention avec votre notification qui commence un IntentService (ou de tout autre service) et dans
onHandleIntent
vous pouvez définir un indicateur indiquant si la notification est active.Vous pouvez définir cette intention d'être déclenché lorsque l'utilisateur appuie sur la notification (contentIntent) et/ou lorsque l'utilisateur efface de la liste (deleteIntent).
Pour illustrer cela, voici ce que je fais dans mon propre application. Lors de la construction de la notification j'ai mis
Lorsque la notification est tapé mon
CleanupIntentService
est lancé, un indicateur (dans le service qui a créé la notification):Dans ma situation, je voulais vérifier si une Notification a été déjà indiqué, avant de montrer un autre. Et il s'avère qu'il existe un moyen simple de le faire sans écouter lorsque la Notification a été supprimé ou rejeté avec
.setAutoCancel(true)
surNotificationManagerCompat.Builder
.