129 votes

La notification passe l'ancienne intention Extras

Je crée une notification à l'intérieur d'un BroadcastReceiver via ce code :

String ns = Context.NOTIFICATION_SERVICE;
        NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);
        int icon = R.drawable.ic_stat_notification;
        CharSequence tickerText = "New Notification";
        long when = System.currentTimeMillis();

        Notification notification = new Notification(icon, tickerText, when);
        notification.defaults |= Notification.DEFAULT_VIBRATE;
        long[] vibrate = {0,100,200,200,200,200};
        notification.vibrate = vibrate;
        notification.flags |= Notification.FLAG_AUTO_CANCEL;

        CharSequence contentTitle = "Title";
        CharSequence contentText = "Text";
        Intent notificationIntent = new Intent(context, NotificationActivity.class);
        notificationIntent.putExtra(Global.INTENT_EXTRA_FOO_ID, foo_id);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);

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

        int mynotification_id = 1;

        mNotificationManager.notify(mynotification_id, notification);

Lorsque je clique sur la notification, cela ouvre l'activité NotificationActivity et dans cette activité, je peux récupérer le foo_id de l'Intent-Bundle (par exemple, 1).

Cependant, si une autre notification est déclenchée et que je clique à nouveau dessus, l'activité reçoit toujours l'"ancienne" valeur (1) de l'Intent-Bundle. J'ai essayé d'effacer le bundle avec clear(), mais je reçois le même effet. Je pense que quelque chose ne va pas avec mon code

0voto

pellucide Points 638

Je voulais juste ajouter une autre option

 PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X