صفحه قفل

اجرای پیش‌فرض AOSP از صفحه قفل با امکاناتی برای باز کردن قفل آن (صفحه کلید) فقط در صفحه نمایش اصلی ظاهر می‌شود. در اندروید 9 (و پایین‌تر)، صفحه‌های ثانویه از یک پنجره قفل تک روی یک صفحه نمایش خارجی پشتیبانی می‌کردند. در اندروید 10، صفحه قفل به همه نمایشگرهای ثانویه عمومی گسترش می‌یابد. صفحه قفل ساده باقی می ماند و از باز کردن قفل از صفحه نمایش های ثانویه پشتیبانی نمی کند.

شکل 1. صفحه قفل در صفحه نمایش ثانویه

سازندگان دستگاه می توانند صفحه قفل خود را برای نمایشگرهای ثانویه پیاده سازی کنند، مشروط بر اینکه الزامات امنیتی اساسی برآورده شود. هنگامی که دستگاه قفل است، اطلاعات باید به طور ایمن در همه نمایشگرها پنهان شود. هیچ خط‌مشی داخلی یا کنترلی بر روی محتوایی که باید در هنگام قفل بودن دستگاه نشان داده یا پنهان شود وجود ندارد. بنابراین، تنها راه امن برای اجرای دسترسی محدود، پنهان کردن تمام محتوا در پشت صفحه قفل و قفل پنجره ها است. تنها استثناها برنامه هایی هستند که به صراحت انتخاب کرده اند تا با استفاده از روش های R.attr.showWhenLocked یا Activity.setShowWhenLocked() در بالای صفحه قفل نمایش داده شوند. در غیر این صورت، پتانسیل قوی برای درز اطلاعات از نمایشگرهای عمومی و خصوصی وجود دارد.

در حالی که نمایشگرها را می توان در حالت های مختلف قرار داد ( ON / OFF )، حالت قفل برای همه نمایشگرها جهانی است. مانند هر پیاده سازی دستگاه دیگر، زمانی که دستگاه قفل است (یا آنلاک) باید برای کاربر واضح باشد. به عنوان مثال، فشار دادن دکمه پاور معمولاً دستگاه تلفن همراه را قفل می کند. یک دکمه پاور نیز باید تمام صفحه های داخلی و خارجی را قفل کند.

از آنجا که پنجره قفل متعلق به SystemUI است، روی نمایشگرهای خصوصی قرار نخواهد گرفت. صاحبان نمایشگرهای خصوصی مسئول مخفی کردن پنجره ها و محافظت از محتوا در هنگام قفل شدن دستگاه هستند. اجرای پیش‌فرض سیستم تنها با تغییر قابلیت مشاهده، فعالیت‌ها را در نمایشگرهای خصوصی پنهان می‌کند.

پیاده سازی

پنجره قفل در نمایشگرهای ثانویه به عنوان یک پنجره ارائه در KeyguardDisplayManager پیاده سازی می شود. Android 10 KeyguardDisplayManager#mPresentations به آرایه‌ای تغییر داد که تمام پنجره‌های قفل شده را برای همه صفحه‌های ثانویه نگه می‌دارد. KeyguardDisplayManager همچنین دارای یک شنونده تغییر صفحه نمایش است تا به تغییرات نمایشگرهای موجود پاسخ دهد و همه صفحه ها را ایمن کند. مهم است که فوراً همه نمایشگرهای متصل را در هر زمان مشخص قفل کنید تا مهاجمان نتوانند حتی با دسترسی فیزیکی به دستگاه، اطلاعات کاربر را استخراج کنند.

پنجره قفل در تمام نمایشگرهای ثانویه عمومی نمایش داده می شود (به KeyguardDisplayManager#isKeyguardShowable() مراجعه کنید). هنگامی که دستگاه قفل است، صاحبان نمایشگرهای خصوصی مسئول حفظ امنیت محتوا هستند.