Android 11 導入了明確定義的使用者類型概念,代表 Android 多使用者功能允許的所有不同類型使用者。透過這項功能,原始設備製造商可以自訂預先定義的 AOSP 使用者類型,並定義新的設定檔類型。詳情請參閱「使用者類型」一節。
本頁詳細說明自訂使用者類型時所需的導入規範。
自訂
如要自訂 AOSP 使用者類型及定義新的設定檔類型,原始設備製造商必須使用偏好的自訂項目覆寫 config_user_types.xml。config_user_types.xml 檔案包含參考實作項目,以及可設定屬性的完整清單。
config_user_types.xml 檔案中指定的任何屬性 (例如 default-restrictions) 都會覆寫 Android 開放原始碼計畫預設值。如果未指定任何屬性,系統會採用 AOSP 預設值。變更大多數屬性 (例如設定檔類型的徽章屬性) 時,會影響該使用者類型的現有使用者。不過,由於 default-restrictions 只會在建立使用者時套用,因此如果 config_user_types.xml 檔案透過 OTA 變更,修改這項特定屬性不會對現有使用者造成影響。同樣地,指定使用者人數上限只適用於建立新使用者,現有使用者不會遭到移除。
目前各使用者類型的自訂限制如下:
- 您可以完全自訂及定義設定檔。在這種情況下,由於 AOSP 只支援預先定義的 AOSP 使用者類型,因此 OEM 必須視需要修改平台,才能在 Android 中支援自訂設定檔。
- 無法定義完整使用者,只能自訂其
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 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類型。