В 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.