Kilit ekranı

AOSP'nin varsayılan Kilit ekranı uygulaması ve kilidi açma olanakları (tuş kilidi) yalnızca birincil ekranda görünür. Android 9'da (ve daha eski sürümlerde), ikincil ekranlar, tek bir harici ekranda tek bir kilitleme penceresini destekliyordu. Android 10'da Kilit ekranı tüm genel ikincil ekranları kapsayacak şekilde genişletildi. Kilit ekranı basit kalıyor ve ikincil ekranlardan kilit açmayı desteklemiyor.

Şekil 1. İkincil ekranda kilit ekranı

Cihaz üreticileri, temel güvenlik gereksinimlerinin karşılanması koşuluyla, ikincil ekranlar için Kilit ekranlarını uygulayabilirler. Cihaz kilitlendiğinde bilgiler tüm ekranlarda güvenli bir şekilde gizlenmelidir. Cihaz kilitlendiğinde hangi içeriğin gösterilmesi veya gizlenmesi gerektiğine ilişkin yerleşik bir politika veya kontrol yoktur. Bu nedenle, kısıtlı erişimi uygulamanın tek güvenli yolu, tüm içeriği Kilit ekranının ve kilitleme pencerelerinin arkasına gizlemektir. Bunun tek istisnası, R.attr.showWhenLocked veya Activity.setShowWhenLocked() yöntemlerini kullanarak Kilit ekranının üstünde görüntülenmeyi açıkça seçen uygulamalardır. Aksi takdirde, kamuya açık ve özel ekranlardan bilgi sızması yönünde güçlü bir potansiyel vardır.

Ekranlar farklı durumlara ( ON / OFF ) yerleştirilebilirken, kilitli durum tüm ekranlar için geneldir. Herhangi bir cihaz uygulamasında olduğu gibi, bir cihazın ne zaman kilitlendiği (veya kilidi açıldığında) kullanıcı tarafından açıkça görülebilmelidir. Örneğin, bir güç düğmesine basmak genellikle bir mobil cihazı kilitler. Bir güç düğmesi aynı zamanda tüm dahili ve harici ekranları da kilitlemelidir.

Kilitleme penceresi SystemUI'ye ait olduğundan özel ekranlara yerleştirilmeyecektir. Özel ekranların sahipleri, cihaz kilitlendiğinde pencereleri gizlemekten ve içeriği korumaktan sorumludur. Varsayılan sistem uygulaması, görünürlüğü değiştirerek yalnızca özel ekranlardaki etkinlikleri gizler.

Uygulama

İkincil ekranlardaki kilitleme penceresi, KeyguardDisplayManager bir Sunum penceresi olarak uygulanır. Android 10 KeyguardDisplayManager#mPresentations tüm ikincil ekranlar için tüm kilitleme pencerelerini tutan bir diziyle değiştirdi. KeyguardDisplayManager ayrıca mevcut ekranlardaki değişikliklere yanıt vermek ve tüm ekranları güvence altına almak için bir ekran değiştirme dinleyicisine de sahiptir. Saldırganların cihaza fiziksel erişim olsa bile kullanıcı verilerini alamamaları için bağlı tüm ekranların herhangi bir zamanda anında kilitlenmesi önemlidir.

Kilitleme penceresi tüm genel ikincil ekranlarda görüntülenir (bkz. KeyguardDisplayManager#isKeyguardShowable() ). Özel ekranların sahipleri, cihaz kilitlendiğinde içeriğin güvenliğinin sağlanmasından sorumludur.