fingerup Posté(e) 6 septembre 2011 Share Posté(e) 6 septembre 2011 Bonjour à tts, Je cherche depuis de nombreux jours à résoudre un problème de PendingIntent : Je souhaite à la réception d'une push notification (c2dm) ajouter une Notification. Quand on clique sur cette Notification, je démarre une Activity qui affiche un pop-up. Lors du clique sur le bouton "ok" du pop-up je souhaite lancer mon application. Voici mon code qui est exécuté à la récéption de ma push : private void dealMessage(Context context, Intent intent) { try { String message = intent.getExtras().getString("message"); Log.v("testc2dm","message : [" + message + "]"); //création du bean de la notif NotificationPush notif = new NotificationPush(); notif.init((JSONObject)JSONValue.parse(message)); //création PendingIntent Intent intentDialog = new Intent(context, DialogActivity.class); intentDialog.putExtra("notif", notif); int requestCode= (int) System.currentTimeMillis(); PendingIntent pi = PendingIntent.getActivity(context, requestCode, intentDialog, PendingIntent.FLAG_ONE_SHOT); //Création de la Notification Notification n = new Notification(); n.flags |= Notification.FLAG_SHOW_LIGHTS; // allume l'écran n.flags |= Notification.FLAG_AUTO_CANCEL; // fait disparaitre automatiquemet la notif apres un clic dessus n.defaults = Notification.DEFAULT_ALL; n.icon = R.drawable.icon; n.when = System.currentTimeMillis(); n.setLatestEventInfo(context, "Mon titre", notif.getTitre(), pi); //ajout de la notif NotificationManager notificationManager = (NotificationManager)context.getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(ID_NOTIFICATION, n); } catch(Exception e) { Log.e("testc2dm","error : [" + e.getMessage() + "]"); e.printStackTrace(); } } Et voici mon Activity qui se lance lors du clic sur la Notification, via le PendingIntent : protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.v("testc2dm","DialogActivity oncreate()"); //récupération du bean de la notification Intent intentParam = getIntent(); NotificationPush notif = (NotificationPush)intentParam.getSerializableExtra("notif"); if(notif != null) { Log.v("testc2dm","notif => titre [" + notif.getTitre() + "] -- msg [" + notif.getMessage() + "] -- type [" + notif.getType() + "]"); //affiche popup AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(notif.getMessage()); builder.setTitle(notif.getTitre()); builder.setCancelable(false); builder.setNegativeButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { if(!TestC2DMActivity.appIsRunning) { //lancement de la 1er Activity de mon appli Intent intent = new Intent(DialogActivity.this, TestC2DMActivity.class); startActivity(intent); } } }); builder.show(); } } Mon problème est si mon application est démarrée par la réception d'une push (c2dm > Notification > PendingIntent > DialogActivity > TestC2DMActivity), alors à la réception des prochaines push, la Notification apparaîtra bien, mais un clic sur cette Notification ne lancera pas DialogActivity. Alors que quand l'application est démarrée normalement (icon de l'app) alors la tout fonctionne bien. J'ai l'impression que si mon appli est démarrée par mon PendingIntent, alors ce PendingIntent ne voudra plus déramer DialogActivity.. Pourquoi??? J'ai essayé tous les Flag possible de mon intent et de mon PendingIntent, j'ai essayé de changer le requestCode de mon PendingIntent. Avez-vous une idée? votre aide m'aidera surrement hésitez pas. Merci d'avance. Lien vers le commentaire Partager sur d’autres sites More sharing options...
fingerup Posté(e) 6 septembre 2011 Auteur Share Posté(e) 6 septembre 2011 Bon je vois que ma question a 0 vu.. Pas grave je me répond tout seul. solution : intentDialog.setAction("" + Math.random()); Il faut faire changer l'action de l'intent pour qu'il se relance. ++ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.