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

Android поддерживает работу нескольких пользователей на одном устройстве Android за счет разделения учетных записей пользователей и данных приложений. Например, родители могут разрешить своим детям использовать семейный планшет, семья может совместно использовать автомобиль, а группа экстренного реагирования может использовать мобильное устройство для дежурства по вызову.

Терминология

Android использует следующие термины при описании пользователей и учетных записей Android.

Общий

Для управления устройствами Android используются следующие общие термины:

  • Пользователь: каждый пользователь предназначен для использования различным физическим лицом. У каждого пользователя есть отдельные данные приложения и некоторые уникальные настройки, а также пользовательский интерфейс для явного переключения между пользователями. Пользователь может работать в фоновом режиме, когда активен другой пользователь; система управляет отключением пользователей для экономии ресурсов, когда это необходимо. Вторичных пользователей можно создавать либо непосредственно через пользовательский интерфейс, либо из приложения администрирования устройств .
  • Учетная запись: Учетные записи содержатся внутри пользователя, но не определяются пользователем, а пользователь не определяется и не связан с какой-либо конкретной учетной записью. Пользователи и профили содержат свои собственные уникальные учетные записи, но для функциональности наличие учетных записей не обязательно. Список учетных записей зависит от пользователя. Подробную информацию см. в определении класса «Счет» .
  • Профиль: профиль содержит отдельные данные приложения, но использует некоторые общесистемные настройки (например, Wi-Fi и Bluetooth). Профиль — это часть существования пользователя, связанная с ним. Пользователь может иметь несколько профилей. Профили создаются с помощью приложения администрирования устройств . Профиль всегда имеет неизменяемую связь с родительским пользователем, определяемым пользователем, создавшим профиль. Профили не существуют после жизни создавшего пользователя.
  • Приложение: данные приложения существуют внутри каждого связанного пользователя. Данные приложения изолированы от других приложений одного пользователя. Приложения одного пользователя могут взаимодействовать друг с другом через IPC. Подробную информацию см. в разделе Android для предприятий .

Категории пользователей

Администрирование устройств Android использует следующие категории пользователей.

  • Системный пользователь: первый пользователь, добавленный на устройство. Пользователя системы нельзя удалить, кроме как путем сброса настроек к заводским, и он всегда работает, даже когда другие пользователи находятся на переднем плане. Этот пользователь также имеет особые привилегии и настройки, которые может устанавливать только он.
  • Пользователь безголовой системы: первый пользователь, добавленный к устройству, если устройство настроено для работы в режиме пользователя безголовой системы (путем установки ro.fw.mu.headless_system_user=true ). Пользователь безголовой системы всегда работает в фоновом режиме, поэтому таким устройствам требуются дополнительные пользователи на переднем плане, чтобы обеспечить взаимодействие с пользователем.
  • Вторичный пользователь: любой пользователь, добавленный к устройству, кроме системного пользователя. Вторичные пользователи могут быть удалены (самостоятельно или администратором) и не могут влиять на других пользователей на устройстве. Эти пользователи могут работать в фоновом режиме и продолжать подключаться к сети.
  • Гость: временный дополнительный пользователь. Гостевые пользователи имеют явную возможность быстро удалить гостевого пользователя, когда его полезность закончится. Одновременно может быть только один гость.
  • Пользователь-администратор: пользователь, имеющий разрешение создавать и удалять других пользователей, а также управлять некоторыми общими настройками многопользовательской работы. По умолчанию администратором является только пользователь системы.

Категории профилей

Android использует следующие категории профилей:

  • Управляемый профиль: создается приложением для хранения рабочих данных и приложений. Ими управляет исключительно владелец профиля (приложение, создавшее корпоративный профиль). Панель запуска, уведомления и недавние задачи доступны родительскому пользователю и корпоративному профилю.
  • Профиль с ограниченным доступом: используются учетные записи родительского пользователя, который может контролировать, какие приложения доступны в профиле с ограниченным доступом. Доступно только на планшетах и ​​телевизорах.
  • Клонирование профиля: Android поддерживает создание отдельного типа пользователя профиля клонирования, чтобы можно было запускать два экземпляра одного приложения на устройстве. AOSP не обеспечивает сквозную поддержку этой функции. OEM-производителям необходимо добавить настройки, чтобы предоставить пользователям Android полную функциональность.
  • Частный профиль: это изолированное пространство, отдельное от остальной части устройства, которое можно заблокировать отдельно от основного пользователя. Приватный профиль может существовать только для основного пользователя. Когда личный профиль разблокирован, приложения становятся видимыми в настройках, ShareSheet, Photopicker и DocsUI, но при блокировке приложения скрываются. Частный профиль может существовать на одном устройстве вместе с рабочим профилем и профилем-клоном.

Типы пользователей

В Android 11 приведенная выше классификация пользователей и профилей разделена на четко определенные типы пользователей , представляющие все различные типы пользователей и профилей, разрешенные функцией многопользовательской работы Android.

Предопределенные типы пользователей AOSP определены в frameworks/base/core/java/android/os/UserManager.java и в настоящее время включают в себя:

  • android.os.usertype.full.SYSTEM
  • android.os.usertype.full.SECONDARY
  • android.os.usertype.full.GUEST
  • android.os.usertype.full.DEMO
  • android.os.usertype.full.RESTRICTED
  • android.os.usertype.profile.MANAGED
  • android.os.usertype.system.HEADLESS
  • android.os.usertype.profile.CLONE
  • android.os.usertype.profile.PRIVATE

OEM-производители имеют возможность настраивать эти типы пользователей, накладывая файл frameworks/base/core/res/res/xml/config_user_types.xml . Это облегчает изменение конфигурации по умолчанию для каждого типа пользователей, включая ограничения по умолчанию, значки, значки и максимально разрешенное количество пользователей.

В дополнение к настраиваемым типам пользователей AOSP OEM-производители могут определять новые типы профилей с помощью файла frameworks/base/core/res/res/xml/config_user_types.xml . Это позволяет OEM-производителям при желании вводить свои собственные неуправляемые типы профилей. Тем не менее, OEM-производитель несет ответственность за внесение необходимых изменений в платформу для поддержки этих изменений, включая изменение любого кода, проверяющего наличие управляемых профилей, для обработки нового типа профиля, если это необходимо.

Включить многопользовательскую функцию

По умолчанию многопользовательская функция отключена. Чтобы включить эту функцию, производители устройств должны определить наложение ресурсов, которое заменяет следующие значения в frameworks/base/core/res/res/values/config.xml :

<!--  Maximum number of supported users -->
<integer name="config_multiuserMaximumUsers">1</integer>
<!--  Whether Multiuser UI should be shown -->
<bool name="config_enableMultiUserUI">false</bool>

Чтобы применить это наложение и разрешить гостевым и дополнительным пользователям на устройстве, используйте функцию DEVICE_PACKAGE_OVERLAYS системы сборки Android, чтобы заменить значения для:

  • config_multiuserMaximumUsers со значением больше 1
  • config_enableMultiUserUI с true

Производители устройств могут определить максимальное количество пользователей. Если производители устройств или другие лица изменили настройки, они должны обеспечить работу SMS и телефонии, как определено в Документе определения совместимости Android (CDD).

Управление несколькими пользователями

Управление пользователями и профилями (за исключением профилей с ограниченным доступом) осуществляется приложениями, которые программно вызывают API в классе DevicePolicyManager для ограничения использования.

Предприятия могут использовать пользователей и профили для управления временем существования и объемом приложений и данных на устройствах, используя типы, описанные выше, в сочетании с API-интерфейсами DevicePolicyManager и UserManager для создания уникальных решений, адаптированных к их сценариям использования.

Поведение многопользовательской системы

Когда пользователи добавляются на устройство, некоторые функции отключаются, когда другой пользователь находится на переднем плане. Поскольку данные приложений разделяются по пользователям, состояние этих приложений различается в зависимости от пользователя. Например, электронное письмо, предназначенное для учетной записи пользователя, который в данный момент не находится в фокусе, не будет доступно, пока этот пользователь и учетная запись не станут активными на устройстве.

Примечание . Чтобы включить или отключить функции телефона и SMS для дополнительного пользователя, перейдите в «Настройки» > «Пользователи» , выберите пользователя и отключите параметр «Разрешить телефонные звонки и SMS» .

Некоторые ограничения существуют, когда дополнительный пользователь находится в фоновом режиме. Например, фоновый дополнительный пользователь не может отображать пользовательский интерфейс или активировать службы Bluetooth. Кроме того, системный процесс останавливает фоновых вторичных пользователей, если устройству требуется дополнительная память для операций основного пользователя.

При использовании нескольких пользователей на устройстве Android имейте в виду следующее поведение:

  • Уведомления появляются для всех учетных записей одного пользователя одновременно.
  • Уведомления для других пользователей не отображаются, пока они не активны.
  • Каждый пользователь получает рабочее пространство для установки и размещения приложений.
  • Ни один пользователь не имеет доступа к данным приложения другого пользователя.
  • Любой пользователь может влиять на установленные приложения для всех пользователей.
  • Пользователь-администратор может удалить приложения или даже всю рабочую область, созданную дополнительными пользователями.
  • По умолчанию информация из сеанса гостевого пользователя не сохраняется при выходе из гостевого режима. Если вы хотите, чтобы информация из сеанса гостевого пользователя сохранялась, необходимо создать файл наложения ресурсов, который задает для config_guestUserAllowEphemeralStateChange значение false . Дополнительную информацию о создании файлов наложения см. в разделе Настройка сборки с наложением ресурсов .

Android Автомобильная многопользовательская версия

Android Automotive использует многопользовательскую реализацию Android для обеспечения совместного использования устройств.

Типы пользователей автомобильной отрасли

Помимо перечисленных выше типов пользователей, автомобильные сборки примечательны следующими типами пользователей:

  • Безголовый пользователь системы. Пользователь системы управляет всеми системными службами. Для поддержки нескольких пользователей в Automotive пользователь системы также должен быть обезглавленным . Есть только один безголовый пользователь. Безголовый пользователь системы:
    • Должен всегда работать в фоновом режиме.
    • Пользователь не может удалить или получить к нему доступ напрямую, за исключением случаев подготовки устройства. Например, пользователи не могут переключиться на этот тип пользователя для выполнения таких задач, как загрузка приложений или добавление учетных записей.
    • Очистить можно только сбросом настроек.
  • Обычные пользователи. То же, что и «Вторичные пользователи» , описанные выше, за исключением того, что второстепенные пользователи:
    • Не работать в фоновом режиме (после отключения).
    • Может быть создан непосредственно через пользовательский интерфейс.
    • Разделите данные приложения, но поделитесь некоторыми общесистемными настройками. Например, Wi-Fi и Bluetooth.

Предостережения

Следующие исключения применяются к пользователям безголовой системы и обычным (второстепенным) пользователям в автомобильной промышленности:

  • Пользователь безголовой системы не поддерживает рабочие профили.
  • По умолчанию обычные (дополнительные) пользователи имеют полный доступ к телефонным звонкам и текстовым сообщениям.
  • По умолчанию обычные (вторичные) пользователи не работают в фоновом режиме.

Включить безголового пользователя системы

Начиная с Android 10, многопользовательскую функцию можно использовать в автомобильных целях. Важные различия включают в себя:

  • Пользователь системы не имеет головы и работает только в фоновом режиме.
  • Пользователи-люди не взаимодействуют с пользователем системы.

Чтобы включить пользователя безголовой системы, производители устройств должны включить многопользовательский режим, как описано выше.

Когда безголовый пользователь включен:
  1. Чтобы объявить устройство автомобильным, добавьте функцию android.hardware.type.automotive .
  2. Установите для ro.fw.headless_system_user значение true .
  3. Установите значение для config_multiuserMaximumUsers равным 2 (или выше).

Дополнительные сведения см. в разделе Многопользовательская поддержка в автомобильной промышленности.

Многопользовательский режим Android Automotive на нескольких дисплеях

Новая экспериментальная функция в Android 14 позволяет полноценным второстепенным пользователям (которые не являются текущими пользователями на переднем плане) запускать действия и получать доступ к пользовательскому интерфейсу на дисплее, которому они назначены. Эта функция позволяет нескольким одновременным пользователям Android Automotive OS поддерживать работу в автомобиле, предоставляя нескольким пассажирам выделенный интерфейс пользовательского интерфейса в одном экземпляре Android.

Чтобы включить эту функцию для использования в целях разработки, производители устройств должны определить наложение ресурса, чтобы заменить следующее значение в frameworks/base/core/res/res/values/config.xml :

<!-- Whether the device allows users to start in background visible on displays.
    Should be false for all devices in production. Can be enabled only for development use
    in automotive vehicles with passenger displays. -->

<bool name="config_multiuserVisibleBackgroundUsers">false></bool>

Вы можете поэкспериментировать с режимом только для пассажиров (без водителя), включив следующую дополнительную конфигурацию:

<!-- Whether the device allows users to start in background visible on the default display.
    Should be false for all devices in production. Can be enabled only for development use
    in passenger-only automotive build (i.e., when Android runs in a separate system in the
    back seat to manage the passenger displays).
    When set to true, config_multiuserVisibleBackgroundUsers must also be true. -->

<bool name="config_multiuserVisibleBackgroundUsersOnDefaultDisplay">false</bool>

В Android 14 вы можете включить работу в автомобиле для нескольких пассажиров в качестве гостей. Чтобы разрешить использование нескольких гостевых пользователей для использования в целях разработки, производители устройств должны определить наложение ресурсов, которое настраивает максимально допустимое количество гостевых пользователей в frameworks/base/core/res/res/xml/config_user_types.xml , как показано в примере ниже:

<user-types>
   <full-type
       name="android.os.usertype.full.GUEST"
       max-allowed='4'>
       <default-restrictions no_factory_reset="true"
           no_remove_user="true"
           no_modify_accounts="true"
           no_install_apps="true"
           no_install_unknown_sources="true"
           no_uninstall_apps="true"/>
   </full-type>
</user-types>