實作自訂使用者類型

Android 11 導入了定義明確的概念 代表使用者類型 Android 多使用者功能。有了這項功能,原始設備製造商 (OEM) 就能自訂 Android 開放原始碼計畫使用者類型,並定義新的設定檔類型。詳情請參閱 使用者類型瞭解詳情。

本頁詳述自訂使用者類型所需的導入指南。

自訂

為了自訂 Android 開放原始碼計畫使用者類型,並定義新的設定檔類型,原始設備製造商 (OEM) 必須將 config_user_types.xml 與所需的自訂項目重疊。config_user_types.xml 檔案 內含參考實作和可設定的完整清單 屬性。

您在default-restrictions config_user_types.xml 檔案,覆寫 Android 開放原始碼計畫預設值。具有 如未指定,則遵循 Android 開放原始碼計畫的預設設定。變更的大部分屬性,例如 設定檔類型的徽章屬性會影響該類型原有的現有使用者。 但因為 default-restrictions 只會在使用者 修改這個特定屬性時 config_user_types.xml 檔案已由 OTA 變更,對現有的檔案沒有影響 使用者。同樣地,指定使用者人數上限 建立新的使用者;但不會移除現有的使用者。

目前各類型的使用者自訂限制如下:

  • 而且可以完全自訂及定義設定檔。在本例中,原始設備製造商 (OEM) 為 負責配合自訂 Android 開放原始碼計畫僅支援預先定義的 AOSP 使用者類型。
  • 無法定義完整使用者,只能定義其 default-restrictions 屬性 您可以自訂各個區域
  • 此機制無法用來自訂系統使用者。在本例中 default-restrictions可以使用 com.android.internal.R.array.config_defaultFirstUserRestrictions。詳情請見 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

    • 您可以透過指定的方式,將 no_sms 的預設限制設為 true default-restrictions no_sms="true"
  • 設定檔使用者 android.os.usertype.profile.MANAGED

    • 每位家長使用者可透過設定 max-allowed-per-parent='2'
    • 徽章屬性使用 icon-badge 設為所需的值。 badge-plainbadge-no-backgroundbadge-labelsbadge-colors
    • no_smsno_outgoing_calls 的預設限制已設為 true。default-restrictions no_sms="true" no_outgoing_calls="true"

如要瞭解這些屬性的含義和預設值,請參閱 UserTypeFactory.javaUserTypeDetails.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:轉換所有該類型的現有受管理設定檔 從 android.os.usertype.profile.MANAGED 改為新的 com.example.profilename 類型 ,即需透過 OTA 從 user-type<= 1 升級裝置。