0

Je notification utilisateur sur certains événements (dans mon cas réception de SMS) et la pendaison PendingIntent comme:Encore une fois PendigIntent dans la notification

intent = new Intent(context, ConversationActivity.class); 
intent.setAction(Constants.ACTION_SMS_RECEIVED); 
intent.putExtra(MessageDAO.CONVERSATION_ID, message.getConversationId()); 
intent.putExtra(MessageDAO._ID, message.getId()); 
intent.putExtra(MessageDAO.ADDRESS, message.getAddress()); 
contentIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

Mon but est de démarrer un nouveau ConversationActivity s'il n'y a personne, que ce soit tout simplement réutiliser vieux un (rafraîchissant son contenu). Mais en fait, mon PendingIntent vient d'utiliser un ancien qui ne rafraîchit pas son contenu. J'ai vérifié que les anciens figurants continuent d'envoyer à mon ConversationActivity

Quel est le problème? Je suis vraiment coincé avec elle et ne peut pas comprendre ce qu'il faut faire ...

Mise à jour

J'extraction extras dans la cible ConversationActivity.onCreate() comme:

Bundle bundle=this.getIntent().getExtras(); 
    if(bundle!=null) { 
     conversationId=bundle.getString(MessageDAO.CONVERSATION_ID); 
     address=bundle.getString(MessageDAO.ADDRESS); 
    } 
+0

Qu'est-ce que est l'état de l '"ancienne" activité lorsque le nouveau "Intent" lui est envoyé? Où (dans quelle méthode) et comment vérifiez-vous les extras? Montrez le code que vous utilisez pour extraire/examiner les extras –

+0

@DavidWasser I ai mis à jour ma question – barmaley

Répondre

1

Si vous voulez réutiliser une activité existante, vous devez procéder comme suit. Lors de la création de la notification, ajoutez ceci:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

Ensuite, vous devrez passer outre onNewIntent() dans ConversationActivity. Ce sera appelé (au lieu de onCreate() si l'utilisateur clique sur une notification et il y a déjà vous un ConversationActivity actif. Devez extraire les « extras » de la Intent en onNewIntent() et remplacer le contenu de ces nouvelles données.

Questions connexes