Aller au contenu

PendingIntent de Notification fonctionne pas la 2eme fois


fingerup

Recommended Posts

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...