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

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

यह पृष्ठ उपयोगकर्ता प्रकारों को अनुकूलित करने के लिए आवश्यक कार्यान्वयन दिशानिर्देशों का विवरण देता है।

अनुकूलन

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

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

प्रत्येक उपयोगकर्ता प्रकार के लिए वर्तमान अनुकूलन प्रतिबंध इस प्रकार हैं:

  • प्रोफाइल को पूरी तरह से अनुकूलित और परिभाषित किया जा सकता है। इस मामले में, एंड्रॉइड में समर्थित होने के लिए उनके कस्टम प्रोफ़ाइल के लिए आवश्यक प्लेटफ़ॉर्म संशोधन करने के लिए OEM जिम्मेदार है, क्योंकि 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 :

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