Android 11 đã đưa ra khái niệm về các loại người dùng được xác định rõ ràng, đại diện cho tất cả các loại người dùng khác nhau được tính năng Nhiều người dùng của Android cho phép. Với tính năng này, OEM có thể tùy chỉnh các loại người dùng AOSP được xác định trước và xác định các loại hồ sơ mới. Xem phần về loại người dùng để biết thêm thông tin.
Trang này trình bày chi tiết các nguyên tắc triển khai cần thiết để tùy chỉnh loại người dùng.
Tùy chỉnh
Để tùy chỉnh loại người dùng AOSP và xác định loại hồ sơ mới, OEM phải phủ config_user_types.xml
với các tùy chỉnh mong muốn. Tệp config_user_types.xml
chứa cách triển khai tham chiếu và danh sách đầy đủ các thuộc tính có thể định cấu hình.
Bất kỳ thuộc tính nào, chẳng hạn như default-restrictions
, được chỉ định trong tệp config_user_types.xml
, sẽ ghi đè mặc định AOSP. Bất kỳ thuộc tính nào không được chỉ định sẽ tuân theo mặc định AOSP. Việc thay đổi hầu hết các thuộc tính, chẳng hạn như thuộc tính huy hiệu của loại hồ sơ, sẽ ảnh hưởng đến những người dùng hiện có của loại người dùng đó. Tuy nhiên, vì default-restrictions
chỉ được áp dụng tại thời điểm người dùng được tạo nên việc sửa đổi thuộc tính cụ thể này, trong trường hợp tệp config_user_types.xml
bị OTA thay đổi, sẽ không ảnh hưởng đến người dùng hiện tại. Tương tự, việc chỉ định số lượng người dùng tối đa chỉ áp dụng khi tạo người dùng mới; người dùng hiện tại không bị xóa.
Các hạn chế tùy chỉnh hiện tại cho từng loại người dùng như sau:
- Hồ sơ có thể được tùy chỉnh và xác định đầy đủ. Trong trường hợp này, OEM chịu trách nhiệm thực hiện các sửa đổi nền tảng theo yêu cầu để hồ sơ tùy chỉnh của họ được hỗ trợ trong Android, vì AOSP chỉ hỗ trợ các loại người dùng AOSP được xác định trước.
- Không thể xác định người dùng đầy đủ và chỉ có thể tùy chỉnh thuộc tính
default-restrictions
của họ. - Người dùng hệ thống không thể được tùy chỉnh bằng cơ chế này. Trong trường hợp này,
default-restrictions
có thể được đặt bằng cách sử dụngcom.android.internal.R.array.config_defaultFirstUserRestrictions
. Xemconfig.xml
để biết thêm thông tin.
Sửa đổi loại người dùng hiện có
Bạn có thể tùy chỉnh các loại người dùng hiện tại bằng cách ghi đè các thuộc tính của họ như minh họa trong mẫu mã sau.
<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>
Trong mẫu mã này, các loại người dùng AOSP sau được tùy chỉnh bằng cách sửa đổi các thuộc tính được hỗ trợ.
Người dùng đầy đủ
android.os.usertype.full.SECONDARY
:- Giới hạn mặc định của
no_sms
được đặt thành true bằng cách chỉ địnhdefault-restrictions no_sms="true"
.
- Giới hạn mặc định của
Hồ sơ người dùng
android.os.usertype.profile.MANAGED
:- Hai hồ sơ được phép cho mỗi người dùng gốc bằng cách đặt
max-allowed-per-parent='2'
. - Các thuộc tính huy hiệu được đặt thành các giá trị mong muốn bằng cách sử dụng
icon-badge
,badge-plain
,badge-no-background
,badge-labels
,badge-colors
. - Các hạn chế mặc định của
no_sms
vàno_outgoing_calls
được đặt thành true bằng cách chỉ địnhdefault-restrictions no_sms="true" no_outgoing_calls="true"
.
- Hai hồ sơ được phép cho mỗi người dùng gốc bằng cách đặt
Tham khảo UserTypeFactory.java
và UserTypeDetails.java
để biết ý nghĩa và giá trị mặc định của các thuộc tính này.
Xác định loại hồ sơ tùy chỉnh
Mẫu mã sau đây cho biết cách xác định các loại hồ sơ tùy chỉnh, mới.
<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>
Trong mẫu mã này, loại hồ sơ com.example.profilename
được xác định như sau:
max-allowed-per-parents
được đặt thành2
cho hai hồ sơ cho mỗi người dùng gốc.change-user-type
: chuyển đổi tất cả hồ sơ được quản lý hiện có thuộc loạiandroid.os.usertype.profile.MANAGED
sang loạicom.example.profilename
mới khi nâng cấp thiết bị từ phiên bảnuser-type
<= 1
thông qua OTA.