Внедрение пользовательских типов пользователей

В Android 11 была представлена ​​концепция четко определенных типов пользователей, представляющих все различные типы пользователей, разрешенные функцией многопользовательского режима Android. Благодаря этой функции производители оборудования могут настраивать предопределенные типы пользователей AOSP и определять новые типы профилей. Дополнительную информацию см. в разделе о типах пользователей .

На этой странице подробно описаны рекомендации по внедрению, необходимые для настройки типов пользователей.

Настройка

Для настройки типов пользователей AOSP и определения новых типов профилей OEM-производитель должен добавить в файл config_user_types.xml необходимые параметры. Файл config_user_types.xml содержит эталонную реализацию и полный список настраиваемых атрибутов.

Любой атрибут, например default-restrictions , указанный в файле config_user_types.xml , переопределяет значение по умолчанию AOSP. Любой атрибут, который не указан, подчиняется значению по умолчанию AOSP. Изменение большинства атрибутов, таких как атрибуты значка типа профиля, влияет на существующих пользователей этого типа. Однако, поскольку default-restrictions применяются только при создании пользователя, изменение этого конкретного атрибута в случае изменения файла config_user_types.xml по воздуху (OTA) не повлияет на существующих пользователей. Аналогично, указание максимального количества пользователей применяется только при создании новых пользователей; существующие пользователи не удаляются.

В настоящее время для каждого типа пользователей действуют следующие ограничения на настройку:

  • Профили можно полностью настраивать и определять. В этом случае производитель оборудования несет ответственность за внесение необходимых изменений в платформу для поддержки своего пользовательского профиля в Android, поскольку AOSP поддерживает только предопределенные типы пользователей 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>

В этом примере кода следующие типы пользователей AOSP настраиваются путем изменения поддерживаемых свойств:

  • Полный пользователь 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-plain , badge-no-background , badge-labels , badge-colors .
    • Ограничения по умолчанию для no_sms и no_outgoing_calls устанавливаются в значение true путем указания 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 : преобразует все существующие управляемые профили типа android.os.usertype.profile.MANAGED в новый тип com.example.profilename при обновлении устройства с версии user-type <= 1 через OTA.