إنّ التنفيذ التلقائي لشاشة القفل (AOSP) مع ميزات فتح قفلها (قفل المفاتيح) لا يظهر إلا على الشاشة الأساسية. وفي نظام التشغيل Android 9 (والإصدارات الأقدم)، كانت الشاشات الثانوية متوافقة مع نافذة قفل واحدة على شاشة خارجية واحدة. في Android 10، يتم توسيع نطاق شاشة القفل ليشمل جميع الشاشات الثانوية المفتوحة للجميع. تظل شاشة القفل بسيطة ولا تتيح فتح القفل من الشاشات الثانوية.
الشكل 1. قفل الشاشة على شاشة ثانوية
يمكن لمصنعي الأجهزة تنفيذ ميزة "قفل الشاشة" على الشاشات الثانوية،
بشرط استيفاء متطلبات الأمان الأساسية. عندما يكون الجهاز
مقفَلاً، يجب إخفاء المعلومات بأمان على جميع الشاشات. وليست هناك سياسة مضمّنة أو تحكُّم في تحديد المحتوى الذي يجب عرضه أو إخفاؤه عندما يكون الجهاز مقفلاً. وبالتالي، فإنّ الطريقة الآمنة الوحيدة لتنفيذ الوصول المحدود هي
إخفاء كل المحتوى خلف شاشة القفل ونوافذ القفل. الاستثناءات الوحيدة هي التطبيقات التي وافقت صراحةً على عرضها أعلى شاشة القفل باستخدام الطريقتَين
R.attr.showWhenLocked
أو
Activity.setShowWhenLocked()
.
في حال عدم اتّباع هذه الخطوات، من المحتمل جدًا تسرُّب المعلومات من الشاشات العامة والخاصة.
على الرغم من أنّه يمكن وضع الشاشات في حالات مختلفة (ON
/OFF
)،
تكون الحالة "مقفَلة" عالمية لجميع الشاشات. كما هو الحال مع أي عملية تنفيذ على الجهاز، يجب أن يكون واضحًا للمستخدم ما إذا كان الجهاز مقفلاً (أو مفتوحًا). على سبيل المثال، يؤدي الضغط على زر التشغيل عادةً إلى قفل جهاز جوّال. من المفترض أن يؤدي زر التشغيل أيضًا إلى قفل كل
الشاشات الداخلية والخارجية.
وبما أنّ نافذة القفل مملوكة لخدمة SystemUI، لن يتم وضعها على الشاشات الخاصة. يتحمّل مالكو الشاشات الخاصة مسؤولية إخفاء النوافذ وحماية المحتوى عندما يكون الجهاز مقفلاً. يؤدي تنفيذ النظام التلقائي فقط إلى إخفاء الأنشطة على الشاشات الخاصة عن طريق تغيير مستوى الرؤية.
التنفيذ
يتم تنفيذ نافذة القفل على شاشات العرض الثانوية كنافذة عرض تقديمي
في KeyguardDisplayManager
. تم تغيير KeyguardDisplayManager#mPresentations
في Android 10 إلى مصفوفة تحتفظ بجميع
نوافذ القفل لجميع الشاشات الثانوية. يحتوي KeyguardDisplayManager
أيضًا على مراقب لتغييرات الشاشة للردّ على التغييرات في الشاشات المتاحة
وتأمين جميع الشاشات. من المهم قفل جميع الشاشات المتصلة على الفور في
أي وقت حتى لا يتمكّن المهاجمون من استخراج بيانات المستخدمين حتى في حال الوصول المادي
إلى الجهاز.
يتم عرض نافذة القفل على جميع الشاشات الثانوية العامة (راجِع
KeyguardDisplayManager#isKeyguardShowable()
). يتحمّل مالكو الشاشات
الخاصة مسؤولية تأمين المحتوى عندما يكون الجهاز
مُقفَلاً.