स्‍क्रीन लॉक करें

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

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

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

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

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

लागू करना

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

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