लॉक स्क्रीन

AOSP में डिफ़ॉल्ट रूप से लॉक स्क्रीन की सुविधा उपलब्ध होती है. इसे अनलॉक करने के लिए, स्क्रीन पर कुछ विकल्प (कीगार्ड) दिखते हैं. ये विकल्प सिर्फ़ मुख्य डिसप्ले पर दिखते हैं. Android 9 (और उससे पहले के वर्शन) में, सेकंडरी स्क्रीन पर सिर्फ़ एक बाहरी डिसप्ले पर एक लॉकिंग विंडो की सुविधा काम करती थी. Android 10 में, लॉक स्क्रीन को सभी सार्वजनिक सेकंडरी डिसप्ले पर बड़ा किया गया है. लॉक स्क्रीन को इस्तेमाल करना आसान होता है. इसे दूसरी स्क्रीन से अनलॉक नहीं किया जा सकता.

पहली इमेज. सेकंडरी डिसप्ले पर लॉक स्क्रीन

डिवाइस बनाने वाली कंपनियां, सेकंडरी डिसप्ले के लिए अपनी लॉक स्क्रीन लागू कर सकती हैं. हालांकि, इसके लिए ज़रूरी है कि वे सुरक्षा से जुड़ी बुनियादी शर्तें पूरी करें. डिवाइस लॉक होने पर, सभी डिसप्ले पर जानकारी सुरक्षित तरीके से छिपाई जानी चाहिए. डिवाइस लॉक होने पर, कौनसा कॉन्टेंट दिखाया जाए या छिपाया जाए, इस बारे में कोई डिफ़ॉल्ट नीति या कंट्रोल नहीं है. इसलिए, पाबंदी वाला ऐक्सेस लागू करने का सबसे सुरक्षित तरीका यह है कि आप लॉक स्क्रीन के पीछे सारा कॉन्टेंट छिपाएं और विंडो लॉक करें. हालांकि, सिर्फ़ वे ऐप्लिकेशन अपवाद हैं जिन्होंने R.attr.showWhenLocked या Activity.setShowWhenLocked() तरीकों का इस्तेमाल करके, लॉक स्क्रीन पर सबसे ऊपर दिखाने के लिए साफ़ तौर पर ऑप्ट-इन किया है. ऐसा न करने पर, सार्वजनिक और निजी डिसप्ले से जानकारी लीक हो सकती है.

डिसप्ले को अलग-अलग स्थितियों (ON/OFF) में रखा जा सकता है. हालांकि, डिसप्ले के लिए 'लॉक किया गया' स्टेटस ग्लोबल होता है. किसी भी डिवाइस पर लागू करने के लिए, यह ज़रूरी है कि उपयोगकर्ता को यह पता चल सके कि डिवाइस लॉक है या अनलॉक. उदाहरण के लिए, पावर बटन दबाने से आम तौर पर मोबाइल डिवाइस लॉक हो जाता है. पावर बटन से सभी अंदरूनी और बाहरी स्क्रीन भी लॉक होनी चाहिए.

लॉकिंग विंडो का मालिकाना हक SystemUI के पास है. इसलिए, इसे निजी डिसप्ले पर नहीं रखा जाएगा. डिवाइस के लॉक होने पर, विंडो छिपाने और कॉन्टेंट को सुरक्षित रखने की ज़िम्मेदारी, निजी डिसप्ले के मालिकों की होती है. डिफ़ॉल्ट रूप से, सिस्टम में गतिविधि की जानकारी को सिर्फ़ निजी डिसप्ले पर दिखने से रोका जाता है. इसके लिए, गतिविधि की जानकारी दिखने की सेटिंग में बदलाव किया जाता है.

लागू करना

सेकंडरी डिसप्ले पर लॉक करने की विंडो, KeyguardDisplayManager में प्रज़ेंटेशन विंडो के तौर पर लागू की गई है. Android 10 ने KeyguardDisplayManager#mPresentations को ऐसा कलेक्शन बना दिया है जिसमें सभी सेकंडरी स्क्रीन के लिए सभी लॉक विंडो होंगी. KeyguardDisplayManager में डिसप्ले में हुए बदलावों को सुनने वाला एक लिसनर भी होता है. इससे, उपलब्ध डिसप्ले में हुए बदलावों का जवाब दिया जाता है और सभी स्क्रीन को सुरक्षित किया जाता है. कनेक्ट किए गए सभी डिसप्ले को किसी भी समय तुरंत लॉक करना ज़रूरी है, ताकि हमलावर डिवाइस का फ़िज़िकल ऐक्सेस होने पर भी, उपयोगकर्ता का डेटा ऐक्सेस न कर सकें.

लॉक करने की विंडो, सभी सार्वजनिक सेकंडरी डिसप्ले पर दिखती है (KeyguardDisplayManager#isKeyguardShowable() देखें). डिवाइस के लॉक होने पर, निजी डिसप्ले के मालिकों को कॉन्टेंट को सुरक्षित रखने की ज़िम्मेदारी होती है.