Die Standardimplementierung des Sperrbildschirms mit Angeboten zum Entsperren (Keyguard) von AOSP wird nur auf dem Hauptbildschirm angezeigt. Unter Android 9 (und niedriger) unterstützten sekundäre Bildschirme ein einzelnes Sperrbildschirmfenster auf einem einzelnen externen Display. In Android 10 wird der Sperrbildschirm auf alle öffentlichen sekundären Displays ausgeweitet. Der Sperrbildschirm bleibt einfach und unterstützt nicht das Entsperren über sekundäre Displays.
Abbildung 1. Sperrbildschirm auf dem sekundären Display
Gerätehersteller können ihren Sperrbildschirm für sekundäre Displays implementieren, sofern die grundlegende Sicherheitsanforderung erfüllt ist. Wenn das Gerät gesperrt ist, sollten Informationen auf allen Displays sicher verborgen sein. Es gibt keine integrierte Richtlinie und keine Kontrolle darüber, welche Inhalte bei gesperrtem Gerät ein- oder ausgeblendet werden sollen. Daher ist die einzige sichere Möglichkeit, den eingeschränkten Zugriff zu implementieren, alle Inhalte hinter dem Sperrbildschirm und die Fenster zu sperren. Die einzigen Ausnahmen sind Apps, die explizit über die Methoden R.attr.showWhenLocked
oder Activity.setShowWhenLocked()
aktiviert wurden, um über dem Sperrbildschirm angezeigt zu werden.
Andernfalls besteht ein hohes Risiko, dass Informationen aus öffentlichen und privaten Displays offengelegt werden.
Displays können in verschiedene Status (ON
/OFF
) versetzt werden, der gesperrte Status ist jedoch global für alle Displays. Wie bei jeder Geräteimplementierung sollte für den Nutzer klar erkennbar sein, ob ein Gerät gesperrt (oder entsperrt) ist. Wenn Sie beispielsweise die Ein-/Aus-Taste drücken, wird ein Mobilgerät normalerweise gesperrt. Eine Ein-/Aus-Taste sollte auch alle internen und externen Bildschirme sperren.
Da das Sperrfenster zu SystemUI gehört, wird es nicht auf privaten Displays platziert. Die Eigentümer der privaten Displays sind dafür verantwortlich, die Fenster auszublenden und Inhalte zu schützen, wenn ein Gerät gesperrt ist. Die Standardsystemimplementierung blendet nur Aktivitäten auf privaten Displays aus, indem die Sichtbarkeit geändert wird.
Implementierung
Das Sperrfenster auf sekundären Displays wird in KeyguardDisplayManager
als Präsentationsfenster implementiert. Unter Android 10 wurde KeyguardDisplayManager#mPresentations
in ein Array geändert, das alle Sperrfenster für alle sekundären Bildschirme enthält. KeyguardDisplayManager
hat außerdem einen Listener für Displayänderungen, um auf Änderungen der verfügbaren Bildschirme zu reagieren und alle Bildschirme zu sichern. Es ist wichtig, alle verbundenen Displays jederzeit sofort zu sperren, damit Angreifer auch bei physischem Zugriff auf das Gerät keine Nutzerdaten abrufen können.
Das Sperrfenster wird auf allen öffentlichen sekundären Displays angezeigt (siehe KeyguardDisplayManager#isKeyguardShowable()
). Eigentümer privater Displays sind dafür verantwortlich, die Inhalte zu schützen, wenn ein Gerät gesperrt ist.