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
:- 透過指定
default-restrictions no_sms="true"
將no_sms
的預設限制設為 true 。
- 透過指定
設定檔使用者
android.os.usertype.profile.MANAGED
:- 透過設定
max-allowed-per-parent='2'
允許每個父用戶使用兩個設定檔。 - 使用
icon-badge
、badge-plain
、badge-no-background
、badge-labels
、badge-colors
將徽章屬性設定為所需的值。 - 透過指定 default-restrictions
default-restrictions no_sms="true" no_outgoing_calls="true"
將no_sms
和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
類型。