75 votes

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 destinataire 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!

122voto

u-ramos Points 821

La façon dont j'ai résolu le problème était par affectation d'un unique iddemande lorsque vous obtenez le PendingIntent:

PendingIntent.getActivity(context, requestID, showIntent, 0); 

Ce faisant, vous vous êtes inscrit avec le système de différent/unique intention des instances. Conseil: Un bon moyen de faire requestID unique serait en passant à l'heure actuelle du système.

int requestID = (int) System.currentTimeMillis();

70voto

CommonsWare Points 402670

Le problème est que lorsque je crée plus d' qu'une alarme, puis l'activité lancé à partir de la notification obtient les mêmes options que la première.

Correct.

Comment puis-je faire pour lancer l' corriger les intentions?

Cela dépend si vous avez deux alarmes qui sera inscrit à la fois, ou pas.

Si non, vous pouvez utiliser FLAG_ONE_SHOT ou l'une de l'autre PendingIntent drapeaux à votre deuxième PendingIntent utilisent les nouvelles extras.

Si, toutefois, vous avez deux alarmes enregistrées à la fois, avec différents Intent suppléments, vous devrez faire les deux Intents plus sensiblement différents, tels que filterEquals() retours false lorsque l'on compare les deux. Par exemple, vous pourriez l'appeler setData() ou setAction() et des valeurs différentes pour chaque Intent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X