Puedo encontrar una manera de enviar parámetros a mi actividad desde mi notificación.
Tengo un servicio que crea una notificación. Cuando el usuario hace clic en la notificación, quiero abrir mi actividad principal con algunos parámetros especiales. Por ejemplo, una identificación de elemento, por lo que mi actividad puede cargar y presentar una vista de detalle de elemento especial. Más específicamente, estoy descargando un archivo, y cuando se descarga el archivo, quiero que la notificación tenga la intención de que, al hacer clic, abra mi actividad en un modo especial. He intentado usarlo putExtra
en mi intento, pero parece que no puedo extraerlo, así que creo que lo estoy haciendo mal.
Código de mi servicio que crea la Notificación:
// 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);
Código de mi actividad que intenta obtener el parámetro adicional de la notificación:
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") );
}
Los extras siempre son nulos y nunca pongo nada en mi registro.
Por cierto ... el onCreate
solo se ejecuta cuando comienza mi actividad, si mi actividad ya ha comenzado, también quiero recopilar los extras y presentar mi actividad de acuerdo con el item_id que recibo.
¿Algunas ideas?
PendingIntent.getActivity()
con la banderaPendingIntent.FLAG_UPDATE_CURRENT
, de lo contrario, se reutilizarán los mismos extras para cada notificación.