Android 11 引入了定義明確的用戶類型的概念,代表了 Android 多用戶功能允許的所有不同類型的用戶。借助此功能,OEM 可以自定義預定義的 AOSP 用戶類型並定義新的配置文件類型。有關詳細信息,請參閱有關用戶類型的部分。
本頁詳細介紹了自定義用戶類型所需的實施指南。
定制
為了自定義 AOSP 用戶類型並定義新的配置文件類型,OEM 必須使用所需的自定義覆蓋config_user_types.xml
。 config_user_types.xml
文件包含參考實現和可配置屬性的綜合列表。
在config_user_types.xml
文件中指定的任何屬性(例如default-restrictions
)都會覆蓋 AOSP 默認值。任何未指定的屬性都遵循 AOSP 默認值。更改大多數屬性(例如配置文件類型的徽章屬性)會影響該用戶類型的預先存在的用戶。但是,由於default-restrictions
僅在創建用戶時應用,因此修改此特定屬性(如果 OTA 更改config_user_types.xml
文件)對預先存在的用戶沒有影響。同樣,指定最大用戶數僅適用於創建新用戶時;現有用戶不會被刪除。
每種用戶類型的當前自定義限制如下:
- 配置文件可以完全定制和定義。在這種情況下,OEM 負責根據需要進行平台修改,以便在 Android 中支持其自定義配置文件,因為 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
:-
no_sms
的默認限制通過指定default-restrictions no_sms="true"
設置為 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
:通過 OTA 從<= 1
的user-type
版本升級設備時,將所有現有的android.os.usertype.profile.MANAGED
類型的託管配置文件轉換為新的com.example.profilename
類型。