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

В Android 11 введена концепция четко определенных типов пользователей, представляющая все различные типы пользователей, разрешенные функцией Android Multi-user. С помощью этой функции OEM-производители могут настраивать предопределенные типы пользователей 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, не влияет на уже существующих пользователей. Аналогично, указание максимального количества пользователей применяется только при создании новых пользователей; существующие пользователи не удаляются.

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

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

,

В Android 11 введена концепция четко определенных типов пользователей, представляющая все различные типы пользователей, разрешенные функцией Android Multi-user. С помощью этой функции OEM-производители могут настраивать предопределенные типы пользователей 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, не влияет на уже существующих пользователей. Аналогично, указание максимального количества пользователей применяется только при создании новых пользователей; существующие пользователи не удаляются.

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

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