Próbuję wywołać funkcję BroadcastReceiver, gdy ekran jest włączony. W moim AndroidManifest.xml Mam określone: android.intent.action.SCREEN_ON nie działa jako filtr intencji odbiornika
<receiver android:name="IntentReceiver">
<intent-filter>
<action android:name="android.intent.action.SCREEN_ON"></action>
</intent-filter>
</receiver>
wydaje się jednak odbiornik nie jest wywoływany (wartości graniczne nie ogień, wypowiedzi ignorowane zalogować). Wymieniłem SCREEN_ON na BOOT_COMPLETED na test, a ten ma wywołać.
Jest to projekt w wersji 1.6 (pakiet SDK na poziomie 4).
Wyszukiwarka Google Code ujawniła to, pobrałem projekt i zsynchronizowałem go, przekonwertowałem go do pracy z najnowszymi narzędziami, ale także nie jest w stanie przechwycić tego zdarzenia.
Czy to być może nie jest już obsługiwany?
Wcześniej udało mi się przechwycić to wydarzenie z powodzeniem wywołania Context.registerReceiver() jak tak
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// ...
}
}, new IntentFilter(Intent.ACTION_SCREEN_ON));
Jednak ta została wykonana przez serwis długowiecznych. Po porady mędrców z CommonsWare wybrałem, aby spróbować usunąć długowieczną usługę i użyć różnych technik. Ale wciąż muszę wykryć ekran i zdarzenia.
Dzięki CW.Byłoby cudownie, gdyby było jakieś ostrzeżenie w czasie wykonywania lub w dokumentacji o ACTION_SCREEN_ON niemożliwe do złapania. Złożę ten plik pod "gotcha". –
Tak, myślę, że udokumentowali, że "ACTION_BATTERY_CHANGED" - kwintesencja tego zjawiska - zachowuje się w ten sposób, ale zdecydowanie pominęli ten. Jeśli wyszukasz hasło "ACTION_SCREEN_ON" w kodzie źródłowym (np. Za pomocą Google Search) i znalazłeś jego użycie w "PowerManagerService", zauważysz, że ustawiona jest flaga wskazująca tylko zarejestrowany-odbiornik. – CommonsWare
+1 tylko do dyskusji kolorystycznej. – 323go