В Android 11 появилась концепция четко определенных типов пользователей, представляющих все типы пользователей, разрешенные функцией добавления пользователей Android. С помощью этой функции производители оригинального оборудования могут настраивать предопределенные типы пользователей AOSP и создавать новые типы профилей. Подробнее о типах пользователей…
На этой странице приведены инструкции по настройке типов пользователей.
Настройка канала
Чтобы настроить типы пользователей AOSP и определить новые типы профилей, производитель должен переопределить config_user_types.xml с помощью нужных настроек. Файл config_user_types.xml содержит эталонную реализацию и полный список настраиваемых атрибутов.
Любой атрибут, например default-restrictions, указанный в файле config_user_types.xml, переопределяет значение по умолчанию, заданное в AOSP. Если какой-либо атрибут не указан, используется значение по умолчанию из AOSP. Изменение большинства атрибутов, например атрибутов значка типа профиля, влияет на существующих пользователей этого типа.
Однако поскольку default-restrictions применяются только при создании пользователя, изменение этого атрибута в случае, если файл config_user_types.xml был изменен по беспроводной сети, не влияет на существующих пользователей. Аналогично, указание максимального количества пользователей применяется только при создании новых пользователей; существующие пользователи не удаляются.
Ниже приведены текущие ограничения на настройку для каждого типа пользователей.
- Профили можно полностью настраивать. В этом случае 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: при обновлении устройства с версииuser-typeдо<= 1с помощью беспроводного обновления все существующие управляемые профили типаandroid.os.usertype.profile.MANAGEDбудут преобразованы в новый типcom.example.profilename.