Kilka lat temu napisałem aplikację alarmową, która działała na systemie Android 2, a teraz próbuję ją zaktualizować do systemu Android 4. W szczególności Samsung Galaxy S4.Android Galaxy S4 - Aktywność widoczna na ekranie blokady
W systemie Android 2, jeśli telefon był w trybie uśpienia, obudziłby telefon i wyświetli ekran "Odłóż lub odrzuć" na ekranie blokady.
W systemie Android 4 budzi telefon, ale trzeba go odblokować, a następnie otworzyć obszar powiadomień, a następnie kliknąć powiadomienie o alarmie, zanim będzie można nacisnąć "Odrzuć".
ja zawsze przy użyciu tego kodu, aby zrobić waking:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Czytałem 8 różnych pytania StackOverflow w tej sprawie. Większość z nich podaje powyższy kod, który działał dla mnie wiele lat temu w systemie Android 2, ale nie działa w systemie Android 4. Ale żaden z nich nie pomógł mi rozwiązać tego problemu. Oto pytania, które czytałem i próbowałem:
Android: remove or disable programmatically the Lock Screen on Samsung Galaxy S2 device
How do I create an Activity that is visible on top of the lock screen
How to start a dialog (like alarm dimiss /snooze) that can be clicked without unlocking the screen
Android activity over default lock screen
android device locked, yet want alarm to sound and dialog to appear
Android dialog over lock screen
Show dialog with touch events over lockscreen in Android 2.3
Czy ktoś ma jakieś pomysły, co się zmieniło w Androida 4, które mogły spowodować to?
EDYCJA: Oto jeden z najprostszych przykładów, jakie widziałem w oknie dialogowym alarmu, które nie pojawia się "zminimalizowane". Nie, jak napisano, pojawiają się na ekranie blokady, ale można naprawić z WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
Jest napisany z FragmentActivity i DialogFragment, ale nadal działa jako aktywny. Używa AlertDialog.Builder do utworzenia okna dialogowego, a jeśli spróbujesz zrobić to z układem XML, to nie zadziała. Czemu?
ustawiłeś to zezwolenie w manifeście? -> –
bofredo
Tak, to uprawnienie zawsze było ustawione i używane do pracy na Androidzie 2. – howrad
Próbowałem czegoś nowego. Ustawiłem Blokada ekranu na Brak, ale nadal widzę problem. Aby dać analogię do komputera stacjonarnego, jest tak, jakby okno dialogowe było uruchamiane "zminimalizowane" - zanim pojawi się okno dialogowe, należy dotknąć powiadomienia alarmu. Gdy telefon jest włączony, okno dialogowe wyświetla się tak, jak powinno, ale gdy telefon jest wyłączony, okno dialogowe zaczyna być zminimalizowane. I to nie był problem w systemie Android 2.3 – howrad