लॉक स्क्रीन

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

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

चित्र 1. सेकेंडरी डिस्प्ले पर लॉक स्क्रीन

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

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

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

कार्यान्वयन

द्वितीयक डिस्प्ले पर लॉकिंग विंडो KeyguardDisplayManager में प्रेजेंटेशन विंडो के रूप में कार्यान्वित की जाती है। Android 10 ने KeyguardDisplayManager#mPresentations को एक सरणी में बदल दिया है जिसमें सभी सेकेंडरी स्क्रीन के लिए सभी लॉकिंग विंडो हैं। KeyguardDisplayManager के पास उपलब्ध डिस्प्ले में परिवर्तनों का जवाब देने और सभी स्क्रीन को सुरक्षित करने के लिए एक डिस्प्ले-चेंज श्रोता भी है। किसी भी समय सभी कनेक्टेड डिस्प्ले को तुरंत लॉक करना महत्वपूर्ण है ताकि हमलावर डिवाइस तक भौतिक पहुंच के साथ भी उपयोगकर्ता डेटा नहीं निकाल सकें।

लॉकिंग विंडो सभी सार्वजनिक माध्यमिक डिस्प्ले पर प्रदर्शित होती है (देखें KeyguardDisplayManager#isKeyguardShowable() )। डिवाइस के लॉक होने पर सामग्री को सुरक्षित रखने के लिए निजी डिस्प्ले के मालिक जिम्मेदार होते हैं।