Kunci layar

Implementasi default Layar kunci AOSP dengan kemampuan untuk membuka kuncinya (pelindung kunci) hanya muncul di layar utama. Di Android 9 (dan yang lebih lama), layar sekunder mendukung satu jendela penguncian di satu layar eksternal. Di Android 10, Layar kunci diperluas ke semua tampilan sekunder publik. Layar kunci tetap sederhana dan tidak mendukung pembukaan kunci dari layar sekunder.

Gambar 1. Layar kunci di layar sekunder

Produsen perangkat dapat menerapkan Layar kunci untuk layar sekunder, asalkan persyaratan keamanan mendasar terpenuhi. Saat perangkat dikunci, informasi harus disembunyikan dengan aman di semua layar. Tidak ada kebijakan atau kontrol bawaan terkait konten yang harus ditampilkan atau disembunyikan saat perangkat terkunci. Oleh karena itu, satu-satunya cara aman untuk menerapkan akses terbatas adalah dengan menyembunyikan semua konten di balik Layar kunci dan jendela penguncian. Satu-satunya pengecualian adalah aplikasi yang secara eksplisit memilih untuk ditampilkan di atas Layar kunci menggunakan metode R.attr.showWhenLocked atau Activity.setShowWhenLocked(). Jika tidak, ada potensi besar untuk membocorkan informasi dari layar publik dan pribadi.

Meskipun layar dapat ditempatkan dalam status yang berbeda (ON/OFF), status terkunci bersifat global untuk semua layar. Seperti penerapan perangkat lainnya, hal ini harus jelas bagi pengguna saat perangkat terkunci (atau tidak terkunci). Misalnya, menekan tombol daya biasanya akan mengunci perangkat seluler. Tombol daya juga harus mengunci semua layar internal dan eksternal.

Karena jendela penguncian dimiliki oleh SystemUI, jendela tersebut tidak akan ditempatkan di layar pribadi. Pemilik layar pribadi bertanggung jawab untuk menyembunyikan jendela dan melindungi konten saat perangkat terkunci. Penerapan sistem default hanya menyembunyikan aktivitas di layar pribadi dengan mengubah visibilitas.

Implementasi

Jendela penguncian pada tampilan sekunder diimplementasikan sebagai jendela Presentation di KeyguardDisplayManager. Android 10 mengubah KeyguardDisplayManager#mPresentations menjadi array yang menyimpan semua jendela penguncian untuk semua layar sekunder. KeyguardDisplayManager juga memiliki pemroses perubahan tampilan untuk merespons perubahan pada tampilan yang tersedia dan mengamankan semua layar. Segera kunci semua layar yang terhubung pada waktu tertentu agar penyerang tidak dapat mengekstrak data pengguna meskipun memiliki akses fisik ke perangkat.

Jendela penguncian ditampilkan di semua layar sekunder publik (lihat KeyguardDisplayManager#isKeyguardShowable()). Pemilik layar pribadi bertanggung jawab untuk mengamankan konten saat perangkat terkunci.