Индикаторы конфиденциальности

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

Android 12 обеспечивает пользователям прозрачность, отображая индикаторы, когда приложение использует частный источник данных через разрешения app-op для камер и микрофона. App-ops регистрируют доступы к API, защищенным разрешениями во время выполнения.

App-op отслеживает как статус активности, так и количество отдельных вызовов API, а также взаимодействует с индикаторами микрофона и камеры в Android 12, чтобы показывать пользователям, когда приложения получили доступ к аудиоданным и данным камеры на их устройствах. Когда пользователи нажимают на индикаторы микрофона или камеры, они видят, какие приложения получили доступ к их данным. Эта функция обязательна для всех OEM-производителей.

Требования к видимости индикатора

Ниже приведены требования к индикаторам микрофона и камеры на устройствах под управлением Android 12 и выше:

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

Использование и особенности

В Android 12 пользовательский интерфейс различает текущие и недавние использования. Использование считается активным, если оно отмечено системой как текущее или ему менее 5 секунд.

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

Microphone and camera in-use indicators showing that access is active

Рисунок 1. Индикаторы использования микрофона и камеры, показывающие активный доступ (верхний правый угол)

Доступ считается активным, пока отображаются индикаторы. Сначала отображается значок, затем он переходит в точку, которая сохраняется до тех пор, пока приложение не будет закрыто или отклонено.

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

Indicators for both active and recent access, and whether the access was from camera or microphone

Рисунок 2. Индикаторы активного и недавнего доступа

На рисунке 2 показаны индикаторы активного доступа, когда к данным за последние 5 секунд обращалось запущенное приложение.

Индикаторы недавнего доступа показывают, что приложение получило доступ к данным в течение предыдущих 15 секунд, но приложение неактивно. Все активные приложения отображаются в диалоговом окне, но только одно приложение отображается как источник недавнего доступа, даже если более 1 приложения получили доступ к данным в течение предыдущих 15 секунд. Вид доступа остается замороженным, пока пользователь не закроет диалоговое окно уведомления.

Доставить и включить

Класс PermissionManager предоставляет метод для заполнения диалогового окна, которое находится в системном пользовательском интерфейсе.

  • Пользовательский интерфейс системы реагирует на переключение конфигурации устройства: privacy/mic_camera_indicators_enabled .
  • Переключение необходимо, поскольку существуют два отдельных средства доставки в следующем порядке:
    1. Доставлять.
    2. Давать возможность.
  • Пользовательский интерфейс системы не должен аварийно завершать работу, если метод в PermissionManager не может предоставить необходимые данные.

Поток процесса

Функционал индикатора разрешений состоит из трех основных частей:

  • Приложения
  • Индикаторы (обрабатываются SystemUI)
  • Способ определить, какие приложения используют данные

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

Process flow for Permission Indicator functions

Рисунок 3. Компоненты системы и поток переходов (UI)

Пронумерованные переходы на рисунке 3 описаны ниже:

1- Приложение запрашивает личные данные из системы.

2- Система проверяет разрешения. Если разрешения разрешены, система уведомляет поставщика данных и отмечает использование в app-ops

3- Поставщик данных предоставляет данные приложению.

4-5 Пользователь нажимает на значки. Пользовательский интерфейс системы запрашивает данные из PermissionManager и представляет диалоговое окно пользователю.

Подробности процесса

  1. Приложения используют микрофон и камеру, вызывая AppOpsManager.startOp , stopOp и (или) noteOp . Это создает записи app-op на системном сервере.
  2. System UI прослушивает новые app-ops с помощью прослушивателей AppOpsManager.OnOpActiveChangedInternalListener и OnOpNotedListener . Когда поступает новое использование (через вызов startOp или noteOp ), System UI проверяет, что использование осуществляется системным приложением.
  3. Если системный пользовательский интерфейс проверяет использование системного приложения и если используется микрофон, системный пользовательский интерфейс проверяет, отключен ли микрофон.
  4. Если системный пользовательский интерфейс проверяет использование несистемного приложения (а в случае использования микрофона — что микрофон включен; в случае использования камеры — что камера включена), он отображает значок, отражающий такое использование.

Если System UI получает noteOp , который не имеет продолжительности, он показывает значок не менее 5 секунд. В противном случае значок отображается либо до тех пор, пока не получит stopOp , либо в течение 5 секунд, в зависимости от того, что дольше. Пользователь, нажимающий на значок, инициирует намерение, которое отправляется в PermissionController для запуска диалога.

PermissionController загружает все недавние использования микрофона и камеры. Он проверяет, запущены ли какие-либо из них или были запущены в течение времени, установленного системным пользовательским интерфейсом. Если он находит совпадение, он отображает имя приложения, использовавшего разрешение, и какие разрешения использовало приложение.

Из-за этого изменения в Android 12 и более поздних версиях некоторым приложениям приходится либо менять свое поведение, либо реализовывать особое поведение.

Телефония должна реализовать использование разрешений (для учета отдельного стека микрофонов, используемых при телефонных звонках) при работе с приложением Android Google Search (AGSA) и Google Mobile Services (GMS).