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
จะใช้เฉพาะในเวลาที่ผู้ใช้ถูกสร้างขึ้น การแก้ไขแอตทริบิวต์เฉพาะนี้ ในกรณีที่ไฟล์ config_user_types.xml
ถูกเปลี่ยนแปลงโดย OTA จะไม่มีผลกระทบต่อผู้ใช้ที่มีอยู่แล้ว ในทำนองเดียวกัน การระบุจำนวนผู้ใช้สูงสุดจะมีผลเฉพาะเมื่อสร้างผู้ใช้ใหม่เท่านั้น ผู้ใช้ที่มีอยู่จะไม่ถูกลบออก
ข้อจำกัดการปรับแต่งปัจจุบันสำหรับผู้ใช้แต่ละประเภทมีดังนี้:
- โปรไฟล์สามารถปรับแต่งและกำหนดได้อย่างเต็มที่ ในกรณีนี้ 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
: แปลงโปรไฟล์ที่ได้รับการจัดการที่มีอยู่ ทั้งหมด ประเภทandroid.os.usertype.profile.MANAGED
เป็นประเภทcom.example.profilename
ใหม่ เมื่ออัปเกรดอุปกรณ์จากเวอร์ชันuser-type
<= 1
ถึง OTA