कस्टम उपयोगकर्ता टाइप लागू करना

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

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

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

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

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

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

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

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