Je peux trouver un moyen d'envoyer des paramètres à mon activité à partir de ma notification.
J'ai un service qui crée une notification. Lorsque l'utilisateur clique sur la notification, je souhaite ouvrir mon activité principale avec certains paramètres spéciaux. Par exemple, un identifiant d'article, afin que mon activité puisse se charger et présenter une vue de détail d'élément spéciale. Plus précisément, je télécharge un fichier, et lorsque le fichier est téléchargé, je veux que la notification ait l'intention que lorsque vous cliquez dessus, elle ouvre mon activité dans un mode spécial. J'ai essayé d'utiliser putExtra
sur mon intention, mais ne peux pas sembler l'extraire, donc je pense que je le fais mal.
Code de mon service qui crée la notification:
// construct the Notification object.
final Notification notif = new Notification(R.drawable.icon, tickerText, System.currentTimeMillis());
final RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.custom_notification_layout);
contentView.setImageViewResource(R.id.image, R.drawable.icon);
contentView.setTextViewText(R.id.text, tickerText);
contentView.setProgressBar(R.id.progress,100,0, false);
notif.contentView = contentView;
Intent notificationIntent = new Intent(context, Main.class);
notificationIntent.putExtra("item_id", "1001"); // <-- HERE I PUT THE EXTRA VALUE
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notif.contentIntent = contentIntent;
nm.notify(id, notif);
Code de mon activité qui tente d'extraire le paramètre supplémentaire de la notification:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle extras = getIntent().getExtras();
if(extras != null){
Log.i( "dd","Extra:" + extras.getString("item_id") );
}
Les extras sont toujours nuls et je ne reçois jamais rien dans mon journal.
Btw ... le onCreate
n'est exécuté que lorsque mon activité démarre, si mon activité est déjà démarrée, je veux également collecter les extras et présenter mon activité en fonction de l'item_id que je reçois.
Des idées?
PendingIntent.getActivity()
avec le drapeauPendingIntent.FLAG_UPDATE_CURRENT
, sinon les mêmes extras seront réutilisés pour chaque notification.