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

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

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

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

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

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

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

  • प्रोफ़ाइलों को पूरी तरह से पसंद के मुताबिक बनाया जा सकता है और उन्हें तय किया जा सकता है. इस मामले में, OEM की यह ज़िम्मेदारी है कि वह Android में अपनी कस्टम प्रोफ़ाइल के लिए, प्लैटफ़ॉर्म में ज़रूरी बदलाव करे. ऐसा इसलिए, क्योंकि AOSP सिर्फ़ पहले से तय किए गए AOSP उपयोगकर्ता टाइप के साथ काम करता है.
  • फ़ुल यूज़र को तय नहीं किया जा सकता. सिर्फ़ उनके default-restrictions एट्रिब्यूट को पसंद के मुताबिक बनाया जा सकता है.
  • इस तरीके का इस्तेमाल करके, सिस्टम उपयोगकर्ता को पसंद के मुताबिक नहीं बनाया जा सकता. इस मामले में, default-restrictions को com.android.internal.R.array.config_defaultFirstUserRestrictions का इस्तेमाल करके सेट किया जा सकता है. ज़्यादा जानकारी के लिए, 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: डिवाइस को user-type वर्शन से <= 1 के नए वर्शन पर OTA के ज़रिए अपग्रेड करने पर, android.os.usertype.profile.MANAGED टाइप की सभी मौजूदा मैनेज की गई प्रोफ़ाइलों को com.example.profilename टाइप में बदल देता है.