Posso trovare un modo per inviare parametri alla mia attività dalla mia notifica.
Ho un servizio che crea una notifica. Quando l'utente fa clic sulla notifica, desidero aprire la mia attività principale con alcuni parametri speciali. Ad esempio un ID articolo, in modo che la mia attività possa caricare e presentare una vista di dettaglio dell'articolo speciale. Più specifico, sto scaricando un file e quando il file viene scaricato voglio che la notifica abbia l'intenzione che quando si fa clic si apre la mia attività in una modalità speciale. Ho provato a usare putExtra
il mio intento, ma non riesco a estrarlo, quindi penso che sto sbagliando.
Codice dal mio servizio che crea la notifica:
// 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);
Codice dalla mia attività che tenta di recuperare il parametro aggiuntivo dalla notifica:
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") );
}
Gli extra sono sempre nulli e non inserisco mai nulla nel mio registro.
Tra ... il onCreate
viene eseguito solo quando inizia la mia attività, se la mia attività è già iniziata voglio anche raccogliere gli extra e presentare la mia attività in base all'elemento_id che ricevo.
Qualche idea?
PendingIntent.getActivity()
con il flagPendingIntent.FLAG_UPDATE_CURRENT
, altrimenti gli stessi extra verranno riutilizzati per ogni notifica.