Android 11 導入了定義明確使用者類型的概念,代表 Android 多使用者功能允許的所有不同類型使用者。有了這項功能,原始設備製造商 (OEM) 便可自訂預先定義的 Android 開放原始碼計畫使用者類型,並定義新的設定檔類型。詳情請參閱「使用者類型」一節。
本頁詳述自訂使用者類型所需的導入指南。
個人化
為了自訂 Android 開放原始碼計畫使用者類型並定義新的設定檔類型,原始設備製造商 (OEM) 必須將 config_user_types.xml
與所需的自訂項目重疊。config_user_types.xml
檔案包含參考實作以及可設定屬性的完整清單。
凡是在 config_user_types.xml
檔案中指定的屬性 (例如 default-restrictions
),都會覆寫 Android 開放原始碼計畫預設值。未指定的任何屬性,皆遵循 Android 開放原始碼計畫的預設設定。變更大多數屬性 (例如個人資料類型的徽章屬性) 都會影響該類型的現有使用者。不過,由於 default-restrictions
只會在使用者建立時套用,因此修改這個特定屬性時,如果 OTA 變更 config_user_types.xml
檔案,現有的使用者不會受到影響。同樣地,只有在建立新使用者時指定使用者人數上限,不會移除現有使用者。
目前各類型的使用者自訂限制如下:
- 而且可以完全自訂及定義設定檔。在這種情況下,由於 Android 開放原始碼計畫僅支援預先定義的 Android 開放原始碼計畫使用者類型,因此原始設備製造商 (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>
在這個程式碼範例中,以下 Android 開放原始碼計畫使用者類型是透過修改支援的屬性來自訂。
完整使用者
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
類型。