Domyślna implementacja AOSP ekranu blokady z możliwością odblokowania (klawiatura) pojawia się tylko na ekranie głównym. W systemie Android 9 (i starszych) ekrany dodatkowe obsługiwały jedno okno blokujące na jednym wyświetlaczu zewnętrznym. W systemie Android 10 ekran blokady jest rozszerzony na wszystkie publiczne wyświetlacze dodatkowe. Ekran blokady pozostaje prosty i nie obsługuje odblokowywania z ekranów dodatkowych.
Rysunek 1. Ekran blokady na wyświetlaczu dodatkowym
Producenci urządzeń mogą wdrożyć ekran blokady dla wyświetlaczy dodatkowych, pod warunkiem spełnienia podstawowego wymogu bezpieczeństwa. Gdy urządzenie jest zablokowane, informacje powinny być bezpiecznie ukryte na wszystkich wyświetlaczach. Nie ma wbudowanych zasad ani kontroli nad tym, jaka treść powinna być pokazywana lub ukrywana, gdy urządzenie jest zablokowane. Dlatego jedynym bezpiecznym sposobem wdrożenia ograniczonego dostępu jest ukrycie całej zawartości za ekranem blokady i zablokowaniem okien. Jedynymi wyjątkami są aplikacje, które jawnie wyraziły zgodę na wyświetlanie na górze ekranu blokady przy użyciu metod R.attr.showWhenLocked
lub Activity.setShowWhenLocked()
. W przeciwnym razie istnieje duży potencjał wycieku informacji z wyświetlaczy publicznych i prywatnych.
Chociaż wyświetlacze można ustawiać w różnych stanach ( ON
/ OFF
.), stan zablokowania jest globalny dla wszystkich wyświetlaczy. Podobnie jak w przypadku każdej implementacji urządzenia, dla użytkownika powinno być oczywiste, kiedy urządzenie jest zablokowane (lub odblokowane). Na przykład naciśnięcie przycisku zasilania zazwyczaj powoduje zablokowanie urządzenia mobilnego. Przycisk zasilania powinien również blokować wszystkie ekrany wewnętrzne i zewnętrzne.
Ponieważ okno blokujące jest własnością SystemUI, nie zostanie umieszczone na prywatnych wyświetlaczach. Właściciele prywatnych wyświetlaczy są odpowiedzialni za ukrywanie okien i ochronę zawartości, gdy urządzenie jest zablokowane. Domyślna implementacja systemu ukrywa działania jedynie na prywatnych wyświetlaczach poprzez zmianę widoczności.
Realizacja
Okno blokowania na wyświetlaczach dodatkowych jest zaimplementowane jako okno prezentacji w KeyguardDisplayManager
. W systemie Android 10 zmieniono KeyguardDisplayManager#mPresentations
na tablicę zawierającą wszystkie okna blokujące dla wszystkich ekranów dodatkowych. KeyguardDisplayManager
posiada także moduł nasłuchujący zmiany wyświetlacza, który reaguje na zmiany na dostępnych wyświetlaczach i zabezpiecza wszystkie ekrany. Ważne jest, aby w dowolnym momencie natychmiast zablokować wszystkie podłączone wyświetlacze, aby osoby atakujące nie mogły wydobyć danych użytkownika nawet przy fizycznym dostępie do urządzenia.
Okno blokowania jest wyświetlane na wszystkich publicznych wyświetlaczach dodatkowych (patrz KeyguardDisplayManager#isKeyguardShowable()
). Właściciele prywatnych wyświetlaczy są odpowiedzialni za zabezpieczenie treści, gdy urządzenie jest zablokowane.