Mam aplikację na Androida, która musi być budzona sporadycznie przez cały dzień.Jak przekazać dane z BroadcastReceiver do uruchamianego działania?
Aby to zrobić, używam programu AlarmManager, aby skonfigurować moduł PendingIntent i ustawić ten wyzwalacz na BroadcastReceiver. To BroadcastReceiver następnie rozpoczyna działanie, aby przenieść interfejs na pierwszy plan.
Wszystko powyższe wydaje się działać, ponieważ Aktywność uruchamia się poprawnie; ale chciałbym, aby BroadcastReceiver powiadomił Aktywność, że został uruchomiony przez alarm (w przeciwieństwie do uruchamiania przez użytkownika). Aby to próbuję, czy z metody onReceive() z BroadcastReceiver ustawić zmienną w wiązce dodatkami z zamiarem, a więc:
Intent i = new Intent(context, MyActivity.class);
i.putExtra(wakeupKey, true);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
W onResume() metodę mojej działalności, to wówczas spojrzeć na istnienie tej zmiennej logicznej:
protected void onResume() {
super.onResume();
String wakeupKey = "blah";
if (getIntent()!=null && getIntent().getExtras()!=null)
Log.d("app", "onResume at " + System.currentTimeMillis() + ":" + getIntent().getExtras().getBoolean(wakeupKey));
else
Log.d("app", "onResume at " + System.currentTimeMillis() + ": null");
}
getIntent() getExtras() wywołanie w onResume() zawsze zwraca null - I nie wydają się być w stanie przekazać żadnych dodatków, przez co wszystko w tym. pakiet.
Jeśli korzystam z tej samej metody, aby powiązać dodatki do PendingIntent, które wyzwala BroadcastReceiver jednak, dodatki są dobrze.
Czy ktoś może mi powiedzieć, co jest innego w przekazywaniu pakietu z BroadcastReceiver do działania, w przeciwieństwie do przekazywania pakietu z działania do BroadcastReceiver? Obawiam się, że mogę zrobić coś bardzo bardzo nie tak tutaj ...
Curiouser i Curiouser ... to właśnie rozpoczął pracę (w emulatorze), dokładnie tak, jak ja się spodziewać . Trochę pracował przez chwilę. Wyłączyłem emulator, zrestartowałem (bez zmian kodu lub rekompilacji) i powróciłem do starego zachowania (Aktywność uruchamia się, ale pakiet nie przeszedł). Widzę dzienniki dla obu przebiegów - w pierwszym, Pakiety przechodzą, w drugim nie. –