2012-03-22 15 views
13

Cuando se utiliza un PendingIntent en un AppWidgetProvider, estoy usando el siguiente código:Cancelación de un PendingIntent

views.setOnClickPendingIntent(viewId, 
       PendingIntent.getBroadcast(context, 0, intent, 
       PendingIntent.FLAG_UPDATE_CURRENT)); 

Así que actualmente no hay ninguna referencia a la PendingIntent mantuvo devuelto por el método getBroadcast. En una situación específica, ahora quiero cancelar el PendingIntent. ¿Hay alguna forma de recuperar el PendingIntent de la Vista? ¿O es la única forma de llamar al método cancelar del PendingIntent después manteniendo una referencia al mismo?

+0

Ver http://stackoverflow.com/a/4350149/165674 –

+0

Gracias, Dheeraj! Ahora tengo un poco de prisa, pero lo veré y lo intentaré lo antes posible. ¡Aclamaciones! –

Respuesta

29

Dónde quiere cancelarla, haría lo siguiente (en otra parte de su base de código):

PendingIntent.getBroadcast(context, 0, intent, 
          PendingIntent.FLAG_UPDATE_CURRENT).cancel(); 

donde intent es el mismo que hace referencia en su código de seguridad. PendingIntent.getBroadcast(...) utilizando PendingIntent.FLAG_UPDATE_CURRENT devolverá una referencia a la existente ya creada, o crear una si no existe actualmente.

+0

Ah, eso fue lo que hizo el truco. :) ¡Gracias! –

+2

obtiene getBroadcast devuelve el mismo objeto * referencia * en caso de que use esta bandera? –

Cuestiones relacionadas