מסך נעילה

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

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

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

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

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

הטמעה

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

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