Aller au contenu

[mini tuto] PendingIntent foireux


Pierre87

Recommended Posts

J'ai passé un peu de temps sur les PendingIntent, car j'avais un bug assez étrange ^^

Je vais donc vous faire profiter de ce que j'ai trouvé.

D'après ce que j'ai compris, un PendingIntent est un Intent que l'on prévoit de "déclencher".

Il y en a de 3 types : activity, service et broadcast

Chaque type de PendingIntent permet de déclencher un Intent avec la bonne méthode (en fonction du type)

On ne peut pas construire directement un PendingIntent, il faut passer par une méthode static en fonction du type voulu.

Il faut OBLIGATOIREMENT passer un Intent (celui qu'on veut déclencher) et le paramétrer en fonction de ce qu'on veut faire.

Les PendingIntent sont utiles pour plusieurs choses :

- Notification : action au clic sur une notification

- LocationManager : action à la réception d'une nouvelle position

- AlarmManager : programmation d'une action à un moment donnée

Dans mon cas, j'ai voulu l'utiliser pour les notifications.

Une notification a un titre et un message.

Comme le message est tronqué, je voulais l'afficher dans une fenetre "popup" (AlertDialog)

J'ai donc crée un PendingIntent qui ouvre une Activity, avec un Intent qui contient mon titre et mon message.

La première fois, ça a bien marché.

Le problème, c'est qu'aux notifications suivantes, lorsque j'ouvrais le popup, le titre et le messages étaient TOUJOURS ceux de ma première notification!!!

J'ai donc un peu cherché, et je suis tombé sur les "flags" de PendingIntent (quand on appelle PendingIntent.getActivity())

Par défaut, il y a une espèce de réutilisation des infos des PendingIntent existant...

Il faut donc dire que l'on veut en créer un nouveau avec le flag PendingIntent.FLAG_ONE_SHOT.

C'est le seul qui me paraisse pertinent dans mon cas (je peux avoir plusieurs notifications)

Voilà :D

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...