ใช้ประเภทผู้ใช้ที่กำหนดเอง

Android 11 ได้เปิดตัวแนวคิดประเภทผู้ใช้ที่ระบุไว้อย่างชัดเจน ซึ่งแสดงถึงผู้ใช้ประเภทต่างๆ ทั้งหมดที่ฟีเจอร์ผู้ใช้หลายคนของ Android อนุญาต ฟีเจอร์นี้ช่วยให้ 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 จะมีหน้าที่รับผิดชอบในการแก้ไขแพลตฟอร์มตามที่จําเป็นเพื่อให้ 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

    • ผู้ใช้ผู้ปกครองแต่ละรายจะมีโปรไฟล์ได้ 2 โปรไฟล์โดยการตั้งค่า 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 สำหรับ 2 โปรไฟล์ต่อผู้ใช้หลักต่อผู้ใช้ 1 ราย

  • change-user-type: แปลงโปรไฟล์ที่มีการจัดการที่มีอยู่ทั้งหมดของประเภท android.os.usertype.profile.MANAGED เป็น com.example.profilename ประเภทใหม่ เมื่ออัปเกรดอุปกรณ์จาก <= 1 เวอร์ชัน user-type ผ่าน OTA