लॉक स्क्रीन को अनलॉक करने की सुविधा (कीगार्ड) के साथ एओएसपी का डिफ़ॉल्ट कार्यान्वयन केवल प्राथमिक डिस्प्ले पर दिखाई देता है। एंड्रॉइड 9 (और उससे नीचे) में, सेकेंडरी स्क्रीन एकल बाहरी डिस्प्ले पर सिंगल लॉकिंग विंडो का समर्थन करती हैं। एंड्रॉइड 10 में, लॉक स्क्रीन को सभी सार्वजनिक सेकेंडरी डिस्प्ले तक विस्तारित किया गया है। लॉक स्क्रीन सरल बनी हुई है और सेकेंडरी स्क्रीन से अनलॉक करने का समर्थन नहीं करती है।
चित्र 1. सेकेंडरी डिस्प्ले पर लॉक स्क्रीन
डिवाइस निर्माता अपनी लॉक स्क्रीन को सेकेंडरी डिस्प्ले के लिए लागू कर सकते हैं, बशर्ते मूलभूत सुरक्षा आवश्यकता पूरी हो। जब डिवाइस लॉक हो, तो सभी डिस्प्ले पर जानकारी सुरक्षित रूप से छिपाई जानी चाहिए। डिवाइस लॉक होने पर कौन सी सामग्री दिखायी या छिपायी जानी चाहिए, इस पर कोई अंतर्निहित नीति या नियंत्रण नहीं है। इसलिए, प्रतिबंधित पहुंच को लागू करने का एकमात्र सुरक्षित तरीका सभी सामग्री को लॉक स्क्रीन और लॉकिंग विंडो के पीछे छिपाना है। एकमात्र अपवाद वे ऐप्स हैं जिन्होंने स्पष्ट रूप से R.attr.showWhenLocked
या Activity.setShowWhenLocked()
तरीकों का उपयोग करके लॉक स्क्रीन के शीर्ष पर प्रदर्शित होने का विकल्प चुना है। अन्यथा, सार्वजनिक और निजी प्रदर्शनों से जानकारी लीक होने की प्रबल संभावना है।
जबकि डिस्प्ले को विभिन्न स्थितियों ( ON
/ OFF
) में रखा जा सकता है, लॉक की गई स्थिति सभी डिस्प्ले के लिए वैश्विक है। किसी भी डिवाइस कार्यान्वयन की तरह, जब कोई डिवाइस लॉक (या अनलॉक) हो तो यह उपयोगकर्ता को स्पष्ट होना चाहिए। उदाहरण के लिए, पावर बटन दबाने से आमतौर पर मोबाइल डिवाइस लॉक हो जाता है। पावर बटन को सभी आंतरिक और बाहरी स्क्रीन को भी लॉक करना चाहिए।
चूँकि लॉकिंग विंडो SystemUI के स्वामित्व में है, इसलिए इसे निजी डिस्प्ले पर नहीं रखा जाएगा। निजी डिस्प्ले के मालिक डिवाइस लॉक होने पर विंडोज़ को छिपाने और सामग्री की सुरक्षा के लिए जिम्मेदार होते हैं। डिफ़ॉल्ट सिस्टम कार्यान्वयन केवल दृश्यता को बदलकर निजी डिस्प्ले पर गतिविधियों को छुपाता है।
कार्यान्वयन
सेकेंडरी डिस्प्ले पर लॉकिंग विंडो को KeyguardDisplayManager
में प्रेजेंटेशन विंडो के रूप में कार्यान्वित किया जाता है। एंड्रॉइड 10 ने KeyguardDisplayManager#mPresentations
एक ऐसे ऐरे में बदल दिया है जो सभी सेकेंडरी स्क्रीन के लिए सभी लॉकिंग विंडो रखता है। KeyguardDisplayManager
पास उपलब्ध डिस्प्ले में परिवर्तनों का जवाब देने और सभी स्क्रीन को सुरक्षित करने के लिए एक डिस्प्ले-चेंज श्रोता भी है। किसी भी समय सभी कनेक्टेड डिस्प्ले को तुरंत लॉक करना महत्वपूर्ण है ताकि हमलावर डिवाइस तक भौतिक पहुंच के साथ भी उपयोगकर्ता डेटा न निकाल सकें।
लॉकिंग विंडो सभी सार्वजनिक सेकेंडरी डिस्प्ले पर प्रदर्शित होती है ( KeyguardDisplayManager#isKeyguardShowable()
देखें)। डिवाइस लॉक होने पर सामग्री की सुरक्षा के लिए निजी डिस्प्ले के मालिक जिम्मेदार होते हैं।