उपयोगकर्ता के लिए पसंद के मुताबिक टाइप लागू करना

Android 11 में, उपयोगकर्ता के टाइप को अच्छी तरह से परिभाषित करने का कॉन्सेप्ट पेश किया गया है. इससे, Android की डिवाइस के एक से ज़्यादा उपयोगकर्ता सुविधा के तहत अनुमति पा चुके सभी उपयोगकर्ताओं के टाइप के बारे में पता चलता है. इस सुविधा की मदद से, ओईएम पहले से तय किए गए AOSP के उपयोगकर्ता टाइप को पसंद के मुताबिक बना सकते हैं. साथ ही, नए प्रोफ़ाइल टाइप तय कर सकते हैं. ज़्यादा जानकारी के लिए, उपयोगकर्ता के टाइप सेक्शन देखें.

इस पेज पर, उपयोगकर्ता टाइप को पसंद के मुताबिक बनाने के लिए, लागू करने से जुड़े ज़रूरी दिशा-निर्देशों के बारे में जानकारी दी गई है.

पसंद के मुताबिक बनाएं

AOSP के उपयोगकर्ता टाइप को पसंद के मुताबिक बनाने और नई प्रोफ़ाइल टाइप तय करने के लिए, OEM को अपनी पसंद के मुताबिक बनाए गए config_user_types.xml को ओवरले करना होगा. config_user_types.xml फ़ाइल में, रेफ़रंस लागू करने की जानकारी और कॉन्फ़िगर किए जा सकने वाले एट्रिब्यूट की पूरी सूची होती है.

default-restrictions फ़ाइल में तय किया गया कोई भी एट्रिब्यूट, जैसे कि default-restrictions, AOSP के डिफ़ॉल्ट एट्रिब्यूट को बदल देता है.config_user_types.xml जिस एट्रिब्यूट के लिए कोई वैल्यू नहीं दी गई है वह AOSP के डिफ़ॉल्ट सेटिंग के मुताबिक काम करता है. ज़्यादातर एट्रिब्यूट में बदलाव करने पर, उस उपयोगकर्ता टाइप के पहले से मौजूद उपयोगकर्ताओं पर असर पड़ता है. जैसे, प्रोफ़ाइल टाइप के बैज एट्रिब्यूट. हालांकि, default-restrictions सिर्फ़ उपयोगकर्ता के खाते बनाते समय लागू होते हैं. इसलिए, अगर OTA config_user_types.xml फ़ाइल में बदलाव करता है, तो इस एट्रिब्यूट में बदलाव करने से पहले से मौजूद उपयोगकर्ताओं पर कोई असर नहीं पड़ता. इसी तरह, उपयोगकर्ताओं की ज़्यादा से ज़्यादा संख्या तय करने का विकल्प सिर्फ़ नए उपयोगकर्ताओं को बनाते समय लागू होता है. मौजूदा उपयोगकर्ताओं को नहीं हटाया जाता.

हर उपयोगकर्ता टाइप के लिए, पसंद के मुताबिक बनाने से जुड़ी मौजूदा पाबंदियां यहां दी गई हैं:

  • प्रोफ़ाइलों को पूरी तरह से पसंद के मुताबिक बनाया जा सकता है और उन्हें तय किया जा सकता है. इस मामले में, OEM की यह ज़िम्मेदारी है कि वह Android में अपनी कस्टम प्रोफ़ाइल के साथ काम करने के लिए, प्लैटफ़ॉर्म में ज़रूरी बदलाव करे. ऐसा इसलिए, क्योंकि AOSP सिर्फ़ पहले से तय किए गए AOSP उपयोगकर्ता टाइप के साथ काम करता है.
  • फ़ुल उपयोगकर्ताओं को तय नहीं किया जा सकता. सिर्फ़ उनके default-restrictions एट्रिब्यूट को पसंद के मुताबिक बनाया जा सकता है.
  • इस तरीके का इस्तेमाल करके, सिस्टम उपयोगकर्ता को पसंद के मुताबिक नहीं बनाया जा सकता. इस मामले में, com.android.internal.R.array.config_defaultFirstUserRestrictions का इस्तेमाल करके default-restrictions सेट किया जा सकता है. ज़्यादा जानकारी के लिए, config.xml पर जाएं.

मौजूदा उपयोगकर्ता टाइप में बदलाव करना

उपयोगकर्ता के मौजूदा टाइप को, उनके एट्रिब्यूट को बदलकर पसंद के मुताबिक बनाया जा सकता है. इसके लिए, यहां दिए गए कोड सैंपल का इस्तेमाल करें:

<user-types version="0">
    <full-type name="android.os.usertype.full.SECONDARY" >
        <default-restrictions no_sms="true" />
    </full-type>

    <profile-type
        name='android.os.usertype.profile.MANAGED'
        max-allowed-per-parent='2'
        icon-badge='@android:drawable/ic_corp_icon_badge_case'
        badge-plain='@android:drawable/ic_corp_badge_case'
        badge-no-background='@android:drawable/ic_corp_badge_no_background' >
        <badge-labels>
            <item res='@android:string/managed_profile_label_badge' />
            <item res='@android:string/managed_profile_label_badge_2' />
        </badge-labels>
        <badge-colors>
            <item res='@android:color/profile_badge_1' />
            <item res='@android:color/profile_badge_2' />
        </badge-colors>
        <default-restrictions no_sms="true" no_outgoing_calls="true" />
    </profile-type>
</user-types>

इस कोड सैंपल में, AOSP के इन उपयोगकर्ता टाइप को पसंद के मुताबिक बनाया गया है. इसके लिए, काम करने वाली प्रॉपर्टी में बदलाव किया गया है:

  • सभी अधिकार वाले उपयोगकर्ता android.os.usertype.full.SECONDARY:

    • no_sms के लिए डिफ़ॉल्ट पाबंदी को सही पर सेट किया गया है. इसके लिए, default-restrictions no_sms="true" को तय किया गया है.
  • प्रोफ़ाइल का उपयोगकर्ता android.os.usertype.profile.MANAGED:

    • max-allowed-per-parent='2' को सेट करके, माता-पिता के हर उपयोगकर्ता के लिए दो प्रोफ़ाइलें बनाई जा सकती हैं.
    • बैज एट्रिब्यूट को icon-badge, badge-plain, badge-no-background, badge-labels, badge-colors का इस्तेमाल करके, चुनी गई वैल्यू पर सेट किया जाता है.
    • no_sms और no_outgoing_calls की डिफ़ॉल्ट पाबंदियां, default-restrictions no_sms="true" no_outgoing_calls="true" को तय करके सही पर सेट की जाती हैं.

इन प्रॉपर्टी के मतलब और डिफ़ॉल्ट वैल्यू के बारे में जानने के लिए, UserTypeFactory.java और UserTypeDetails.java एट्रिब्यूट के बारे में पढ़ें.

कस्टम प्रोफ़ाइल टाइप तय करना

नीचे दिए गए कोड सैंपल में, नए और कस्टम प्रोफ़ाइल टाइप को तय करने का तरीका बताया गया है:

<user-types version="1">
    <profile-type
        name="com.example.profilename"
        max-allowed-per-parent="2" />

    <change-user-type
        from="android.os.usertype.profile.MANAGED"
        to="com.example.profilename"
        whenVersionLeq="1" />
</user-types>

इस कोड सैंपल में, com.example.profilename प्रोफ़ाइल टाइप को इस तरह से तय किया गया है:

  • max-allowed-per-parents को माता-पिता के तौर पर इस्तेमाल करने वाले हर व्यक्ति की दो प्रोफ़ाइलों के लिए 2 पर सेट किया जाता है.

  • change-user-type: डिवाइस को <= 1 के user-type वर्शन से OTA के ज़रिए अपग्रेड करने पर, android.os.usertype.profile.MANAGED टाइप की सभी मौजूदा मैनेज की गई प्रोफ़ाइलों को नए com.example.profilename टाइप में बदलता है.