L'implementazione predefinita della schermata di blocco di AOSP con le funzionalità per sbloccarla (keyguard) viene visualizzata solo sul display principale. In Android 9 (e versioni precedenti), gli schermi secondari supportavano una sola 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 da schermi secondari.
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 il requisito di sicurezza fondamentale sia soddisfatto. Quando il dispositivo è
bloccato, le informazioni devono essere nascoste in modo sicuro su tutti i display. Non esiste
una policy o un controllo integrato sui contenuti da mostrare o nascondere quando il dispositivo
è bloccato. Pertanto, l'unico modo sicuro per implementare l'accesso limitato è
nascondere tutti i contenuti dietro la schermata di blocco e le finestre di blocco. Le uniche eccezioni
sono le app che hanno attivato esplicitamente la visualizzazione sopra la schermata di blocco
utilizzando i metodi
R.attr.showWhenLocked
o
Activity.setShowWhenLocked()
.
In caso contrario, esiste un forte potenziale di divulgazione di informazioni da display pubblici e privati.
Anche se i display possono essere impostati su stati diversi (ON
/OFF
),
lo stato bloccato è globale per tutti i display. Come per qualsiasi implementazione di un dispositivo, dovrebbe
essere ovvio per un utente quando un dispositivo è bloccato (o sbloccato). Ad esempio, premendo
un tasto di accensione in genere si blocca un dispositivo mobile. Un tasto di accensione dovrebbe anche bloccare tutti
gli schermi interni ed esterni.
Poiché la finestra di blocco è di proprietà di SystemUI, non verrà posizionata su display privati. I proprietari dei display privati sono responsabili di nascondere le finestre e proteggere i contenuti quando un dispositivo è bloccato. L'implementazione predefinita del sistema nasconde solo le attività sui display privati modificando la visibilità.
Implementazione
La finestra di blocco sui display secondari è implementata come finestra 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 anche
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 connessi in
qualsiasi momento, in modo che gli autori degli attacchi non possano estrarre i dati utente anche con l'accesso fisico
al dispositivo.
La finestra di blocco viene visualizzata su tutti i display secondari pubblici (vedi
KeyguardDisplayManager#isKeyguardShowable()
). I proprietari dei display privati sono responsabili della protezione dei contenuti quando un dispositivo è
bloccato.