Роли Android

Роль – это уникальное название в системе, связанное с определенными разрешениями и правами. Приложения могут запрашивать определенные роли через Android API, в частности вызывая методы в классе RoleManager.

Ниже приведен список доступных ролей и требований к ним.

Роль Требования
ASSISTANT Хотя бы один из следующих вариантов:
  • В приложении есть действие, которое выполняет вспомогательные действия, учитывая информацию о контексте пользователя, когда он запрашивал помощь (например, название пакета для текущего активного приложения и его контекстную информацию).
  • В приложении есть постоянно работающий сервис голосового взаимодействия, который использует разрешение android.permission.BIND_VOICE_INTERACTION. Он может распознавать речь и проводить сеансы голосового взаимодействия. Кроме того, в приложении есть явный флаг, указывающий, что сервис может обрабатывать действие помощника.
BROWSER Все следующие поля:
  • В приложении есть действие, которое другие приложения могут вызывать с помощью неявных запросов intent. Это действие открывает веб-страницу, соответствующую адресу http://.
  • Приложение должно обрабатывать переходы по ссылкам. То есть если пользователь просматривает веб-страницу и нажимает на адрес http:// в тексте, приложение должно показать контент, соответствующий выбранной ссылке, без дополнительных действий со стороны пользователя.
  • Приложение должно иметь возможность предоставлять веб-страницам информацию о текущем местоположении устройства, когда поступает соответствующий запрос и пользователь его одобряет.
DIALER Все следующие поля:
  • В приложении есть действие, которое другие приложения могут вызывать с помощью неявных запросов intent. Это действие предоставляет пользовательский интерфейс во время звонка.
  • Приложение может обрабатывать намерения входящих вызовов, показывать пользователю информацию о звонке (например, номер телефона звонящего) и позволять отвечать на вызов или отклонять его.
  • Приложение позволяет пользователю совершать звонки и просматривать историю вызовов на устройстве.
SMS Все следующие поля:
  • Приложение соответствует всем требованиям к приложениям для обмена SMS.
  • В приложении есть действие, которое другие приложения могут вызывать с помощью неявных запросов intent, чтобы отправить сообщение на номер телефона.
  • В приложении есть сервис, который защищен разрешением android.permission.SEND_RESPOND_VIA_MESSAGE и может вызываться неявными намерениями. Он позволяет доставлять сообщения, полученные из приложения "Телефон", когда пользователь выбирает вариант "Ответить сообщением" во время входящего вызова. Приложение может доставлять сообщения через собственную систему обмена сообщениями.
  • В приложении есть два широковещательных приемника, один из которых ограничен разрешением android.permission.BROADCAST_SMS, а другой – разрешением android.permission.BROADCAST_WAP_PUSH. Они могут прослушивать текстовые SMS- и MMS-сообщения, отправленные на устройство. После этого приложение должно записать сообщения в поставщик SMS и уведомить пользователей.
EMERGENCY Все следующие поля:
  • Приложение является системным .
  • В приложении есть действие, которое показывает информацию пользователя для экстренных случаев. Любой пользователь может перейти на этот экран, нажав кнопку "Экстренный вызов" в приложении "Экстренный вызов".
HOME В приложении есть действие, которое может запустить главный экран, когда пользователь нажимает кнопку главного экрана. На главном экране должны быть значки приложений и виджеты. Также должна поддерживаться навигация с помощью кнопок или жестов (например, проведение вверх для просмотра всех приложений).
CALL_REDIRECTION В приложении есть сервис, доступ к которому ограничен разрешением android.permission.BIND_CALL_REDIRECTION_SERVICE. К этому сервису может подключаться фреймворк Telecom. Сервис получает исходящий номер телефона от фреймворка Telecom и выполняет одно из следующих действий:
  • Разрешить вызов в текущем виде.
  • Изменить исходящий номер, чтобы перенаправлять вызовы через прокси-номер.
  • Отменить звонок.
CALL_SCREENING В приложении есть служба, которая защищена разрешением android.permission.BIND_SCREENING_SERVICE и выполняет две функции:
  • Блокировка и фильтрация вызовов. Сервис может выбирать, какие вызовы должны быть отправлены в приложение для звонков на телефоне (и, возможно, сопровождаться звуковым сигналом в зависимости от режима "Не беспокоить" или громкости), а какие должны быть беззвучно отправлены на голосовую почту.
  • Идентификация вызовов. Сервис может идентифицировать вызовы и показывать информацию о них в пользовательском интерфейсе.
SUPERVISION Все следующие поля:
  • Приложение является системным или предустановленным сервисом.
  • Назначить эту роль приложению могут только OEM-производители.
  • Единственная цель приложения – предоставить родителю или законному представителю пользователя возможность управлять устройством.
  • В приложении должен быть предусмотрен компонент интерфейса, с помощью которого уполномоченный пользователь может отключить родительский контроль.
SYSTEM_AUTOMOTIVE_CLUSTER Все следующие поля:
  • Приложение является системным в Android Automotive.
  • Назначить эту роль приложению могут только OEM-производители.
  • Приложение позволяет отвечать на телефонные звонки, а также получать доступ к спискам контактов и списку вызовов на дисплее приборной панели автомобиля (обычно рядом с рулем).
COMPANION_DEVICE_WATCH Приложение может отправлять запросы на связывание с часами и управление ими (с помощью API, предоставляемого классом CompanionDeviceManager). Когда часы и приложение подключены через интерфейс приложения, пользователи могут управлять часами из приложения, в том числе синхронизировать контакты и календарь, а также управлять уведомлениями и телефонными звонками.
SYSTEM_AUTOMOTIVE_PROJECTION Все следующие поля:
  • Приложение является системным .
  • Назначить эту роль приложению могут только OEM-производители.
  • Приложение позволяет проецировать экран телефона на дисплей автомобиля. Она позволяет водителям получать доступ к приложениям на телефонах Android и управлять ими, в том числе музыкой, навигацией, телефонными звонками и поиском, используя механизмы ввода в автомобиле, включая сенсорный экран, элементы управления на руле и голосовые команды.
SYSTEM_SHELL Все следующие поля:
  • Приложение является системным и ему назначен UID Process.SHELL_UID.
  • Назначить эту роль приложению могут только OEM-производители.
  • Приложение предоставляет интерфейс, который работает на уровне командной строки, чтобы пользователи могли взаимодействовать с ОС Android. Например, вы можете посмотреть содержимое папки или запустить приложение. Команды оболочки могут выполняться программно приложениями (при наличии необходимых разрешений) или с помощью инструмента ADB.
SYSTEM_CONTACTS Все следующие поля:
  • Приложение является системным .
  • Назначить эту роль приложению могут только OEM-производители.
  • В приложении есть интерфейс для управления контактами (например, для просмотра, отправки, добавления, удаления или поиска контактов). Приложение обновляет поставщика контактов, когда пользователь обновляет свои контакты в приложении. Пользователи также могут звонить, отправлять электронные письма или текстовые сообщения своим контактам из приложения.
SYSTEM_SPEECH_RECOGNIZER Все следующие поля:
  • Приложение является системным .
  • Назначить эту роль приложению могут только OEM-производители.
  • Приложение предоставляет сервис, который может распознавать речь.
  • Когда приложение получает аудиопотоки с микрофона от другого приложения для распознавания речи, оно правильно определяет, что микрофон используется приложением для звонков, и обновляет статистику его работы.
SYSTEM_WIFI_COEX_MANAGER Все следующие поля:
  • Приложение является системным .
  • Назначить эту роль приложению могут только OEM-производители.
  • В приложении есть сервис, который динамически задает список каналов Wi-Fi, которые устройство не должно использовать из-за помех сотовой связи.
SYSTEM_WELLBEING Все следующие поля:
  • Приложение является системным .
  • Назначить эту роль приложению могут только OEM-производители.
  • Приложение должно помогать пользователям меньше отвлекаться и предоставлять им статистику использования устройства, например экранное время за неделю.
SYSTEM_TELEVISION_NOTIFICATION_HANDLER Все следующие поля:
  • Приложение является системным .
  • Назначить эту роль приложению могут только OEM-производители.
  • Приложение должно показывать уведомления во время движения на телевизорах. Приложение также должно показывать текущие активные уведомления при отправке интента android.app.action.TOGGLE_NOTIFICATION_HANDLER_PANEL (из SystemUI).
SYSTEM_COMPANION_DEVICE_PROVIDER Все следующие поля:
  • Приложение является системным .
  • Назначить эту роль приложению могут только OEM-производители.
  • Приложение должно обнаруживать периферийные устройства поблизости. В нем должен быть интерфейс, в котором пользователь может подтвердить, что определенное периферийное устройство должно быть связано с приложением и управляться им. Когда пользователь подтверждает это, управляющее приложение предоставляет связанному приложению разрешение на доступ к периферийному устройству (например, к его названию, адресу, классу и состоянию связывания), и оно может начать процесс связывания.
SYSTEM_DOCUMENT_MANAGER Все следующие поля:
  • Приложение является системным .
  • Назначить эту роль приложению могут только OEM-производители.
  • В приложении есть действие, которое позволяет пользователям получать доступ к существующим документам и создавать новые документы на устройстве.
  • Приложение должно соответствовать всем требованиям, описанным в разделе 2.2.3 CDD Android. Software в разделе [3.2.3.1/H-0-1].
SYSTEM_ACTIVITY_RECOGNIZER Все следующие поля:
  • Приложение является системным .
  • В приложении есть сервис, защищенный разрешением android.permission.ACTIVITY_RECOGNITION, который может распознавать действия (например, бег или езду на велосипеде).
SYSTEM_UI Все следующие поля:
  • Приложение является системным .
  • Назначить эту роль приложению могут только OEM-производители.
  • В приложении есть интерфейс для взаимодействия пользователей с телефонами. Например, главный экран, навигация, недавно использованные приложения, быстрые настройки, панель уведомлений, заблокированный экран, управление громкостью.
SYSTEM_TELEVISION_REMOTE_SERVICE Все следующие поля:
  • Приложение является системным на Android TV.
  • Назначить эту роль приложению могут только OEM-производители.
  • В приложении есть сервис, который может взаимодействовать с HID-устройством пульта телевизора (например, по BLE), внедрять события (например, нажатия кнопок) и отправлять другие данные (например, аудиопоток со встроенного в пульт микрофона) на платформу.
SYSTEM_UI_INTELLIGENCE Все следующие поля:
  • Предустановленный сервис, который через API фреймворка (общедоступные или системные) предоставляет интеллектуальный процессор на устройстве для функций системного интерфейса (например, для прогнозирования и показа следующих приложений для пользователей).
  • Сервис должен соответствовать всем требованиям, описанным в разделе 9.8.6. Запись контента документа определения совместимости Android.
  • У сервиса не может быть разрешения android.permission.INTERNET. Вместо этого оно должно подключаться к интернету через четко определенные API в проекте с открытым исходным кодом.
  • Сервис не может связываться с приложениями, за исключением следующих системных приложений: Bluetooth, "Контакты", "Медиа", "Телефон", SystemUI и компонентов, предоставляющих API для работы с интернетом. Каждую разрешенную привязку необходимо настроить явным образом с помощью конфигурации <allow-association> в системных настройках.
  • Сервис не может передавать данные приложениям, если пользователь не выполнил прямое действие, например не нажал кнопку, чтобы разрешить передачу данных.
SYSTEM_AMBIENT_AUDIO_INTELLIGENCE Все следующие поля:
  • Идентично условиям для SYSTEM_UI_INTELLIGENCE, за исключением того, что предустановленный сервис предоставляет интеллектуальный процессор на устройстве для обработки окружающих звуков (например, распознавания песен, играющих рядом с устройством).
SYSTEM_AUDIO_INTELLIGENCE Все следующие поля:
  • Условия аналогичны условиям для SYSTEM_UI_INTELLIGENCE, за исключением того, что предустановленный сервис предоставляет интеллектуальный процессор на устройстве для аудио (например, субтитры к видео, подкастам, телефонным звонкам, видеозвонкам и аудиосообщениям).
SYSTEM_NOTIFICATION_INTELLIGENCE Все следующие поля:
  • Идентично условиям для SYSTEM_UI_INTELLIGENCE, за исключением того, что предустановленный сервис предоставляет интеллектуальный процессор на устройстве для уведомлений (например, предлагает ответы и действия для уведомлений о сообщениях).
SYSTEM_TEXT_INTELLIGENCE Все следующие поля:
  • Идентично условиям для SYSTEM_UI_INTELLIGENCE, за исключением того, что предустановленный сервис предоставляет интеллектуальный процессор на устройстве для обработки текста (например, для мгновенного перевода или автозаполнения).
SYSTEM_VISUAL_INTELLIGENCE Все следующие поля:
  • Идентично условиям для SYSTEM_UI_INTELLIGENCE, за исключением того, что предустановленный сервис предоставляет интеллектуальный процессор на устройстве для визуальных функций, который включает анализ данных камеры. Например, экран телефона не гаснет, пока пользователь смотрит на него, или ориентация экрана определяется по положению лица пользователя, которое распознается фронтальной камерой устройства.
COMPANION_DEVICE_APP_STREAMING Все следующие поля:
  • Приложение является системным .
  • Назначить эту роль приложению могут только OEM-производители.
  • Допустимые варианты использования:
    • Трансляция или дублирование экрана приложений, которые поддерживают эти функции, с устройства Android, например мобильного телефона или планшета, на настольный компьютер или ноутбук.
  • При установке первоначального соединения между устройствами A и B:
    • Подключение ДОЛЖНО быть авторизовано с помощью одноразового кода, который показывается на исходном устройстве (A) и вводится на подключенном устройстве (B). Если на обоих устройствах есть хотя бы один совпадающий аккаунт в Android AccountManager, пользователь МОЖЕТ подтвердить подключение, введя пароль аккаунта на подключенном устройстве (B).
    • Во время подключения устройства должны находиться рядом 1 друг с другом.
  • Во время трансляции оба устройства должны находиться рядом 1 друг с другом.
  • Приложение может создавать каналы связи с подключенными устройствами и управлять ими, чтобы устройства могли обмениваться данными. Для создания таких каналов связи приложение и подключенные устройства ДОЛЖНЫ успешно пройти взаимную аутентификацию (например, подтвердив знание общих ключей). Каналы связи ДОЛЖНЫ быть защищены сквозным шифрованием.
  • Приложение может отправлять уведомления с исходного устройства (A) на подключенное устройство (B), чтобы пользователь мог выполнять действия с уведомлениями на подключенном устройстве (B).
  • Передавать на подключенное устройство (B) метаданные, необходимые для стриминга приложений, например список приложений, доступных на исходном устройстве (A).
  • Пользователь должен иметь возможность транслировать приложения с исходного устройства (A) на подключенное (B) после того, как он явно выразит свое согласие на это (на исходном устройстве (A) или на подключенном (B)).
  • Воспроизводить (внедрять) события, происходящие в транслируемом приложении на подключенном устройстве (B), обратно на исходном устройстве (A). Например, воспроизведение события касания на подключенном устройстве (B) с теми же координатами, что и на исходном устройстве (A), или воспроизведение события ввода, произошедшего на подключенном устройстве (B), с той же семантикой ввода, что и на исходном устройстве (A).
  • Приложение может заменить поток микрофона исходного устройства на поток микрофона подключенного устройства, пока транслируемое приложение использует микрофон.
  • Приложение захватывает аудио с исходного устройства (A) и передает его на подключенное устройство (B).
  • РЕКОМЕНДУЕТСЯ заблокировать доступ к настройкам приложений и магазинам приложений на подключенном устройстве (B).
  • Начиная с Android 16, на подключенном устройстве (B) ДОЛЖНО быть запрещено делать скриншоты и использовать программы чтения с экрана для конфиденциального контента, например защищенных окон и поверхностей.
  • Проверять целостность сборки ОС подключенного устройства, например с помощью подтверждения устройства, как описано в разделе VerifiedBootState.
  • Транслируйте только те стриминговые сервисы, для которых в реестре аккаунтов на устройстве (например, в классе AccountManager на Android) есть только один подходящий аккаунт на обоих устройствах. В противном случае трансляция ДОЛЖНА быть авторизована с помощью одноразового кода, который показывается на исходном устройстве (A) и вводится на подключенном устройстве (B). Обратите внимание, что в случае устройств, поддерживающих добавление пользователей (а не несколько аккаунтов) с такой же надежной изоляцией данных, как в Android, пользователь считается устройством.
  • ОБЯЗАНО немедленно прекратить трансляцию и отключиться от подключенного устройства (B), если срок действия аутентификации аккаунта на подключенном устройстве (B) истек или она была отозвана.
  • ДОЛЖНО прекратить трансляцию и отключиться от подключенного устройства (B) по истечении времени ожидания на подключенном устройстве (B), на котором виден контент. МОГУТ оставлять экран подключенного устройства включенным в случаях, когда экран устройства Android не выключается, например при использовании WakeLock. Обязательно должен быть указан период бездействия. Если у подключенного устройства (B) нет собственного времени ожидания, должно использоваться время ожидания не более 5 минут.
  • Если на исходном устройстве (A) используется фактор знания для разблокировки экрана, то при заблокированном экране приложение НЕ ДОЛЖНО транслировать приложения на подключенное устройство (B), если на нем нет заблокированного экрана и оно не разблокировано.
  • Если исходное устройство (A) управляется администратором, приложение ДОЛЖНО соблюдать правила, заданные администратором в отношении включения или отключения трансляции на устройства поблизости (например, с помощью настроек DevicePolicyManager в Android).
  • ОБЯЗАНЫ обеспечивать, чтобы удаленные дисплеи и все источники удаленных событий ввода принадлежали к одному логическому устройству (например, удаленный дисплей и подключенная клавиатура) с точки зрения пользователя и события маршрутизировались соответствующим образом.
  • У пользователя ДОЛЖНА быть возможность завершить трансляцию с исходного устройства (A), например с помощью кнопки в постоянном уведомлении. Если на исходном устройстве (A) настроена блокировка экрана, то для переноса данных потребуется его разблокировать. ОБЯЗАТЕЛЬНО показывать на исходном устройстве (A) постоянный элемент, который всегда виден и находится в верхней части экрана.
  • ОБЯЗАНЫ показывать на исходном устройстве (A) индикатор того, что трансляция выполняется на другом устройстве, например значок в строке состояния или постоянное уведомление.
DEVICE_POLICY_MANAGEMENT Все следующие поля:
  • Эту роль могут назначать только OEM-производители. Приложения не могут запрашивать ее, поскольку она должна назначаться по умолчанию названию пакета, определенному OEM-производителем при поставке устройства.
  • Приложение должно быть способно подготовить управляемый профиль (владелец профиля) или управляемое устройство (владелец устройства), в том числе скачать и установить подходящий клиент правил для устройств, чтобы стать владельцем устройства или профиля, если это необходимо.
  • Приложение может динамически обновлять ресурсы, например строки и графические объекты, используемые для управления правилами для устройств.
  • Приложение может быть предустановленным системным приложением или может быть скачано и установлено до инициализации.
  • Если приложение с ролью устанавливается для определенного пользователя Android, оно должно быть установлено во всех подходящих профилях этого пользователя.
SYSTEM_APP_PROTECTION_SERVICE Все следующие поля:
  • Приложение является системным .
  • Единственная цель приложения – обнаруживать потенциально опасные приложения (которые могут представлять угрозу для пользователей, их данных или устройств, например трояны, шпионское ПО и приложения для фишинга) или нежелательное ПО для мобильных устройств.
  • Приложение должно соответствовать всем требованиям, описанным в разделе 9.8.6 данные на уровне ОС и данные о среде.
  • В приложении не должно быть объявлено обычное разрешение android.permission.INTERNET. Вместо этого оно должно подключаться к интернету через четко определенные API в проекте с открытым исходным кодом.
  • Приложение не должно связываться с другими приложениями, за исключением следующих системных приложений: Permission Controller и компонентов, предоставляющих API телефонии и интернета. Каждую разрешенную привязку необходимо настроить отдельно с помощью параметра <allow-association> в конфигурации системы.
  • Приложение не должно передавать данные другим приложениям, если пользователь не выполнил прямое действие (например, не нажал кнопку, чтобы разрешить передачу данных).
SYSTEM_AUTOMOTIVE_CALENDAR_SYNC_MANAGER Все следующие поля:
  • Приложение является системным .
  • Назначить эту роль приложению могут только OEM-производители.
  • Приложение должно передавать данные календаря с телефона пользователя iOS или Android на устройство Android Auto. Устройство Android Auto должно хранить эти данные в поставщике календаря.
  • В приложении должен быть компонент пользовательского интерфейса на телефоне, с помощью которого пользователь может включить синхронизацию календаря и выбрать календари для синхронизации. В приложении должен быть элемент интерфейса, позволяющий пользователю отключить синхронизацию календаря.
  • Приложение должно работать без подключения к интернету. например через прямое проводное или беспроводное подключение.
AUTOMOTIVE_NAVIGATION Все следующие поля:
  • В приложении есть действие, которое другие приложения могут вызывать с помощью неявных запросов intent. Оно показывает текущее местоположение пользователя и его окружение.
  • В приложении есть действие, которое другие приложения могут вызывать с помощью неявных запросов intent. Это позволяет пользователю перейти к указанному местоположению.
  • В приложении есть действие, которое запускается на приборной панели, когда приложение удерживает фокус навигации. В действии должно показываться текущее местоположение пользователя и его окружение, а также должна быть возможность навигации к указанному местоположению.
COMPANION_DEVICE_COMPUTER Все следующие поля:
  • Приложение является системным .
  • Назначить эту роль приложению могут только OEM-производители.
  • Разрешите пользователям дублировать уведомления и получать доступ к фотографиям и медиафайлам с телефона на подключенном компьютере.
SYSTEM_SETTINGS_INTELLIGENCE Хотя бы один из следующих вариантов:
  • Приложение является системным .
  • Назначить эту роль приложению могут только OEM-производители.
  • Включает сервис, который обеспечивает работу умных функций в приложении "Настройки", например подсказок и поиска.
NOTES Все следующие поля:
  • В приложении есть действие, которое другие приложения могут вызывать с помощью неявных запросов намерений. Это действие позволяет пользователю создать заметку независимо от того, заблокирован экран или нет.
  • Для этого в приложении должно быть действие с фильтром intent для android.intent.action.CREATE_NOTE с категорией android.intent.category.DEFAULT. Кроме того, объект activity должен правильно обрабатывать дополнительный параметр intent android.intent.extra.USE_STYLUS_MODE.
  • В манифесте приложения для атрибутов showWhenLocked и turnScreenOn должно быть задано значение true.
COMPANION_DEVICE_GLASSES Приложение может отправлять запросы на связывание с умными очками и управление ими (с помощью API, предоставляемого классом CompanionDeviceManager). Когда очки и приложение подключены с помощью интерфейса, предоставляемого CDM, пользователи могут управлять очками, предоставляя им доступ к контактам и разрешение на управление уведомлениями и телефонными звонками.
COMPANION_DEVICE_NEARBY_DEVICE_STREAMING Все следующие поля:
  • Приложение является системным .
  • Назначить эту роль приложению могут только OEM-производители.
  • Допустимые варианты использования:
    • Стриминг приложений с устройства Android, например телефона или планшета, на экран автомобиля.
    • Стриминг приложений с устройства Android, например мобильного телефона или планшета, на XR-устройство.
  • При установке первоначального соединения между устройствами A и B:
    • Подключение ДОЛЖНО быть авторизовано с помощью одноразового кода, который показывается на исходном устройстве (A) и вводится на подключенном устройстве (B). Если на обоих устройствах есть хотя бы один совпадающий аккаунт в Android AccountManager, пользователь МОЖЕТ подтвердить подключение, введя пароль аккаунта на подключенном устройстве (B).
    • Во время подключения устройства должны находиться рядом 1 друг с другом.
  • Во время трансляции оба устройства должны находиться рядом 1 друг с другом.
  • Приложение может создавать каналы связи с подключенными устройствами и управлять ими, чтобы устройства могли обмениваться данными. Для создания таких каналов связи приложение и подключенные устройства ДОЛЖНЫ успешно пройти взаимную аутентификацию (например, подтвердив знание общих ключей). Каналы связи ДОЛЖНЫ быть защищены сквозным шифрованием.
  • Приложение может отправлять уведомления с исходного устройства (A) на подключенное устройство (B), чтобы пользователь мог выполнять действия с уведомлениями на подключенном устройстве (B).
  • Передавать на подключенное устройство (B) метаданные, необходимые для стриминга приложений, например список приложений, доступных на исходном устройстве (A).
  • Пользователь должен иметь возможность транслировать приложения с исходного устройства (A) на подключенное (B) после того, как он явно выразит свое согласие на это (на исходном устройстве (A) или на подключенном (B)).
  • Воспроизводить (внедрять) события, происходящие в транслируемом приложении на подключенном устройстве (B), обратно на исходном устройстве (A). Например, воспроизведение события касания на подключенном устройстве (B) с теми же координатами, что и на исходном устройстве (A), или воспроизведение события ввода, произошедшего на подключенном устройстве (B), с той же семантикой ввода, что и на исходном устройстве (A).
  • Приложение может заменить поток микрофона исходного устройства на поток микрофона подключенного устройства, пока транслируемое приложение использует микрофон.
  • Приложение захватывает аудио с исходного устройства (A) и передает его на подключенное устройство (B).
  • РЕКОМЕНДУЕТСЯ заблокировать доступ к настройкам приложений и магазинам приложений на подключенном устройстве (B).
  • Начиная с Android 16 на подключенном устройстве (B) ДОЛЖНЫ быть заблокированы скриншоты и чтение с экрана конфиденциального контента, например защищенных окон и поверхностей.
  • Проверять целостность сборки ОС подключенного устройства, например с помощью подтверждения устройства, как описано в разделе VerifiedBootState.
  • Транслируйте только те стриминговые сервисы, для которых в реестре аккаунтов на устройстве (например, в классе AccountManager на Android) есть только один подходящий аккаунт на обоих устройствах. В противном случае трансляция ДОЛЖНА быть авторизована с помощью одноразового кода, который показывается на исходном устройстве (A) и вводится на подключенном устройстве (B). Обратите внимание, что в случае устройств, поддерживающих добавление пользователей (а не несколько аккаунтов) с такой же надежной изоляцией данных, как в Android, пользователь считается устройством.
  • ОБЯЗАНО немедленно прекратить трансляцию и отключиться от подключенного устройства (B), если срок действия аутентификации аккаунта на подключенном устройстве (B) истек или она была отозвана.
  • ДОЛЖНО прекратить трансляцию и отключиться от подключенного устройства (B) по истечении времени ожидания на подключенном устройстве (B), на котором виден контент. МОГУТ оставлять экран подключенного устройства включенным в случаях, когда экран устройства Android не выключается, например при использовании WakeLock. Обязательно должен быть указан период бездействия. Если у подключенного устройства (B) нет собственного времени ожидания, должно использоваться время ожидания не более 5 минут.
  • Если на исходном устройстве (A) используется фактор знания для разблокировки экрана, то при заблокированном экране приложение НЕ ДОЛЖНО транслировать приложения на подключенное устройство (B), если на нем нет заблокированного экрана и оно не разблокировано.
  • Если исходное устройство (A) управляется администратором, приложение ДОЛЖНО соблюдать правила, заданные администратором в отношении включения или отключения трансляции на устройства поблизости (например, с помощью настроек DevicePolicyManager в Android).
  • ОБЯЗАНЫ обеспечивать, чтобы удаленные дисплеи и все источники удаленных событий ввода принадлежали к одному логическому устройству (например, удаленный дисплей и подключенная клавиатура) с точки зрения пользователя и события маршрутизировались соответствующим образом.
  • У пользователя ДОЛЖНА быть возможность завершить трансляцию с исходного устройства (A), например с помощью кнопки в постоянном уведомлении. Если на исходном устройстве (A) настроена блокировка экрана, то для переноса данных потребуется его разблокировать. ОБЯЗАТЕЛЬНО показывать на исходном устройстве (A) постоянный элемент, который всегда виден и находится в верхней части экрана.
  • ОБЯЗАНЫ показывать на исходном устройстве (A) индикатор того, что трансляция выполняется на другом устройстве, например значок в строке состояния или постоянное уведомление.
WALLET Один из вариантов:
  • В приложении есть сервис NFC APDU, который статически регистрирует хотя бы один идентификатор приложения в категории PAYMENT.
  • Приложение реализует экземпляр QuickAccessWalletService.

1 Близость определяется тем, что два устройства находятся в радиусе действия Bluetooth или Wi-Fi друг от друга или используют одну и ту же локальную сеть.