2010-07-05 27 views
8

J'ai lu de nombreux messages sur le même sujet et essayé toutes les solutions données sans obtenir le résultat que je veux. Le programme devrait commencer une intention avec des figurants d'une notification:Android intention en attente a commencé à partir de notificaion ne remplace pas le dernier

NotificationManager mNotificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 

Intent notificationIntent = new Intent(context, myActivity.class); 
    notificationIntent.putExtra("someData", data); 

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 

mNotificationManager.notify(ID, notification); 

Le problème est que lorsqu'une nouvelle notification apparaît, les extras ajoutés à l'intention est la même que dans la première notification. J'ai triend avec différents drapeaux dans l'intention et l'intention en attente, sans résultat. Qu'est-ce que je me trompe? Si je lance la même activité (et les mêmes extras) avec un bouton, tout fonctionne comme prévu.

+0

double possible de [Android conserve la mise en cache mes intentions Extras , comment déclarer une intention en attente qui garde de nouveaux extras?] (http://stackoverflow.com/questions/3140072/android-keeps-caching-my-intents-extras-how-to-declare-a-pending-intent- that-kee) – Pentium10

+1

Oui, la chose est, j'ai lu ce poste, et un couple de plus, mais aucun d'entre eux a travaillé f ou moi. Cependant, d'une certaine manière, j'ai réussi à le résoudre, et posterai ma solution ici bientôt. – Emil

Répondre

9

Je ne sais pas pourquoi j'ai eu de tels problèmes avec cela pour fonctionner. La combinaison des drapeaux j'ai utilisé pour faire fonctionner correctement était:

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 
       PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT); 

J'ai aussi enlevé tous les drapeaux utilisés lors de la création du notificationIntent.

5

Essayez d'ajouter un attribut dans le fichier AndroidManifest.xml:

<activity ... android:launchMode="singleTop"/> 
0

Essayez de régler le code de demande pour chaque PendingIntent et il travaillera

PendingIntent pendingIntent = PendingIntent.getActivity(this, RandomInt, intent, 
       PendingIntent.FLAG_ONE_SHOT);