החל מ-27 במרץ 2025, מומלץ להשתמש ב-android-latest-release
במקום ב-aosp-main
כדי ליצור תרומות ל-AOSP. מידע נוסף זמין במאמר שינויים ב-AOSP.
מסך נעילה
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
ההטמעה שמוגדרת כברירת מחדל ב-AOSP של מסך הנעילה עם תכונות לביטול הנעילה (מסך הנעילה) מופיעה רק במסך הראשי. ב-Android 9 (וגם בגרסאות ישנות יותר), המסכים המשניים תמכו בחלון נעילה אחד במסך חיצוני אחד. ב-Android 10, מסך הנעילה מורחב לכל המסכים המשניים הגלויים לכולם. מסך הנעילה נשאר פשוט ולא תומך בביטול הנעילה במסכים משניים.

איור 1. מסך נעילה במסך המשני
יצרני המכשירים יכולים להטמיע את נעילת המסך שלהם במסכים משניים, בתנאי שהם עומדים בדרישת האבטחה הבסיסית. כשהמכשיר נעול, המידע צריך להיות מוסתר בצורה מאובטחת בכל המסכים. אין מדיניות מובנית או שליטה על התוכן שמוצג או מוסתר כשהמכשיר נעול. לכן, הדרך המאובטחת היחידה להטמיע גישה מוגבלת היא להסתיר את כל התוכן מאחורי מסך הנעילה וחלונות נעולים. החריגים היחידים הם אפליקציות שהביעו הסכמה מפורשת להצגה מעל מסך הנעילה באמצעות השיטות R.attr.showWhenLocked
או Activity.setShowWhenLocked()
.
אחרת, יש סיכוי גבוה לדליפה של מידע מהצגות ציבוריות ופרטיות.
אפשר להעביר את המסכים למצבים שונים (ON
/OFF
), אבל המצב הנעול הוא גלובלי לכל המסכים. כמו בכל הטמעה של מכשיר, למשתמש צריך להיות ברור מתי המכשיר נעול (או פתוח). לדוגמה, לחיצה על לחצן ההפעלה בדרך כלל נועדה לנעול מכשיר נייד. לחצן ההפעלה צריך לנעול גם את כל המסכים הפנימיים והחיצוניים.
חלון הנעילה הוא בבעלות SystemUI, ולכן הוא לא יוצג במסכים פרטיים. בעלי המסכים הפרטיים אחראים להסתרת החלונות ולהגנה על התוכן כשהמכשיר נעול. הטמעת ברירת המחדל של המערכת מסתירה רק פעילויות במסכים פרטיים על ידי שינוי החשיפה.
הטמעה
חלון הנעילה במסכים משניים מוטמע כחלון Presentation ב-KeyguardDisplayManager
. ב-Android 10, המאפיין KeyguardDisplayManager#mPresentations
השתנה למערך שמכיל את כל חלונות הנעילה של כל המסכים המשניים. ב-KeyguardDisplayManager
יש גם מאזין לשינויים במסכים כדי להגיב לשינויים במסכים הזמינים ולאבטח את כל המסכים. חשוב לנעול באופן מיידי את כל המסכים המחוברים בכל שלב, כדי שמתקפות לא יוכלו לחלץ נתוני משתמשים גם אם יש להן גישה פיזית למכשיר.
חלון הנעילה מוצג בכל המסכים המשניים הציבוריים (ראו KeyguardDisplayManager#isKeyguardShowable()
). בעלי המסכים הפרטיים אחראים לאבטחת התוכן כשהמכשיר נעול.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[[["התוכן קל להבנה","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-27 (שעון UTC)."],[],[],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."]]