ऐप्लिकेशन लॉक

ऐप्लिकेशन लॉक की सुविधा की मदद से, उपयोगकर्ता किसी ऐप्लिकेशन को यूनीक पिन कोड से सुरक्षित रख सकते हैं. इससे मेहमानों या सेकंडरी उपयोगकर्ताओं को संवेदनशील डेटा का ऐक्सेस नहीं मिलता. ऐसा खास तौर पर तब होता है, जब प्राइमरी उपयोगकर्ता कार में मौजूद न हो.

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

ऐप्लिकेशन लॉक की सुविधा, Android 14 (एपीआई लेवल 34) और इसके बाद के वर्शन पर, अलग से उपलब्ध है. इस ऐप्लिकेशन को, Android Automotive OS (AAOS) प्लैटफ़ॉर्म से अलग बनाया जा सकता है. हालांकि, आपको App Lock ऐप्लिकेशन को प्लैटफ़ॉर्म के हस्ताक्षर वाले ऐसे ऐप्लिकेशन के तौर पर डिप्लॉय करना होगा जिसे प्लैटफ़ॉर्म इमेज में शामिल किया गया हो.

ऐप्लिकेशन इंस्टॉल करते समय, उपयोगकर्ताओं को ऐप्लिकेशन लॉक करने की सुविधा के बारे में सूचना दी जाती है:

कोई ऐप्लिकेशन इंस्टॉल होने के बाद, ऐप्लिकेशन लॉक की सूचना दिखना

पहली इमेज. ऐप्लिकेशन इंस्टॉल होने के बाद, ऐप्लिकेशन लॉक करने की सूचना दिखती है.

ऐप्लिकेशन लॉक की सुविधा डिफ़ॉल्ट रूप से बंद होती है. इस सुविधा को चालू करने पर, उपयोगकर्ता को पिन सेट करने के लिए कहा जाता है. इस पिन की ज़रूरत, App Lock की सुविधा से सुरक्षित किए गए किसी भी ऐप्लिकेशन को ऐक्सेस करने के लिए होती है:

ऐप्लिकेशन लॉक करने की
सेटिंग

दूसरी इमेज. ऐप्लिकेशन लॉक की सेटिंग.

लॉक किया गया ऐप्लिकेशन खोलने की कोशिश करने पर, उपयोगकर्ता को ऐप्लिकेशन लॉक का पिन कोड डालने के लिए कहा जाता है:

लॉक किया गया ऐप्लिकेशन खोलने की कोशिश करने पर, ऐप्लिकेशन लॉक करने का अनुरोध

तीसरी इमेज. लॉक किया गया ऐप्लिकेशन खोलने की कोशिश करने पर, ऐप्लिकेशन लॉक करने का अनुरोध करने वाला प्रॉम्प्ट.

ऐप्लिकेशन लॉक की सुविधा कॉन्फ़िगर करना

ऐप्लिकेशन कॉन्फ़िगरेशन लागू करने के लिए, res/values/config.xml में बदलाव करें:

<resources>
    <!--A customizable list of system packages that appear in the App Lock settings. -->
    <string-array name="system_lockable_packages">
        <item>com.android.car.calendar</item>
    </string-array>

    <!-- Config for allowing locking of media apps. -->
    <bool name="config_enableMediaAppsLocking">true</bool>

    <!-- Default account type used for recovering pin. -->
    <string name="config_recoveryAccountType" translatable="false">com.google</string>
</resources>

लॉक किए जा सकने वाले ऐप्लिकेशन को पसंद के मुताबिक बनाना

डिफ़ॉल्ट रूप से, सिस्टम ऐप्लिकेशन को लॉक नहीं किया जा सकता. system_lockable_packages कॉन्फ़िगरेशन का इस्तेमाल करके, उन सिस्टम ऐप्लिकेशन के बारे में बताया जा सकता है जिन्हें लॉक किया जा सकता है.

सेटिंग, नेविगेशन ऐप्लिकेशन, और वॉइस असिस्टेंट जैसे मुख्य ऐप्लिकेशन को लॉक नहीं किया जा सकता. ऐसा इसलिए, क्योंकि इससे सिस्टम के काम करने के तरीके पर असर पड़ सकता है.

किसी सिस्टम ऐप्लिकेशन के लिए, ऐप्लिकेशन लॉक करने की सुविधा चालू करने के लिए, system_lockable_packages सूची का इस्तेमाल करें:

<!-- List of system packages that appear in the App Lock settings. -->
<string-array name="system_lockable_packages">
    <item>com.android.car.calendar</item>
</string-array>

मीडिया के निलंबन को कॉन्फ़िगर करना

अगर प्लैटफ़ॉर्म पर Car-apps-release 17 या इसके बाद के वर्शन वाला Car Media App काम करता है, तो मीडिया ऐप्लिकेशन डिफ़ॉल्ट रूप से लॉक किए जा सकते हैं. अगर आपके ऐप्लिकेशन में Car-apps-release 17 या इसके बाद के वर्शन के साथ काम करने की सुविधा नहीं है, तो मीडिया ऐप्लिकेशन को लॉक करने की सुविधा बंद की जा सकती है. इसके लिए:

<!-- Config for allowing locking of media apps. -->
<bool name="config_enableMediaAppsLocking">false</bool>

खाता वापस पाने की प्रोसेस सेट अप करना

ऐसा हो सकता है कि उपयोगकर्ता, ऐप्लिकेशन लॉक करने का पिन भूल जाएं. पिन वापस पाने के लिए इस्तेमाल किए जाने वाले खाते के टाइप को पसंद के मुताबिक बनाने के लिए, config_recoveryAccountType का इस्तेमाल करें.

<!-- Default account type used for recovering pin. -->
<string name="config_recoveryAccountType" translatable="false">com.google</string>

जब कोई उपयोगकर्ता, config_recoveryAccountType से मेल खाने वाले खाते से पुष्टि करता है, तो ऐप्लिकेशन लॉक सुविधा, पिन को रीसेट कर देती है और निजी ऐप्लिकेशन का डेटा मिटा देती है.

रेफ़रंस कोड का स्टाइल तय करना

रेफ़रंस कोड को पसंद के मुताबिक बनाने के लिए, रनटाइम रिसोर्स ओवरले (आरआरओ) का इस्तेमाल करके SensitiveAppLockOverlayableResources को ओवरले करें.

ऐप्लिकेशन लॉक, कार की यूज़र इंटरफ़ेस (यूआई) लाइब्रेरी का इस्तेमाल करता है. इसलिए, कार की यूज़र इंटरफ़ेस (यूआई) लाइब्रेरी के मौजूदा RRO, ऐप्लिकेशन लॉक पर भी लागू किए जा सकते हैं.

पिन पैड की कुंजियों में, styles.xml में तय की गई स्टाइल का इस्तेमाल किया जाता है:

<style name="PinPadKey" parent="Widget.CarUi.Button">
    <item  name="android:textSize">@dimen/pin_pad_key_text_size</item>
    <item name="android:layout_height">@dimen/pin_pad_key_diameter</item>
    <item name="android:layout_width">@dimen/pin_pad_key_diameter</item>
    …
</style>

पिन पैड के डाइमेंशन भी तय किए जा सकते हैं:

<resources>
  <!-- Default dimensions for PIN pad view -->
  <dimen name="pin_pad_title_text_size">44sp</dimen>
  <dimen name="pin_pad_subtitle_text_size">32sp</dimen>
  <dimen name="pin_pad_key_diameter">96dp</dimen>
  <dimen name="pin_pad_key_text_size">32sp</dimen>
  <dimen name="pin_pad_key_padding">0dp</dimen>
  <dimen name="pin_pad_row_spacing">10dp</dimen>
  <dimen name="pin_pad_col_spacing">12dp</dimen>
</resources>

सस्पेंड-टू-रैम सुविधा काम करती हो

सस्पेंड-टू-रैम की सुविधा के लिए, आपको config_earlyStartupServices में ऐप लॉक की सेवा जोड़नी होगी:

<string-array translatable="false" name="config_earlyStartupServices">
    <!-- App Lock Persistent Background Service -->
    <item>com.android.car.sensitiveapplock/.service.PersistentBackgroundService#bind=bind,user=foreground,trigger=userUnlocked</item>
</string-array>

बिल्ड कॉन्फ़िगरेशन

ऐप्लिकेशन लॉक करने की सुविधा के लिए, सिस्टम के खास अधिकारों की ज़रूरत होती है. जिन प्लैटफ़ॉर्म पर ऐप्लिकेशन लॉक करने की सुविधा काम करती है उन्हें सिस्टम की सुविधा com.android.car.sensitive_app_lock के बारे में भी बताना होगा.

com.android.car.sensitiveapplock.xml में सुविधा का एलान और अनुमतियां जोड़ें:

<permissions>
    <feature name="com.android.car.sensitive_app_lock"/>

    <privapp-permissions package="com.android.car.sensitiveapplock">
        <permission name="android.permission.GET_ACCOUNTS_PRIVILEGED" />
        <permission name="android.permission.QUERY_USERS" />
        <permission name="android.permission.MEDIA_CONTENT_CONTROL" />
        <permission name="android.car.permission.CAR_POWER" />
        <permission name="android.permission.POST_NOTIFICATIONS" />
    </privapp-permissions>
</permissions>

ऐप्लिकेशन लॉक को Android.bp फ़ाइल में, साइन किए गए सिस्टम ऐप्लिकेशन के तौर पर इंपोर्ट किया जाना चाहिए:

android_app_import {
    name: "AppLock",
    apk: "AppLock.apk",
    certificate: "platform",
    privileged: true,
    required: [
        "privapp-com.android.car.sensitiveapplock",
    ],
    optional_uses_libs: [
        "androidx.window.extensions",
        "androidx.window.sidecar",
        "com.android.oem.tokens", /* For Android 16+ */
    ],
}

prebuilt_etc {
    name: "privapp-com.android.car.sensitiveapplock",
    sub_dir: "permissions",
    src: "com.android.car.sensitiveapplock.xml",
    filename_from_src: true,
}

हेडलेस सिस्टम यूज़र मोड (एचएसयूएम) और मेहमान के तौर पर डिवाइस इस्तेमाल करने वाले लोगों के लिए, ऐप्लिकेशन लॉक की सुविधा उपलब्ध नहीं है. इसलिए, आपको सिर्फ़ सेकंडरी प्रोफ़ाइलों में ऐप्लिकेशन लॉक की सुविधा चालू करनी होगी. इस कॉन्फ़िगरेशन का इस्तेमाल करके, दूसरे उपयोगकर्ताओं के लिए ऐप्लिकेशन चालू करें.

उदाहरण के लिए, preinstalled-packages.xml में:


<config>
        <!-- Config for the Sensitive App Lock app -->
    <install-in-user-type package="com.android.car.sensitiveapplock">
        <!-- Sensitive App Lock is only available to secondary users. Do not install app in Guest users. -->
        <install-in user-type="android.os.usertype.full.SECONDARY" />
    </install-in-user-type>
</config>