2012-03-22 15 views
13

Przy zastosowaniu PendingIntent w AppWidgetProvider używam następujący kod:Anulowanie PendingIntent

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

więc obecnie nie ma odniesienia ograniczona do PendingIntent zwracanej przez metodę getBroadcast. W konkretnej sytuacji chcę teraz anulować PendingIntent. Czy istnieje sposób na odzyskanie PendingIntent z widoku? Czy jest to jedyny sposób, aby wywołać metodę Anuluj późniejszego PendingIntent, zachowując odniesienie do niej?

+0

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

+0

Dzięki, Dheeraj! Trochę się teraz spieszę, ale sprawdzę to i spróbuję jak najszybciej. Twoje zdrowie! –

Odpowiedz

29

Gdzie chcesz ją anulować, należy wykonać następujące czynności (gdzieś indziej w swojej bazie kodu):

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

gdzie intent jest taka sama jak podano w kodzie powyżej. PendingIntent.getBroadcast(...) przy użyciu PendingIntent.FLAG_UPDATE_CURRENT zwróci odwołanie do istniejącego już utworzonego lub utworzy je, jeśli aktualnie nie istnieje.

+0

Ah, to naprawdę poradziło. :) Dzięki! –

+2

czy getBroadcast zwraca ten sam obiekt * odwołanie * na wypadek, gdy używam tej flagi? –

Powiązane problemy