Android Lollipop - Sperrbildschirm für Popup-Aktivität umgehen
Ich habeActivity1
ist ein Listenbildschirm mit Elementen. Jeder Artikel kann in einem separaten @ angezeigt werdActivity2
welches als Popup angezeigt wird.Activity1
kann vom Hintergrund aus gestartet und angezeigt werden, auch wenn der Bildschirm gesperrt ist.Activity1
kann auch festlegen, dass der Inhalt eines Elements auf dem Listenbildschirm automatisch angezeigt wird, indem @ gestartet wirActivity2
. Wir können den Sperrbildschirm umgehen, da beide Aktivitäten das @ habWindowManagerFlags.DismissKeyguard
aktiviert imOnCreate
Methode
Vor Android Lollipop hat alles wie erwartet funktioniert. Aber jetzt das PopupActivity2
ist nur sichtbar, wenn das Gerät manuell entsperrt wurde. Wenn ich @ ändeActivity2
Vollbild seinActivity
dann scheint alles zu funktionieren (mit Ausnahme des Übergangs von einer Aktivität zu einer anderen wird der Sperrbildschirm kurz angezeigt). Irgendwelche Ideen, wie man das sauber behebt?
Auch ich habe nur die Galaxy S6 / S6 Edge-Geräte ausprobiert, auf denen diese neue Knox-Sicherheitsfunktion installiert ist.
Bearbeite Ich habe mich verändertActivity2
ein ... zu seinDialogFragment
anstelle einesActivity
. Dies funktionierte am besten für mich, da die vorgeschlagene Antwort Code verwendete, der je nach Ziel-SDK veraltet oder veraltet ist.Activity1
verwendet die folgenden Flags, um den Sperrbildschirm bei Bedarf zu umgehen.
getWindow().addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
getWindow().addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
Schon seitActivity2
ist jetzt nur einDialogFragment
, verwendet die Fensterflags des übergeordnetenActivity1
. Ich entferne auch diese Flags auf dem "android.intent.action.SCREEN_OFF" Aktion, sodass die Aktivität den Sperrbildschirm nur umgeht, wenn sie als Benachrichtigung gestartet wird, und nicht jedes Mal, wenn sich die Aktivität oben im Stapel befindet. In der Antwort erwähnte Berechtigungen sind erforderlich.