מסך נעילה

ההטמעה שמוגדרת כברירת מחדל ב-AOSP של מסך הנעילה עם אפשרויות לביטול הנעילה (keyguard) מופיעה רק במסך הראשי. ב-Android 9 (ובגרסאות קודמות), מסכים משניים תמכו בחלון נעילה יחיד במסך חיצוני יחיד. ב-Android 10, מסך הנעילה מורחב לכל המסכים המשניים הציבוריים. מסך הנעילה נשאר פשוט ואי אפשר לבטל את הנעילה ממסכים משניים.

איור 1. מסך הנעילה במסך המשני

יצרני מכשירים יכולים להטמיע את נעילת המסך שלהם במסכים משניים, בתנאי שהדרישה הבסיסית לאבטחה מתקיימת. כשהמכשיר נעול, המידע צריך להיות מוסתר בצורה מאובטחת בכל המסכים. אין מדיניות או אמצעי בקרה מובנים שקובעים איזה תוכן יוצג או יוסתר כשהמכשיר נעול. לכן, הדרך המאובטחת היחידה להטמיע גישה מוגבלת היא להסתיר את כל התוכן מאחורי מסך הנעילה וחלונות הנעילה. החריגים היחידים הם אפליקציות שהביעו הסכמה מפורשת להצגה מעל מסך הנעילה באמצעות השיטות R.attr.showWhenLocked או Activity.setShowWhenLocked(). אחרת, יש סיכון גבוה לדליפת מידע ממסכים ציבוריים ופרטיים.

אפשר להציב את התצוגות במצבים שונים (ON/OFF), אבל המצב הנעול הוא גלובלי לכל התצוגות. כמו בכל הטמעה של מכשיר, צריך להיות ברור למשתמש מתי המכשיר נעול (או לא נעול). לדוגמה, לחיצה על לחצן ההפעלה בדרך כלל נועלת מכשיר נייד. לחצן ההפעלה צריך גם לנעול את כל המסכים הפנימיים והחיצוניים.

חלון הנעילה שייך ל-SystemUI, ולכן הוא לא יוצג במסכים פרטיים. הבעלים של המסכים הפרטיים אחראים להסתיר את החלונות ולהגן על התוכן כשהמכשיר נעול. ההטמעה של המערכת כברירת מחדל רק מסתירה פעילויות בתצוגות פרטיות על ידי שינוי הרשאות הגישה.

הטמעה

חלון הנעילה במסכים המשניים מיושם כחלון מצגת ב-KeyguardDisplayManager. ב-Android 10,‏ KeyguardDisplayManager#mPresentations השתנה למערך שמכיל את כל חלונות הנעילה של כל המסכים המשניים. בנוסף, ל-KeyguardDisplayManager יש מאזין לשינויים בתצוגה כדי להגיב לשינויים במסכים הזמינים, והוא מאבטח את כל המסכים. חשוב לנעול מיד את כל המסכים המחוברים בכל רגע נתון, כדי שתוקפים לא יוכלו לחלץ נתוני משתמשים גם אם יש להם גישה פיזית למכשיר.

חלון הנעילה מוצג בכל המסכים המשניים הציבוריים (ראו KeyguardDisplayManager#isKeyguardShowable()). בעלי מסכים פרטיים אחראים לאבטחת התוכן כשהמכשיר נעול.