2010-07-06 4 views
2

Mon objectif: télécharger des fichiers en parallèle et, lorsque les téléchargements de fichiers sont terminés, recevoir des notifications.Envoi de différents paramètres à pendingIntent via la notification

Ces notifications sont supposées lancer une activité lorsque vous cliquez dessus, ce qui donne des paramètres uniques via putExtra.

Le problème est que je ne peux pas avoir des valeurs différentes à chaque lancement de cette activité.

Chaque fois que l'activité, lancée par la barre de notification, se lance, elle détruit l'extra de ceux qui n'ont pas encore été lancés (ceux qui apparaissent encore dans la barre de notification). Comment puis-je conserver toutes mes notifications avec leurs propres paramètres?

Voici mon code:

if (messagesManager == null) 
{ 
    messagesManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
} 

notification = new Notification(R.drawable.icon, message, System.currentTimeMillis()); 

// for launch activity 
Intent intent = new Intent(context, DialogActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
intent.putExtra("fileName", fileName); //- this is where i put my extra's!! 
intent.putExtra("onSdcard", onSdcard); 
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

notification.setLatestEventInfo(context, "DownloadManager", message, contentIntent); 
notification.flags = notification.FLAG_AUTO_CANCEL; 
int noticeId = generateNotificationId(requestId); 
messagesManager.notify(noticeId, notification); 

Maintenant, c'est l'activité de dialogue:

protected void onCreate(Bundle savedInstanceState) 
{ 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    Intent i = getIntent(); 
    boolean onSdcard = i.getBooleanExtra("onSdcard", true); 
    String fileName = i.getStringExtra("fileName"); 
    ... 
} 

J'ai essayé d'utiliser cette technique comme il a été écrit dans un autre poste, mais il n'a pas travail.

intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
+0

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

Répondre

0

S'il vous plaît vérifier le double lien,

vous avez besoin de deux choses

  • vous devez ajouter une chaîne d'action
  • la chaîne d'action doit être unique, probablement un horodatage ajouté à ce serait bon
Questions connexes