android en attendant la notification de l'intention de problème
J'ai une alarme chose se passe dans mon application et il lance un avis que puis lorsqu'il est pressé lancé une activité.
Le problème est que lorsque je créer plus d'une alarme puis l'activité s'est lancé à compter de la notification obtient les mêmes options que la première. Je pense que le problème est soit avec l'intention que j'ai mis dans l'attente de l'intention ou dans l'attente de l'intention elle-même. Je pense que je pourrais avoir besoin pour mettre un drapeau sur l'un de ces, mais je ne sais pas lequel.
Intent showIntent =new Intent(context, notificationreceiver.class);
showIntent.putExtra("details", alarmname);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
showIntent, 0);
notification.setLatestEventInfo(context, "The event is imminent",
alarmname, contentIntent);
Et le récepteur de la notification
Bundle b = getIntent().getExtras();
String eventname = b.getString("details");
details.setText(eventname);
Les "détails" de l'extra est la même pour tous la prochaine fois qu'une notification arrive, au lieu d'avoir une valeur différente.
Jusqu'à ce que j'ai mis les intentions je suis sûr que la valeur correcte va à la "détails" si c'est un problème de l'obtention de la première intention à chaque fois que j'appuie sur une notification.
Comment puis-je faire pour lancer la bonne intentions?
Espère que j'ai été aussi clair que je le pouvais
Merci!
- Ce que j'ai fait, c'est depuis que je suis à l'aide d'un unique notificationId de garder une trace des statuts (statut de notification de la barre), j'utilise la même variable à passer dans mon PendingIntent le rendant ainsi unique.
Vous devez vous connecter pour publier un commentaire.
Correcte.
Cela dépend si vous avez deux alarmes qui sera inscrit à la fois, ou pas.
Si pas, vous pouvez utiliser
FLAG_ONE_SHOT
ou l'une de l'autrePendingIntent
drapeaux à votre deuxièmePendingIntent
utiliser la plus récente extras.Si, toutefois, vous avez deux alarmes enregistrées à la fois, avec différents
Intent
suppléments, vous devrez faire les deuxIntents
être plus sensiblement différents, tels quefilterEquals()
retournefalse
lorsque l'on compare les deux. Par exemple, vous pourriez l'appelersetData()
ousetAction()
et des valeurs différentes pour chaqueIntent
.La façon dont j'ai résolu le problème était par affectation d'un unique requestCode lorsque vous obtenez le PendingIntent:
Ce faisant, vous vous êtes inscrit avec le système de différent/unique intention des instances.
Astuce: Une bonne façon de faire de la requestCode unique serait en passant à l'heure actuelle du système.
TaskStackBuilder
est utilisé, nous avons une méthode, il ygetPendingIntent(int requestCode, int flags)
.Ici ce iddemande peut être passée à.PendingIntent
? Vous devez conserver le requestCode pour chaquePendingIntent
?une autre solution:
utiliser le PendingIntent.FLAG_UPDATE_CURRENT comme ceci:
cela a fonctionné pour moi
J'ai eu ce problème dans mon application et venez de générer un nombre aléatoire à venir plus impérieuse des notifications d'intention: