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