2010-07-05 10 views
8

He leído muchas publicaciones sobre el mismo tema y he probado todas las soluciones sin obtener el resultado que deseo. El programa debe comenzar a una intención con extras de una notificación:Android La intención pendiente iniciada de notificaion no reemplaza la última

NotificationManager mNotificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 

Intent notificationIntent = new Intent(context, myActivity.class); 
    notificationIntent.putExtra("someData", data); 

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

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

mNotificationManager.notify(ID, notification); 

El problema es que cuando se muestra una nueva notificación, los extras que la intención es la misma que en la primera notificación. He estado en diferentes banderas tanto en el intento como en el intento pendiente, sin resultado. ¿Qué me estoy equivocando? Si acabo de lanzar la misma actividad (y los mismos extras) con un botón, todo funciona como debe.

+0

posible duplicado de [Android mantiene el almacenamiento en caché mis intenciones Extras , ¿cómo declarar un intento pendiente que mantiene nuevos extras?] (http://stackoverflow.com/questions/3140072/android-keeps-caching-my-intents-extras-how-to-declare-a-pending-intent- that-kee) – Pentium10

+1

Sí, la cosa es que leí esa publicación, y un par más, pero ninguna de ellas funcionó f o yo. Sin embargo, de alguna manera, logré resolverlo, y publicaré mi solución aquí pronto. – Emil

Respuesta

9

No sé por qué he tenido tantos problemas para hacer que esto funcione. La combinación de indicadores que utiliza para conseguir que funcione correctamente era:

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 
       PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT); 

También elimina todas las banderas utilizadas cuando se crea el notificationIntent.

5

intenta agregar un atributo de archivo AndroidManifest.xml:

<activity ... android:launchMode="singleTop"/> 
0

intenta establecer código de solicitud para cada PendingIntent y funcionará

PendingIntent pendingIntent = PendingIntent.getActivity(this, RandomInt, intent, 
       PendingIntent.FLAG_ONE_SHOT); 
Cuestiones relacionadas