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

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

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

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

Общий

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

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

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

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

  • Пользователь системы . Первый пользователь добавлен на устройство. Системного пользователя нельзя удалить, кроме как с помощью сброса настроек, и он всегда работает, даже когда другие пользователи находятся на переднем плане. Этот пользователь также имеет особые привилегии и настройки, которые может устанавливать только он.
  • Второстепенный пользователь . Любой пользователь, добавленный на устройство, кроме пользователя системы. Дополнительные пользователи могут быть удалены (либо сами по себе, либо администратором) и не могут повлиять на других пользователей на устройстве. Эти пользователи могут работать в фоновом режиме и по-прежнему иметь подключение к сети.
  • Гость пользователь . Временный дополнительный пользователь. У гостевых пользователей есть явная возможность быстро удалить гостевого пользователя, когда его полезность закончилась. Одновременно может быть только один гостевой пользователь.
  • Пользователь админ . Пользователь, имеющий право создавать и удалять других пользователей, а также управлять некоторыми общими многопользовательскими настройками. По умолчанию администратором является только системный пользователь.

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

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

  • Управляемый профиль . Создается приложением для хранения рабочих данных и приложений. Ими управляет исключительно владелец профиля (приложение, создавшее корпоративный профиль). Панель запуска, уведомления и недавние задачи совместно используются родительским пользователем и корпоративным профилем.
  • Профиль с ограниченным доступом . Использует учетные записи, основанные на родительском пользователе, который может контролировать, какие приложения доступны в ограниченном профиле. Доступно только на планшетах и ​​телевизионных устройствах.

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

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

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

Включение многопользовательского режима

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

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

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

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

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

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

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

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

Android 7.0 включает в себя несколько улучшений, в том числе:

  • Переключить рабочий профиль . Пользователи могут отключить свой управляемый профиль (например, когда не на работе). Эта функциональность достигается за счет остановки пользователя; UserManagerService вызывает ActivityManagerNative#stopUser() .
  • Всегда включенный VPN . Приложения VPN теперь могут быть настроены на постоянную работу пользователем, DPC устройства или DPC управляемого профиля (применяется только к приложениям управляемого профиля). Если этот параметр включен, приложения не могут получить доступ к общедоступной сети (доступ к сетевым ресурсам прекращается до тех пор, пока VPN не подключится и через нее можно будет маршрутизировать соединения). Устройства, device_admin устройстве_admin, должны реализовать постоянную VPN.

Дополнительные сведения о функциях администрирования устройств Android 7.0 см. в Android for Work .

Многопользовательский Android Automotive

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

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

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

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

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

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

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

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

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

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

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

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

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