L'implementazione predefinita di AOSP della schermata di blocco con le possibilità di sbloccarla (blocco tastiera) viene visualizzata solo sul display principale. In Android 9 (e versioni precedenti), gli schermi secondari supportavano un'unica finestra di blocco su un singolo display esterno. In Android 10, la schermata di blocco viene estesa a tutti i display secondari pubblici. La schermata di blocco rimane semplice e non supporta lo sblocco dalle schermate secondarie.
Figura 1. Schermata di blocco sul display secondario
I produttori di dispositivi possono implementare la schermata di blocco per i display secondari, a condizione che siano soddisfatti i requisiti di sicurezza fondamentali. Quando il dispositivo è bloccato, le informazioni devono essere nascoste in modo sicuro su tutti i display. Non esiste alcuna politica o controllo integrato su quali contenuti devono essere mostrati o nascosti quando il dispositivo è bloccato. Pertanto, l'unico modo sicuro per implementare l'accesso limitato è nascondere tutto il contenuto dietro la schermata di blocco e bloccare le finestre. Le uniche eccezioni sono le app che hanno esplicitamente scelto di essere visualizzate nella parte superiore della schermata di blocco utilizzando i metodi R.attr.showWhenLocked
o Activity.setShowWhenLocked()
. In caso contrario, esiste un forte rischio di fuga di informazioni dai display pubblici e privati.
Sebbene i display possano essere posizionati in stati diversi ( ON
/ OFF
), lo stato bloccato è globale per tutti i display. Come per qualsiasi implementazione di un dispositivo, dovrebbe essere ovvio per l'utente quando un dispositivo è bloccato (o sbloccato). Ad esempio, premendo un pulsante di accensione in genere si blocca un dispositivo mobile. Un pulsante di accensione dovrebbe anche bloccare tutti gli schermi interni ed esterni.
Poiché la finestra di blocco è di proprietà di SystemUI, non verrà posizionata su visualizzazioni private. I proprietari dei display privati sono responsabili di nascondere le finestre e proteggere il contenuto quando un dispositivo è bloccato. L'implementazione del sistema predefinita nasconde solo le attività sui display privati modificando la visibilità.
Implementazione
La finestra di blocco sui display secondari è implementata come finestra di presentazione in KeyguardDisplayManager
. Android 10 ha modificato KeyguardDisplayManager#mPresentations
in un array che contiene tutte le finestre di blocco per tutti gli schermi secondari. KeyguardDisplayManager
dispone inoltre di un listener di modifica del display per rispondere alle modifiche ai display disponibili e proteggere tutti gli schermi. È importante bloccare immediatamente tutti i display collegati in qualsiasi momento in modo che gli aggressori non possano estrarre i dati dell'utente anche con accesso fisico al dispositivo.
La finestra di blocco viene visualizzata su tutti i display secondari pubblici (vedere KeyguardDisplayManager#isKeyguardShowable()
). I proprietari di display privati sono responsabili della protezione dei contenuti quando il dispositivo è bloccato.