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

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

Android 12 обеспечивает пользователям прозрачность, отображая индикаторы, когда приложение использует частный источник данных через разрешения на работу приложения с камерами и микрофоном. 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 секунд, но приложение неактивно. В диалоговом окне отображаются все активные приложения, но только одно приложение отображается как источник недавнего доступа, даже если более одного приложения обращались к данным в течение предшествующих 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 . При этом на системном сервере создаются записи операций приложения.
  2. Системный пользовательский интерфейс прослушивает новые операции приложения с помощью прослушивателей AppOpsManager.OnOpActiveChangedInternalListener и OnOpNotedListener . Когда поступает новое использование (через вызов startOp или noteOp ), системный пользовательский интерфейс проверяет, что это использование происходит системным приложением.
  3. Если системный пользовательский интерфейс проверяет использование системного приложения и используется микрофон, системный пользовательский интерфейс проверяет, отключен ли микрофон.
  4. Если системный пользовательский интерфейс проверяет использование несистемных приложений (а при использовании микрофона — что микрофон включен; при использовании камеры — что камера включена), в нем отображается значок, отражающий такое использование.

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

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

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

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