L'implementazione predefinita della schermata di blocco di AOSP con le funzionalità per sbloccarla (guardia tasti) viene visualizzata solo sul display principale. In Android 9 (e versioni precedenti), gli schermi secondari supportavano una singola 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 venga soddisfatto il requisito di sicurezza fondamentale. Quando il dispositivo è bloccato, le informazioni devono essere nascoste in modo sicuro su tutti i display. Non esistono criteri o controlli integrati per stabilire quali contenuti devono essere mostrati o nascosti 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 bloccate. 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'elevata probabilità di fuga di informazioni dalle schermate pubbliche e private.
Sebbene i display possano essere impostati in stati diversi (ON
/OFF
),
lo stato bloccato è globale per tutti i display. Come per qualsiasi implementazione del dispositivo, deve essere chiaro all'utente quando un dispositivo è bloccato (o sbloccato). Ad esempio, in genere la pressione di un tasto di accensione blocca un dispositivo mobile. Un tasto di accensione dovrebbe anche bloccare tutte le schermate interne ed esterne.
Poiché la finestra di blocco è di proprietà di SystemUI, non verrà posizionata su display privati. È responsabilità dei proprietari dei display privati nascondere le finestre e proteggere i contenuti 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 Presentazione in KeyguardDisplayManager
. In Android 10 è stato modificato
KeyguardDisplayManager#mPresentations
in un array che contiene tutte
le finestre di blocco per tutte le schermate secondarie. KeyguardDisplayManager
ha anche un ascoltatore di modifiche del display per rispondere alle modifiche ai display disponibili e proteggere tutte le schermate. È importante bloccare immediatamente tutti i display collegati in qualsiasi momento in modo che gli utenti malintenzionati 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.