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"
- ผู้ใช้ผู้ปกครองแต่ละรายจะมีโปรไฟล์ได้ 2 โปรไฟล์โดยการตั้งค่า
ดูความหมายและค่าเริ่มต้นของพร็อพเพอร์ตี้เหล่านี้ได้ที่ 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