2012-09-20 14 views
5

przesyłam kod żądania przez to do zarządcy alarmowegoOdzyskaj requestcode od alarmu broadcastReceiver

Intent broadcast_intent = new Intent(this, AlarmBroadcastReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(this, rowId, broadcast_intent, PendingIntent.FLAG_UPDATE_CURRENT); 

Zastanawiałem się, że w broadcastreceiver, jak mogę retreive się requestcode (rowid), że używany do konfiguracji oczekującyIntent?

Dzięki

+0

Nie masz jeszcze odpowiedzi? Komon – Snake

Odpowiedz

2

Szukałem tego samego. Jednym ze sposobów jest przekazanie kodu żądania jako dodatkowego w swoim zamiarze.

intent.putExtra("requestcode", rowId); 

Jednak, jeśli aplikacja zostanie zabity nie ma sposobu, aby odzyskać dane przekazywane przez intencyjny.

Musisz przekazać identyfikator wiersza jako identyfikator URI i użyć filtru intencji.

+0

Jeśli aplikacja zostanie zabita, alarm zostanie ponownie zarejestrowany. Czy po wygaśnięciu nadal będzie można uzyskać kod żądania? – Snake

+0

Nie, alarm jest nadal rejestrowany, ale dodatkowe dane zawarte w intencji zostaną utracone. Próbowałem tego. –

+0

ahh Widzę, że jakiekolwiek wyjaśnienie, dlaczego tak jest – Snake

2
Intent broadcast_intent = new Intent(this, AlarmBroadcastReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, rowId, 
           broadcast_intent,PendingIntent.FLAG_UPDATE_CURRENT 
          ); 

Najlepiej byłoby, aby przekazać dodatkowe odnosząc broadcast_intent ciągu getBroadcast() - broadcast_intent.putExtras("REQUESTCODE",rowId) ; następująco:

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, rowId, 
           broadcast_intent.putExtras("REQUESTCODE",rowId), 
           PendingIntent.FLAG_UPDATE_CURRENT); 
2

requestCode wykorzystane podczas tworzenia pendingIntent nie jest przeznaczony do przekazywania do odbiornika, jest on przeznaczony jako sposób dla aplikacji tworzącej oczekujący pomysł, aby móc zarządzać wieloma oczekiwaniami.

Załóżmy, że aplikacja alarmowa jest potrzebna do utworzenia kilku oczekujących elementów, a później musi anulować lub zmodyfikować jedną z nich. Kod requestCode służy do określenia, który z nich ma być anulowany/zmodyfikowany.

Aby przekazać dane, użyj metody putExtra zgodnie z powyższym opisem. Zauważ, że możesz bardzo dobrze użyć RowId zarówno dla danych requestCode, jak i Extra.

Powiązane problemy