На этой странице представлен обзор корпоративных API, функций и изменений поведения, доступных в Android 9.
Пользовательский интерфейс рабочего профиля
Android 9 (уровень API 28) включает изменения пользовательского интерфейса в средстве запуска по умолчанию, чтобы помочь пользователям разделить личные и рабочие приложения. Производители устройств, поддерживающие эту возможность, могут представлять приложения пользователей на отдельных рабочих и личных вкладках. Мы также упростили для пользователей устройств включение и выключение рабочего профиля, добавив переключатель на вкладку «Работа» средства запуска.
![](https://developer.android.google.cn/static/images/about/versions/pie/p-work-profile.jpg?authuser=0000&hl=ru)
При подготовке рабочих профилей и управляемых устройств Android 9 включает анимированные иллюстрации, которые помогают пользователям устройств понять эти функции.
Переключение приложений между профилями
Android 9 включает API для запуска другого экземпляра приложения в другом профиле, чтобы помочь пользователям переключаться между учетными записями. Например, приложение электронной почты может предоставлять пользовательский интерфейс, который позволяет пользователю переключаться между личным профилем и рабочим профилем для доступа к двум учетным записям электронной почты. Все приложения могут вызывать эти API для запуска основного действия того же приложения, если оно уже установлено в другом профиле. Чтобы добавить переключение между учетными записями в ваше приложение, выполните следующие действия, вызвав методы класса CrossProfileApps
:
- Вызовите
getTargetUserProfiles()
, чтобы получить список профилей, в которых вы можете запустить другой экземпляр приложения. Этот метод проверяет, установлено ли приложение в профилях. - Вызовите
getProfileSwitchingIconDrawable()
, чтобы получить значок, который можно использовать для представления другого профиля. - Вызовите
getProfileSwitchingLabel()
, чтобы получить локализованный текст, предлагающий пользователю переключить профили. - Вызовите
startMainActivity()
, чтобы запустить экземпляр вашего приложения в другом профиле.
Убедитесь, что основное действие, которое вы хотите запустить, объявлено в файле манифеста вашего приложения с действием намерения ACTION_MAIN
и включает категорию намерения CATEGORY_LAUNCHER
.
Программное включение и отключение рабочих профилей
Средство запуска по умолчанию (или приложения, имеющие разрешение MANAGE_USERS
или MODIFY_QUIET_MODE
) может включать или выключать рабочий профиль, вызывая UserManager.requestQuietModeEnabled()
. Вы можете проверить возвращаемое значение, чтобы узнать, нужно ли пользователю подтверждать свои учетные данные перед изменением состояния. Поскольку изменение может не произойти мгновенно, прослушайте широковещательную рассылку ACTION_MANAGED_PROFILE_AVAILABLE
или ACTION_MANAGED_PROFILE_UNAVAILABLE
, чтобы узнать, когда следует обновить пользовательский интерфейс.
Ваше приложение может проверить состояние рабочего профиля, вызвав UserManager.isQuietModeEnabled()
.
Заблокируйте любое приложение на устройстве
Начиная с Android 9, владельцы устройств и владельцы профилей (дополнительных пользователей) могут заблокировать любое приложение на экране устройства, переведя его в режим блокировки задач. Раньше разработчикам приложений приходилось добавлять в свои приложения поддержку режима блокировки задач . Android 9 также расширяет API-интерфейсы задач блокировки для владельцев профилей неаффилированных вторичных пользователей. Выполните следующие действия, чтобы заблокировать приложение на экране:
- Вызовите
DevicePolicyManager.setLockTaskPackages()
чтобы добавить приложения в список разрешенных для режима блокировки задач. - Вызовите
ActivityOptions.setLockTaskEnabled()
, чтобы запустить приложение из белого списка в режиме задачи блокировки.
Чтобы остановить приложение в режиме блокировки задач, удалите приложение из белого списка режима блокировки задач с помощью DevicePolicyManager.setLockTaskPackages()
.
Включить функции системного пользовательского интерфейса
Когда режим задачи блокировки включен, владельцы устройств и владельцы профилей могут включить определенные функции системного пользовательского интерфейса на устройстве, вызвав DevicePolicyManager.setLockTaskFeatures()
и передав битовое поле следующих флагов функций:
-
LOCK_TASK_FEATURE_NONE
-
LOCK_TASK_FEATURE_SYSTEM_INFO
-
LOCK_TASK_FEATURE_HOME
-
LOCK_TASK_FEATURE_NOTIFICATIONS
можно использовать только в сочетании сLOCK_TASK_FEATURE_HOME
. -
LOCK_TASK_FEATURE_KEYGUARD
-
LOCK_TASK_FEATURE_OVERVIEW
можно использовать только в сочетании сLOCK_TASK_FEATURE_HOME
. -
LOCK_TASK_FEATURE_GLOBAL_ACTIONS
Вы можете вызвать DevicePolicyManager.getLockTaskFeatures()
чтобы получить список функций, доступных на устройстве, когда включен режим задачи блокировки. Когда устройство выходит из режима задачи блокировки, оно возвращается в состояние, предусмотренное другими политиками устройства.
Подавить диалоговые окна ошибок
В некоторых средах, таких как демонстрации розничной торговли или показы общедоступной информации, вам может не потребоваться показывать пользователям диалоговые окна об ошибках. Контроллер политики устройства (DPC) может подавлять диалоговые окна системных ошибок для приложений, которые вышли из строя или не отвечают, добавив пользовательское ограничение DISALLOW_SYSTEM_ERROR_DIALOGS
. Это ограничение влияет на все диалоговые окна, если оно применяется владельцем устройства, но только диалоговые окна с ошибками, отображаемые у основного или дополнительного пользователя, подавляются, когда ограничение применяется владельцами профилей. Это ограничение не влияет на рабочие профили.
В Android 9 приложения, работающие в полноэкранном режиме с эффектом погружения, не отображают пузырь напоминания в режиме блокировки задач. Всплывающее напоминание — это панель, которая отображается пользователям (при первом запуске) и объясняет, как выйти из режима погружения.
Поддержка нескольких пользователей на выделенных устройствах
В Android 9 представлена концепция временного пользователя для выделенных устройств (ранее называвшихся устройствами COSU ). Эфемерные пользователи — это краткосрочные пользователи, предназначенные для случаев, когда несколько пользователей используют одно выделенное устройство. Сюда входят общедоступные сеансы пользователей на таких устройствах, как библиотеки или киоски регистрации в гостиницах, а также постоянные сеансы между фиксированным набором пользователей на устройствах, например, сменными работниками.
Эфемерные пользователи должны создаваться в фоновом режиме. Они создаются как дополнительные пользователи на устройстве и удаляются (вместе со связанными приложениями и данными) при их остановке, переключении или перезагрузке устройства. Чтобы создать временного пользователя, владельцы устройств могут:
- Установите флаг
MAKE_USER_EPHEMERAL
при вызовеDevicePolicyManager.createAndManageUser()
. - Вызовите
DevicePolicyManager.startUserInBackground()
чтобы запустить эфемерного пользователя в фоновом режиме.
Обратите внимание, что приложения, предназначенные для Android 9, должны перехватывать UserManager.UserOperationException
при вызове createAndManageUser()
. Вызовите метод getUserOperationResult()
исключения, чтобы выяснить, почему пользователь не был создан.
Получать уведомления о событиях
DeviceAdminReceiver
получает уведомления о следующих событиях:
-
onUserStarted()
: вызывается при запуске пользователя. -
onUserSwitched()
: вызывается, когда переключение пользователя завершено. -
onUserStopped()
: вызывается вместе сonUserRemoved()
, когда пользователь останавливается или выходит из системы .
Отображать сообщения о событиях для пользователей
Владельцы устройств могут настроить сообщения, которые отображаются пользователям при запуске и завершении сеансов:
- Используйте
DevicePolicyManager.setStartUserSessionMessage()
чтобы установить сообщение, отображаемое пользователю при начале сеанса пользователя. Чтобы получить сообщение, вызовитеDevicePolicyManager.getStartUserSessionMessage()
. - Используйте
DevicePolicyManager.setEndUserSessionMessage()
чтобы установить сообщение, которое будет отображаться пользователю после завершения сеанса пользователя. Чтобы получить сообщение, вызовитеDevicePolicyManager.getEndUserSessionMessage()
.
Выйти и остановить пользователей
Владельцы устройств могут использовать DevicePolicyManager.setLogoutEnabled()
чтобы указать, разрешен ли выход из системы для дополнительных пользователей. Чтобы проверить, включен ли выход из системы, вызовите DevicePolicyManager.isLogoutEnabled()
.
Владельцы профилей дополнительных пользователей могут вызвать DevicePolicyManager.logoutUser()
чтобы остановить вторичного пользователя и переключиться обратно на основного пользователя.
Владельцы устройств могут использовать DevicePolicyManager.stopUser()
чтобы остановить указанного вторичного пользователя.
Кэширование пакетов
Чтобы упростить подготовку пользователей на общих устройствах с фиксированным набором пользователей, например на устройствах для посменных работников, можно кэшировать пакеты, необходимые для многопользовательских сеансов:
Вызовите
DevicePolicyManager.setKeepUninstalledPackages()
, чтобы указать список пакетов, которые нужно сохранить в виде APK. Чтобы получить список этих пакетов, вызовитеDevicePolicyManager.getKeepUninstalledPackages()
.Вызовите
DevicePolicyManager.installExistingPackage()
, чтобы установить пакет, который был сохранен после удаления с помощьюsetKeepUninstalledPackages()
.
Дополнительные методы и константы
Android 9 также включает следующие методы и константы для дальнейшей поддержки пользовательских сеансов на общих устройствах:
-
DevicePolicyManager.getSecondaryUsers()
получает список всех дополнительных пользователей на устройстве. -
DISALLOW_USER_SWITCH
— это пользовательское ограничение, которое можно включить, вызвавDevicePolicyManager.addUserRestriction()
, чтобы заблокировать переключение пользователей. -
LEAVE_ALL_SYSTEM_APPS_ENABLED
— это флаг, доступный дляDevicePolicyManager.createAndManageUser()
. Если этот параметр установлен, системные приложения не отключаются во время подготовки пользователей. -
UserManager.UserOperationException
генерируетсяDevicePolicyManager.createAndManageUser()
, когда пользователь не может быть создан — исключение содержит причину сбоя.
Очистить данные пакета и удалить учетные записи
Владельцы устройств и владельцы профилей могут вызвать clearApplicationUserData()
чтобы очистить данные пользователя для данного пакета. Чтобы удалить учетную запись из AccountManager
, владельцы устройств и профилей могут вызвать removeAccount()
.
Пользовательские ограничения и повышенный контроль над настройками
В Android 9 представлен набор пользовательских ограничений для ЦОД, а также возможность настраивать APN, время и часовой пояс, а также системные настройки на устройстве.
Настройка APN
Владельцы устройств могут использовать следующие методы класса DevicePolicyManager
для настройки APN на устройстве:
-
addOverrideApn()
-
updateOverrideApn()
-
removeOverrideApn()
-
getOverrideApns()
-
setOverrideApnEnabled()
-
isOverrideApnEnabled()
Настройте время и часовой пояс
Владельцы устройств могут использовать следующие методы класса DevicePolicyManager
для установки времени и часового пояса на устройстве:
Ввести ограничения пользователей на важные настройки
В Android 9 добавлены пользовательские ограничения на отключение системных функций и настроек. Чтобы добавить ограничение, вызовите DevicePolicyManager.addUserRestriction()
с одной из следующих констант UserManager
:
-
DISALLOW_AIRPLANE_MODE
-
DISALLOW_AMBIENT_DISPLAY
-
DISALLOW_CONFIG_BRIGHTNESS
-
DISALLOW_CONFIG_DATE_TIME
-
DISALLOW_CONFIG_LOCATION
-
DISALLOW_CONFIG_SCREEN_TIMEOUT
-
DISALLOW_PRINTING
Если на устройстве принудительно применяются DISALLOW_CONFIG_BRIGHTNESS
и DISALLOW_CONFIG_SCREEN_TIMEOUT
, владельцы устройств по-прежнему могут устанавливать яркость экрана , режим яркости экрана и параметры тайм-аута экрана на устройстве с помощью API DevicePolicyManager.setSystemSetting()
.
Измеренные данные
Владельцы устройств и владельцы профилей могут запретить приложениям использовать сети с лимитной передачей данных устройства. Сеть считается лимитированной, если пользователь чувствителен к интенсивному использованию данных из-за стоимости, ограничений данных или проблем с батареей и производительностью. Чтобы запретить приложениям использовать сети с лимитным трафиком, вызовите DevicePolicyManager.setMeteredDataDisabledPackages()
, передав список имен пакетов. Чтобы получить приложения, доступ к которым в настоящее время ограничен, вызовите DevicePolicyManager.getMeteredDataDisabledPackages()
.
Чтобы узнать больше об измеренных данных в Android, прочтите «Оптимизация использования сетевых данных» .
Миграция ЦОД
Контроллеры политики устройств (DPC) могут передавать право собственности на устройство или рабочий профиль другому DPC. Вы можете передать право собственности, чтобы перенести некоторые функции в Android Management API , перенести устройства из устаревшего ЦОД или помочь ИТ-администраторам перейти на ваш EMM. Поскольку вы просто меняете владельца ЦОД, вы не можете использовать эту функцию для изменения типа управления, например для перехода с управляемого устройства на рабочий профиль или наоборот.
Вы можете использовать XML-ресурс политик администратора устройства, чтобы указать, что эта версия вашего ЦОД поддерживает миграцию. Целевой ЦОД указывает, что он может получить право собственности, включив элемент с именем <support-transfer-ownership>
. В приведенном ниже примере показано, как это можно сделать в XML-файле администратора устройства вашего ЦОД:
<device-admin xmlns:android="http://schemas.android.com/apk/res/android">
<support-transfer-ownership />
<uses-policies>
<limit-password />
<watch-login />
<reset-password />
</uses-policies>
</device-admin>
ЦОД, которые хотят перенести владение в новое приложение ЦОД, могут проверить, поддерживает ли версия целевого ЦОД миграцию, вызвав метод DeviceAdminInfo
supportsTransferOwnership()
. Перед передачей владения исходный ЦОД обязан проверить целевой ЦОД путем сравнения подписей приложений. Класс PackageManager
включает методы для работы с подписями кода.
Android поддерживает системные и пользовательские политики исходного ЦОД посредством передачи права собственности — ЦОДам не нужно их переносить. Исходный ЦОД может передавать пользовательские данные в целевой ЦОД, используя пары ключ-значение в PersistableBundle
. После успешной передачи целевой ЦОД может получить эти данные, вызвав DevicePolicyManager.getTransferOwnershipBundle()
.
Действия по передаче права собственности на управляемое устройство или рабочий профиль такие же:
- Исходный центр обработки данных проверяет, поддерживает ли версия целевого центра обработки данных миграцию, и подтверждает, что подпись приложения целевого центра обработки данных соответствует ожидаемому значению.
- Исходный ЦОД вызывает
transferOwnership()
чтобы начать передачу. - Система делает целевой ЦОД активным администратором и назначает его владельцем управляемого устройства или рабочего профиля.
- Целевой ЦОД получает обратный вызов
onTransferOwnershipComplete()
и может настроить себя, используя значения из аргументаbundle
. - Если при передаче что-то пойдет не так, система возвращает право собственности исходному ЦОД. Если вашему исходному ЦОД необходимо подтвердить успешную передачу владения, вызовите
isAdminActive()
чтобы убедиться, что исходный ЦОД больше не является активным администратором.
Все приложения, работающие в рабочем профиле, получают широковещательную рассылку ACTION_PROFILE_OWNER_CHANGED
при смене владельца профиля. Приложения, работающие на управляемом устройстве, получают широковещательную рассылку ACTION_DEVICE_OWNER_CHANGED
при смене владельца устройства.
Рабочие профили на полностью управляемых устройствах
Перенос двух экземпляров ЦОД, работающих от имени владельца устройства и владельца профиля, происходит в два этапа. Если личный профиль и рабочий профиль объединены , завершите перенос в следующем порядке:
- Сначала передайте право собственности на рабочий профиль.
- Подождите, пока обратный вызов
DeviceAdminReceiver
onTransferAffiliatedProfileOwnershipComplete()
подтвердит, что рабочий профиль был передан в целевой ЦОД. - Наконец, передайте право владения управляемым устройством целевому ЦОД.
Отложить обновления по беспроводной сети (OTA)
Владельцы устройств могут отложить обновления системы OTA для устройств на срок до 90 дней, чтобы заморозить версию ОС, работающую на этих устройствах, в критические периоды (например, праздники). Система обеспечивает обязательный 60-дневный буфер после любого определенного периода заморозки, чтобы предотвратить заморозку устройства на неопределенный срок.
В период заморозки:
- Устройства не получают никаких уведомлений об ожидающих обновлениях OTA.
- Устройства не устанавливают никаких OTA-обновлений в ОС.
- Пользователи устройств не могут вручную проверять наличие обновлений OTA в настройках.
Чтобы установить период заморозки, вызовите SystemUpdatePolicy.setFreezePeriods()
. Поскольку период замораживания повторяется ежегодно, даты начала и окончания периода представлены целыми числами, подсчитывающими количество дней с начала года. День начала должен начаться как минимум через 60 дней после окончания любого предыдущего периода заморозки. Владельцы устройств могут вызвать SystemUpdatePolicy.getFreezePeriods()
чтобы получить список периодов заморозки, ранее установленных для объекта политики обновления системы. DevicePolicyManager.getSystemUpdatePolicy()
был обновлен и теперь возвращает любые периоды заморозки, установленные владельцем устройства.
Ограничить общий доступ рабочим профилем
Владельцы профилей могут запретить пользователям делиться личными данными с рабочим профилем на устройстве, добавив пользовательское ограничение DISALLOW_SHARE_INTO_MANAGED_PROFILE
. Это ограничение предотвращает следующую обработку и совместное использование намерений:
- Приложения личного профиля обмениваются данными и файлами с приложениями рабочего профиля.
- Приложения рабочего профиля выбирают элементы из личного профиля, например изображения или файлы.
После установки этого ограничения ваш ЦОД по-прежнему может разрешать намерения межпрофильного действия, вызывая addCrossProfileIntentFilter()
.
Аппаратно защищенные ключи и сертификаты машины
В Android 9 добавлены API, которые помогут вам работать с ключами и сертификатами, которые можно комбинировать для безопасной идентификации устройств. ЦОД, работающий в режимах владельца профиля или владельца устройства, или установщик делегированного сертификата может выполнять следующие задачи:
- Создавайте ключи и сертификаты на защищенном оборудовании (например, в доверенной среде выполнения (TEE) или элементе безопасности (SE)) устройства Android. Сгенерированные ключи никогда не покидают защищенное оборудование и могут использоваться из Android KeyChain . Вызовите
DevicePolicyManager.generateKeyPair()
предоставив алгоритм (см.KeyPairGenerator
) и любые идентификаторы оборудования, которые вы хотите подтвердить, например серийный номер или IMEI. Дополнительные сведения о безопасных изменениях оборудования см. в разделе «Усовершенствования безопасности Android 9» . - Свяжите сертификат с существующим ключом, созданным устройством. Вызовите
DevicePolicyManager.setKeyPairCertificate()
указав псевдоним существующего ключа и цепочку сертификатов, начиная с конечного сертификата и включая цепочку доверия по порядку. - Прежде чем использовать ключ, убедитесь, что защищенное оборудование защищает ключ. Чтобы проверить, какие механизмы защищают ключ, выполните действия, описанные в разделе «Аттестация ключа» .
- Владельцы устройств и установщики делегированных сертификатов могут получить подписанный отчет с идентификаторами оборудования устройств с версиями системы Android. Вызовите
DevicePolicyManager.generateKeyPair()
, передав один или несколькоID_TYPE_BASE_INFO
,ID_TYPE_SERIAL
,ID_TYPE_IMEI
илиID_TYPE_MEID
в аргументеidAttestationFlags
. Возвращенный сертификат включает идентификаторы оборудования в записи подтверждения. Если вы не хотите включать идентификаторы оборудования, передайте0
. Владельцы профилей могут получать только информацию о производителе (путем передачиID_TYPE_BASE_INFO
). Чтобы проверить, что устройство может подтвердить идентификаторы, вызовитеisDeviceIdAttestationSupported()
. - Предотвратите неправильное использование пользователями устройств корпоративных ключей (в некорпоративных задачах), сделав сертификаты ключей недоступными для выбора. Система не включает невыбираемые сертификаты на панели выбора. В методе обратного вызова
DeviceAdminReceiver.onChoosePrivateKeyAlias()
верните псевдоним вашего корпоративного ключа, чтобы система автоматически выбирала сертификат от имени пользователя. Чтобы сделать ключ недоступным для выбора, вызовите следующие методыDevicePolicyManager
:-
setKeyPairCertificate()
и передайтеfalse
для аргументаisUserSelectable
. -
installKeyPair (ComponentName, PrivateKey, Certificate[], String, int)
и опуститеINSTALLKEY_SET_USER_SELECTABLE
в аргументеflags
.
-
Комбинируя эти API, предприятия могут безопасно идентифицировать устройства и подтверждать их целостность перед предоставлением доступа:
- Устройство Android генерирует новый закрытый ключ на защищенном оборудовании. Поскольку закрытый ключ никогда не покидает защищенное оборудование, он остается секретным.
- Устройство использует ключ для создания и отправки запроса на подпись сертификата (CSR) на сервер. CSR включает запись подтверждения, содержащую идентификаторы устройств.
- Сервер проверяет цепочку сертификатов (основанную на сертификате Google) и извлекает метаданные устройства из записи аттестации.
- Сервер подтверждает, что защищенное оборудование защищает закрытый ключ и что идентификаторы устройств соответствуют записям предприятия. Сервер также может проверить соответствие системы Android и версий исправлений любым требованиям.
- Сервер генерирует сертификат из CSR и отправляет его на устройство.
- Устройство связывает сертификат с закрытым ключом (который остается на защищенном оборудовании), позволяя приложениям подключаться к корпоративным службам.
Больше API-интерфейсов безопасности, функций и изменений
Идентификаторы журналов безопасности и сетевых журналов
Android 9 включает идентификаторы в журналы безопасности и сетевой активности. Числовой идентификатор монотонно увеличивается для каждого события, что упрощает ИТ-администраторам обнаружение пробелов в своих журналах. Поскольку журналы безопасности и сетевые журналы представляют собой отдельные коллекции, система поддерживает отдельные значения идентификаторов.
Вызовите SecurityEvent.getId()
, DnsEvent.getId()
или ConnectEvent.getId()
, чтобы получить значение идентификатора. Система сбрасывает идентификатор всякий раз, когда ЦОД включает ведение журнала или когда устройство перезагружается. Журналы безопасности, полученные с помощью вызова DevicePolicyManager.retrievePreRebootSecurityLogs()
не включают эти идентификаторы.
Журналирование безопасности
Ведение журнала безопасности назначает каждому SecurityEvent
уровень журнала. Чтобы получить уровень журнала, вызовите getLogLevel()
. Этот метод возвращает значение уровня журнала, которое может быть одним из: LEVEL_INFO
, LEVEL_WARNING
или LEVEL_ERROR
.
Android 9 записывает события, перечисленные в таблице ниже, в журналы безопасности . Чтобы проверить тег события, вызовите getTag()
. Чтобы получить данные о событии, вызовите getData()
.
Ярлык | Описание события |
---|---|
TAG_CERT_AUTHORITY_INSTALLED | Попытка установить новый корневой сертификат в хранилище учетных данных системы. |
TAG_CERT_AUTHORITY_REMOVED | Попытка удалить корневой сертификат из хранилища учетных данных системы. |
TAG_CERT_VALIDATION_FAILURE | Сертификат Wi-Fi не прошел проверку во время подключения. |
TAG_CRYPTO_SELF_TEST_COMPLETED | Система завершила криптографическое самотестирование. |
TAG_KEYGUARD_DISABLED_FEATURES_SET | Приложение администратора отключило функции экрана блокировки устройства или рабочего профиля. |
TAG_KEY_DESTRUCTION | Попытка удалить криптографический ключ. |
TAG_KEY_GENERATED | Попытка сгенерировать новый криптографический ключ. |
TAG_KEY_IMPORT | Попытка импортировать новый криптографический ключ. |
TAG_KEY_INTEGRITY_VIOLATION | Android обнаружил поврежденный ключ шифрования или аутентификации. |
TAG_LOGGING_STARTED | В журнале безопасности началась запись. |
TAG_LOGGING_STOPPED | Журнал безопасности прекратил запись. |
TAG_LOG_BUFFER_SIZE_CRITICAL | Буфер журнала безопасности достиг 90% своей емкости. |
TAG_MAX_PASSWORD_ATTEMPTS_SET | Приложение администратора устанавливает количество разрешенных попыток ввода неправильного пароля. |
TAG_MAX_SCREEN_LOCK_TIMEOUT_SET | Приложение администратора установило максимальное время ожидания блокировки экрана. |
TAG_MEDIA_MOUNT | В устройстве установлены съемные носители информации. |
TAG_MEDIA_UNMOUNT | Устройство отключило съемный носитель. |
TAG_OS_SHUTDOWN | Система Android выключилась. |
TAG_OS_STARTUP | Система Android запустилась. |
TAG_PASSWORD_COMPLEXITY_SET | Приложение администратора устанавливает требования к сложности пароля. |
TAG_PASSWORD_EXPIRATION_SET | Приложение администратора установило срок действия пароля. |
TAG_PASSWORD_HISTORY_LENGTH_SET | Приложение администратора устанавливает длину истории паролей, не позволяя пользователям повторно использовать старые пароли. |
TAG_REMOTE_LOCK | Приложение администратора заблокировало устройство или рабочий профиль. |
TAG_USER_RESTRICTION_ADDED | Приложение администратора установило ограничение пользователя. |
TAG_USER_RESTRICTION_REMOVED | Приложение администратора сняло ограничение пользователя. |
TAG_WIPE_FAILURE | Попытка стереть устройство или рабочий профиль не удалась. |
Задача блокировки экрана рабочего профиля
Начиная с Android 9, владельцы профилей могут потребовать от пользователей установить отдельный вызов экрана блокировки для своего рабочего профиля, используя пользовательское ограничение DISALLOW_UNIFIED_PASSWORD
. Чтобы проверить, имеет ли пользователь один и тот же вызов экрана блокировки для своего устройства и рабочего профиля, вызовите DevicePolicyManager.isUsingUnifiedPassword()
.
Если устройство имеет отдельный экран блокировки рабочего профиля, DevicePolicyManager.setMaximumTimeToLock()
устанавливает время ожидания экрана блокировки только для рабочего профиля, а не для всего устройства.
Доступ к инструментам разработчика
Чтобы сохранить рабочие данные в рабочем профиле, инструмент Android Debug Bridge (adb) не имеет доступа к каталогам и файлам в рабочем профиле.
Поддержка большего количества биометрических опций
В Android 9 добавлен детальный контроль над биометрической аппаратной аутентификацией на экране блокировки рабочего профиля. Вызовите существующий метод DevicePolicyManager.setKeyguardDisabledFeatures()
с KEYGUARD_DISABLE_FACE
и KEYGUARD_DISABLE_IRIS
. Чтобы отключить все методы биометрической аутентификации, предоставляемые устройством, добавьте KEYGUARD_DISABLE_BIOMETRICS
.
Устаревшие политики администратора устройства
Android 9 помечает перечисленные ниже политики как устаревшие для ЦОД с помощью администратора устройства . Политики продолжают работать в Android 9, как и раньше. Начиная с версии Android 10, те же политики будут вызывать исключение SecurityException при вызове администратором устройства.
-
USES_POLICY_DISABLE_CAMERA
-
USES_POLICY_DISABLE_KEYGUARD_FEATURES
-
USES_POLICY_EXPIRE_PASSWORD
-
USES_POLICY_LIMIT_PASSWORD
Некоторые приложения используют администратор устройства для администрирования потребительских устройств. Например, блокировка и очистка потерянного устройства. Для этого по-прежнему будут доступны следующие политики:
Дополнительные сведения об этих изменениях см. в статье Прекращение поддержки администратора устройства .
Упрощенная регистрация QR-кода
Встроенная QR-библиотека.
Android 9 поставляется в комплекте с QR-библиотекой для оптимизации подготовки устройств с QR-кодом. ИТ-администраторам больше не нужно вручную вводить данные Wi-Fi для настройки устройства. Вместо этого в Android 9 можно включить эти сведения о Wi-Fi в QR-код. Когда ИТ-администратор сканирует QR-код на принадлежащем компании устройстве, устройство автоматически подключается к Wi-Fi и вступает в процесс подготовки без какого-либо дополнительного ручного ввода.
Метод предоставления QR-кода поддерживает следующие дополнительные возможности для указания сведений о Wi-Fi:
-
EXTRA_PROVISIONING_WIFI_HIDDEN
-
EXTRA_PROVISIONING_WIFI_PAC_URL
-
EXTRA_PROVISIONING_WIFI_PASSWORD
-
EXTRA_PROVISIONING_WIFI_PROXY_BYPASS
-
EXTRA_PROVISIONING_WIFI_PROXY_HOST
-
EXTRA_PROVISIONING_WIFI_PROXY_PORT
-
EXTRA_PROVISIONING_WIFI_SECURITY_TYPE
-
EXTRA_PROVISIONING_WIFI_SSID
Установите дату и часовой пояс с помощью дополнительных возможностей подготовки
Метод предоставления QR-кода поддерживает дополнительные возможности для установки времени и часового пояса на устройстве:
Параметры очистки данных
Администраторы устройств могут показывать пользователям персонализированное сообщение при удалении рабочего профиля или дополнительного пользователя. Сообщение помогает пользователям устройств понять, что их ИТ-администратор удалил рабочий профиль или дополнительного пользователя. Вызовите wipeData(int, CharSequence)
и предоставьте короткое поясняющее сообщение. При вызове основного пользователя или владельца устройства система не отображает сообщение и начинает сброс настроек устройства до заводских.
Чтобы удалить данные о подписке со встроенной SIM-карты eUICC, вызовите wipeData()
и включите WIPE_EUICC
в аргумент flags
.
Методы для владельцев аффилированных профилей
Владельцам аффилированных профилей доступны следующие методы:
-
DevicePolicyManager.setKeyguardDisabled()
-
DevicePolicyManager.setStatusBarDisabled()
-
PackageInstaller.createSession()