Il y A quelques jours j'ai eu du mal à trouver un moyen pour utiliser les intentions de mes alarmes. Bien que j'ai obtenu de réponse claire à la question que j'ai pour personnaliser les Intentions basée sur quelques ID unique par exemple. setAction()
encore quelques problèmes.
Je définir un PendingIntent de cette façon:
Intent intent = new Intent(this, viewContactQuick.class);
intent.setAction("newmessage"+objContact.getId());//unique per contact
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK ).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP );
intent.putExtra("id", Long.parseLong(objContact.getId()));
intent.putExtra("results", result.toArray());
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0);
alors il est utilisé par un gestionnaire de notification
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);
// first try to clear any active notification with this contact ID
mNotificationManager.cancel(Integer.parseInt(objContact.getId()));
// then raise a new notification for this contact ID
mNotificationManager.notify(Integer.parseInt(objContact.getId()), notification);
Cela fonctionne comme ceci:
- l'application crée un message pour un contact
- l'intention est fourni avec l'id du contact et de détails sur le message
- la notification est générée avec le message
- l'utilisateur actiones sur la notification et l'application affiche le message transmis par l'intention
Le problème
Cela peut se produire plus d'une fois pour un contact. Et quand le deuxième message est généré, la notification est soulevée (le message est bien là) mais l'intention lorsque les actions de l'utilisateur la notification qu'il utilise de vieilles données, le message précédent est passé et pas le tout nouveau message.
Donc, d'une certaine manière l'objectif est la mise en cache et la réutilisation des précédentes extras. Comment puis-je le rendre unique par contact et par l'action?