Actividad de actualización de Android de la notificación

Tengo un programa en el que llamo una notificación. La notificación, si se tira hacia abajo, inicia una nueva actividad.

mNotificationManager = (NotificationManager) getSystemService(ns); int icon = R.drawable.stat_sys_secure_green; CharSequence tickerText = "Browser Security Enabled"; long when = System.currentTimeMillis(); notification = new Notification(icon, tickerText, when); Context context = getApplicationContext(); CharSequence contentTitle = "Browser Security"; CharSequence contentText = "Security Vulnerability Detected"; Intent notificationIntent = new Intent(this, PrivacyMessage.class); //Test Extra notificationIntent.putExtra("Primary Key", "Primary Text"); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); mNotificationManager.notify(HELLO_ID, notification); 

El problema viene más adelante en el código, cuando quiero actualizar la actividad secundaria. La actividad principal debe ser capaz de cambiar dinámicamente los extras en el mismo. Intenté hacerlo lanzando una nueva intención.

 CharSequence contentTitle = "Browser Security"; CharSequence contentText = "Test New Notification"; Intent intent = new Intent(this, PrivacyMessage.class); notification.icon = R.drawable.stat_sys_secure_orange; intent.putExtra("Test Thing", "Test Value"); //intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent cI = PendingIntent.getActivity(this, 0, intent, 0); notification.setLatestEventInfo(getApplicationContext(), "New Title", "NewText", cI); mNotificationManager.notify(HELLO_ID, notification); 

Ahora, cuando ejecuto ese código, aparece el nuevo título de notificación, el color del icono cambia y el desplegable refleja el nuevo título y la información adicional. Sin embargo, cuando hago clic en él, no inicia la actividad con la nueva intención. En su lugar, sólo saca la vieja actividad con los antiguos extras. He intentado FLAG_ACTIVITY_CLEAR_TOP y FLAG_ACTIVITY_NEW_TASK, pero ninguno parece borrar la actividad secundaria anterior y crear una nueva. ¿Alguna idea de cómo podría hacerlo?

3 Solutions collect form web for “Actividad de actualización de Android de la notificación”

Al parecer, esto es en realidad un error / característica del entorno de Android. A menos que un pendingIntent () se pase con un requestCode único, simplemente recupera la intención antigua que se pasó originalmente con ese número.

Los detalles se pueden encontrar aquí: http://groups.google.com/group/android-developers/browse_thread/thread/ad855bb57042c2bd/e84c8d6fececf6e4?lnk=gst&q=notification#e84c8d6fececf6e4

La solución que se les ocurrió fue simplemente incrementar el requestCode cada vez que pendingIntent.getActivity(Context context, int requestCode, Intent intent, int flags) se llama, y ​​establecer las banderas de la manera que lo había hecho originalmente con

 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

Que, no parece una solución perfecta, pero funciona. ¡Gracias, chicos, por su ayuda!

Creo que, en primer lugar, debe olvidarse de FLAG_ACTIVITY_NEW_TASK , porque esto abriría una nueva tarea (grupo de actividades) sin borrar nada de lo que abrió anteriormente. El FLAG_ACTIVITY_CLEAR_TOP tampoco sería útil para ti, porque, si entiendo correctamente el escenario, tu taks solo tiene dos actividades y la actividad de destino es secundaria.

Así que aquí está mi pregunta … Si la segunda pieza de código se ejecuta dentro de un contexto de actividad, ¿por qué no acaba de llamar startActivity con los nuevos extras? Esto le permitiría manejar los nuevos extras en el método onStart de la actividad secundaria.

Saludos.

¿Está anulando onNewIntent () para capturar la nueva intención, o simplemente llamando a getIntent ()? La documentación onNewIntent () dice que getIntent () continuará devolviendo la intención original utilizada para iniciar la actividad, a menos que llame a setIntent () de onNewIntent ().

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.