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