В Android 11 представлена концепция чётко определённых типов пользователей, охватывающая все типы пользователей, поддерживаемые функцией Android Multi-user. С помощью этой функции OEM-производители могут настраивать предопределённые типы пользователей AOSP и определять новые типы профилей. Подробнее см. в разделе о типах пользователей .
На этой странице подробно описаны рекомендации по реализации, необходимые для настройки типов пользователей.
Настройка
Для настройки типов пользователей AOSP и определения новых типов профилей производитель оборудования должен добавить в файл config_user_types.xml предпочтительные настройки. Файл config_user_types.xml содержит эталонную реализацию и полный список настраиваемых атрибутов.
Любой атрибут, указанный в файле config_user_types.xml , например, default-restrictions , перезаписывает значение 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.