از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
صفحه قفل
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
اجرای پیشفرض AOSP از صفحه قفل با امکاناتی برای باز کردن قفل آن (صفحه کلید) فقط در صفحه نمایش اصلی ظاهر میشود. در اندروید 9 (و پایینتر)، صفحههای ثانویه از یک پنجره قفل تک روی یک صفحه نمایش خارجی پشتیبانی میکردند. در اندروید 10، صفحه قفل به همه نمایشگرهای ثانویه عمومی گسترش مییابد. صفحه قفل ساده باقی می ماند و از باز کردن قفل از صفحه نمایش های ثانویه پشتیبانی نمی کند.

شکل 1. صفحه قفل در صفحه نمایش ثانویه
سازندگان دستگاه می توانند صفحه قفل خود را برای نمایشگرهای ثانویه پیاده سازی کنند، مشروط بر اینکه الزامات امنیتی اساسی برآورده شود. هنگامی که دستگاه قفل است، اطلاعات باید به طور ایمن در همه نمایشگرها پنهان شود. هیچ خطمشی داخلی یا کنترلی بر روی محتوایی که باید در هنگام قفل بودن دستگاه نشان داده یا پنهان شود وجود ندارد. بنابراین، تنها راه امن برای اجرای دسترسی محدود، پنهان کردن تمام محتوا در پشت صفحه قفل و قفل پنجره ها است. تنها استثناها برنامه هایی هستند که به صراحت انتخاب کرده اند تا با استفاده از روش های R.attr.showWhenLocked
یا Activity.setShowWhenLocked()
در بالای صفحه قفل نمایش داده شوند. در غیر این صورت، پتانسیل قوی برای درز اطلاعات از نمایشگرهای عمومی و خصوصی وجود دارد.
در حالی که نمایشگرها را می توان در حالت های مختلف قرار داد ( ON
/ OFF
)، حالت قفل برای همه نمایشگرها جهانی است. مانند هر پیاده سازی دستگاه دیگر، زمانی که دستگاه قفل است (یا آنلاک) باید برای کاربر واضح باشد. به عنوان مثال، فشار دادن دکمه پاور معمولاً دستگاه تلفن همراه را قفل می کند. یک دکمه پاور نیز باید تمام صفحه های داخلی و خارجی را قفل کند.
از آنجا که پنجره قفل متعلق به SystemUI است، روی نمایشگرهای خصوصی قرار نخواهد گرفت. صاحبان نمایشگرهای خصوصی مسئول مخفی کردن پنجره ها و محافظت از محتوا در هنگام قفل شدن دستگاه هستند. اجرای پیشفرض سیستم تنها با تغییر قابلیت مشاهده، فعالیتها را در نمایشگرهای خصوصی پنهان میکند.
پیاده سازی
پنجره قفل در نمایشگرهای ثانویه به عنوان یک پنجره ارائه در KeyguardDisplayManager
پیاده سازی می شود. Android 10 KeyguardDisplayManager#mPresentations
به آرایهای تغییر داد که تمام پنجرههای قفل شده را برای همه صفحههای ثانویه نگه میدارد. KeyguardDisplayManager
همچنین دارای یک شنونده تغییر صفحه نمایش است تا به تغییرات نمایشگرهای موجود پاسخ دهد و همه صفحه ها را ایمن کند. مهم است که فوراً همه نمایشگرهای متصل را در هر زمان مشخص قفل کنید تا مهاجمان نتوانند حتی با دسترسی فیزیکی به دستگاه، اطلاعات کاربر را استخراج کنند.
پنجره قفل در تمام نمایشگرهای ثانویه عمومی نمایش داده می شود (به KeyguardDisplayManager#isKeyguardShowable()
مراجعه کنید). هنگامی که دستگاه قفل است، صاحبان نمایشگرهای خصوصی مسئول حفظ امنیت محتوا هستند.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Lock screen\n\nAOSP's default implementation of the Lock screen with affordances to unlock\nit (keyguard) appears only on the primary display. In Android 9 (and lower),\nsecondary screens supported a single *locking window* on a single external\ndisplay. In Android 10, the Lock screen is expanded to all public secondary\ndisplays. The Lock screen remains simple and doesn't support unlocking from secondary\nscreens.\n\n**Figure 1.** Lock screen on secondary display\n\nDevice manufacturers can implement their Lock screen for secondary displays,\nprovided the fundamental security requirement is fulfilled. When the device is\nlocked, information should be securely concealed on all displays. There's no\nbuilt-in policy or control over what content should be shown or hidden when device\nis locked. Therefore, the only secure way of implementing restricted access is to\nhide all content behind the Lock screen and locking windows. The only exceptions\nare apps that have explicitly opted in to be displayed on top of the Lock screen\nusing the\n[R.attr.showWhenLocked](https://developer.android.com/reference/android/R.attr.html#showWhenLocked) or\n[Activity.setShowWhenLocked()](https://developer.android.com/reference/android/app/Activity.html#setShowWhenLocked(boolean)) methods.\nOtherwise, there is strong potential to leak information from public and private\ndisplays.\n\nWhile displays can be placed in to different states (`ON`/`OFF`),\nthe locked state is global for all displays. As with any device implementation, it should\nbe obvious to a user when a device is locked (or unlocked). For example, pressing\na power button typically locks a mobile device. A power button should also lock all\ninternal and external screens.\n\nBecause the locking window is owned by SystemUI, it won't be placed on\nprivate displays. Owners of the private displays are responsible for hiding\nthe windows and protecting content when a device is locked. The default system\nimplementation *only* hides activities on private displays by changing\nvisibility.\n\nImplementation\n--------------\n\nThe locking window on secondary displays is implemented as a [Presentation](https://developer.android.com/reference/android/app/Presentation)\nwindow in `KeyguardDisplayManager`. Android 10 changed\n`KeyguardDisplayManager#mPresentations` to an array that holds all\nlocking windows for all secondary screens. `KeyguardDisplayManager` also\nhas a display-change listener to respond to changes to the available displays and\nsecure all screens. It's important to immediately lock all connected displays at\nany given time so that attackers can't extract user data even with physical access\nto the device.\n\nThe locking window is displayed on all public secondary displays (see\n`KeyguardDisplayManager#isKeyguardShowable()`). Owners of private\ndisplays are responsible for securing the content when a device is\nlocked."]]