10

Używam AlarmManager, aby uruchomić usługę. Po skonfigurowaniu AlarmManager używam PendingIntent i używam unikatowego requestCode, który jest równy wierszowi id w mojej bazie danych.PendingIntent get requestCode

PendingIntent pendingIntent = PendingIntent.getBroadcast(SettingsActivity.this, 
          lecture.getId(), myIntent, 0); 

Jak mogę pobrać ten identyfikator w mojej usłudze, gdy się uruchamia? Zasadniczo potrzebuję tylko parametru requestCode. Chcę użyć tego identyfikatora, aby pobrać dane z mojej bazy danych i pokazać je w powiadomieniu. Zaimplementowałem wszystkie rzeczy, po prostu potrzebuję tego requestCode. Czy można to zdobyć?

Dzięki

Odpowiedz

14

Musisz umieścić lecture.getId() dodatkami do swojego myIntent. Według Javadoc requestCode jeszcze nie jest jeszcze używany.

// store id 
myIntent.putExtra("id", lecture.getId()); 

// read id or -1, if there is no such extra in intent 
int id = myIntent.getIntExtra("id", -1); 
+0

Ale potrzebuję tego identyfikatora, nawet gdy aplikacja zostanie zabita. Po zabiciu aplikacji dodatkowe dane są usuwane. Jak mogę uzyskać niezbędne dane z bazy danych w usłudze, gdy identyfikator w dodatkach będzie pusty? Czy nie mam racji? – Aksiom

+1

@Aksjomat "PendingIntent" po wystrzeleniu będzie miał dodatkowe, nie ma nic wspólnego z procesem zabijania, 'PendingIntent' jest swego rodzaju intencją, która działa niezależnie od aplikacji, nawet jeśli twoja aplikacja nie działa !! –

+0

@Aksjomat, ale gdy urządzenie zostanie uruchomione (zrestartowane) 'PendingIntent' zostanie usunięty, więc ** przy starcie ** musisz ponownie zarejestrować' PendingIntent' za pomocą 'AlarmManager' –