Разрешения, связанные с местоположением, микрофоном и камерой, предоставляют вашему приложению доступ к особо конфиденциальной информации о пользователях. Платформа включает несколько механизмов, описанных на этой странице, чтобы помочь пользователям оставаться в курсе событий и контролировать, какие приложения могут получать доступ к местоположению, микрофону и камере.
Эти системные функции, обеспечивающие конфиденциальность, не должны влиять на то, как ваше приложение обрабатывает разрешения, связанные с местоположением, микрофоном и камерой, если вы следуете лучшим практикам обеспечения конфиденциальности .
В частности, убедитесь, что вы выполнили в своем приложении следующие действия:
- Дождитесь, пока пользователь предоставит вашему приложению разрешение
CAMERA
для доступа к камере устройства. - Дождитесь, пока пользователь предоставит вашему приложению разрешение
RECORD_AUDIO
для доступа к микрофону устройства. - Подождите, пока пользователь не начнет взаимодействовать с функцией вашего приложения, требующей определения местоположения, прежде чем запрашивать разрешение
ACCESS_COARSE_LOCATION
или разрешениеACCESS_FINE_LOCATION
, как описано в руководстве по запросу разрешений на определение местоположения . - Подождите, пока пользователь не предоставит вашему приложению разрешение
ACCESS_COARSE_LOCATION
или разрешениеACCESS_FINE_LOCATION
, прежде чем запрашивать разрешениеACCESS_BACKGROUND_LOCATION
.
Панель управления конфиденциальностью
На поддерживаемых устройствах под управлением Android 12 или выше в системных настройках отображается экран Privacy Dashboard. На этом экране пользователи могут получить доступ к отдельным экранам, которые показывают, когда приложения получают доступ к информации о местоположении, камере и микрофоне. На каждом экране отображается временная шкала того, когда различные приложения получали доступ к определенному типу данных. На рисунке 1 показана временная шкала доступа к данным для информации о местоположении.
Показать обоснование для доступа к данным
Ваше приложение может предоставить обоснование для пользователей, чтобы помочь им понять, почему ваше приложение получает доступ к информации о местоположении, камере или микрофоне. Это обоснование может появиться на новом экране Privacy Dashboard, на экране разрешений вашего приложения или на обоих.
Чтобы объяснить, почему ваше приложение получает доступ к информации о местоположении, камере и микрофоне, выполните следующие действия:
Добавьте активность, которая при запуске дает некоторое обоснование того, почему ваше приложение выполняет определенный тип действия доступа к данным. В этой активности установите атрибут
android:permission
наSTART_VIEW_PERMISSION_USAGE
.Если ваше приложение предназначено для Android 12 или выше, необходимо явно указать значение атрибута
android:exported
.Добавьте следующий фильтр намерений к недавно добавленному действию:
<!-- android:exported required if you target Android 12. --> <activity android:name=".DataAccessRationaleActivity" android:permission="android.permission.START_VIEW_PERMISSION_USAGE" android:exported="true"> <!-- VIEW_PERMISSION_USAGE shows a selectable information icon on your app permission's page in system settings. VIEW_PERMISSION_USAGE_FOR_PERIOD shows a selectable information icon on the Privacy Dashboard screen. --> <intent-filter> <action android:name="android.intent.action.VIEW_PERMISSION_USAGE" /> <action android:name="android.intent.action.VIEW_PERMISSION_USAGE_FOR_PERIOD" /> <category android:name="android.intent.category.DEFAULT" /> ... </intent-filter> </activity>
Решите, что должна отображать ваша активность по обоснованию доступа к данным. Например, вы можете показать веб-сайт вашего приложения или статью справочного центра. Чтобы предоставить более подробное объяснение о типах данных, к которым обращается ваше приложение, а также о том, когда произошел доступ, обработайте дополнительные данные, которые система включает при вызове намерения использования разрешения:
- Если система вызывает
ACTION_VIEW_PERMISSION_USAGE
, ваше приложение может получить значение дляEXTRA_PERMISSION_GROUP_NAME
. - Если система вызывает
ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD
, ваше приложение может извлекать значения дляEXTRA_PERMISSION_GROUP_NAME
,EXTRA_ATTRIBUTION_TAGS
,EXTRA_START_TIME
иEXTRA_END_TIME
.
- Если система вызывает
В зависимости от того, какие фильтры намерений вы добавляете, пользователи видят информационный значок рядом с названием вашего приложения на определенных экранах:
- Если вы добавите фильтр намерений, содержащий действие
VIEW_PERMISSION_USAGE
, пользователи увидят значок на странице разрешений вашего приложения в системных настройках. Вы можете применить это действие ко всем разрешениям времени выполнения. - Если вы добавите фильтр намерений, содержащий действие
VIEW_PERMISSION_USAGE_FOR_PERIOD
, пользователи будут видеть значок рядом с названием вашего приложения всякий раз, когда оно появляется на экране панели конфиденциальности.
Когда пользователи выбирают этот значок, запускается процесс обоснования вашего приложения.
Индикаторы
На устройствах под управлением Android 12 или выше, когда приложение получает доступ к микрофону или камере, в строке состояния появляется значок. Если приложение находится в режиме погружения , значок появляется в правом верхнем углу экрана. Пользователи могут открыть Быстрые настройки и выбрать значок, чтобы просмотреть, какие приложения в данный момент используют микрофон или камеру. На рисунке 2 показан пример снимка экрана, содержащего значки.
Определите расположение индикаторов на экране
Если ваше приложение поддерживает режим погружения или полноэкранный пользовательский интерфейс, индикаторы могут на мгновение перекрывать пользовательский интерфейс вашего приложения. Чтобы помочь адаптировать ваш пользовательский интерфейс к этим индикаторам, система вводит метод getPrivacyIndicatorBounds()
, который демонстрирует следующий фрагмент кода. Используя этот API, вы можете определить границы, где могут появляться индикаторы. Затем вы можете решить организовать пользовательский интерфейс вашего экрана по-другому.
Котлин
view.setOnApplyWindowInsetsListener { view, windowInsets -> val indicatorBounds = windowInsets.getPrivacyIndicatorBounds() // change your UI to avoid overlapping windowInsets }
Переключатели
На поддерживаемых устройствах с Android 12 или выше пользователи могут включать и отключать доступ к камере и микрофону для всех приложений на устройстве, нажав одну опцию переключения. Пользователи могут получить доступ к переключаемым опциям из быстрых настроек , как показано на рисунке 3, или из экрана конфиденциальности в системных настройках.
Переключение камеры и микрофона влияет на все приложения на устройстве:
- Когда пользователь отключает доступ к камере, ваше приложение получает пустой сигнал с камеры.
Когда пользователь отключает доступ к микрофону, ваше приложение получает тихий звук. Кроме того, датчики движения ограничены по частоте , независимо от того, объявляете ли вы разрешение
HIGH_SAMPLING_RATE_SENSORS
.
Когда пользователь отключает доступ к камере или микрофону, а затем запускает приложение, которому требуется доступ к информации о камере или микрофоне, система напоминает пользователю, что переключатель на уровне устройства отключен.
Проверить поддержку устройства
Чтобы проверить, поддерживает ли устройство переключение микрофона и камеры, добавьте логику, показанную в следующем фрагменте кода:
Котлин
val sensorPrivacyManager = applicationContext .getSystemService(SensorPrivacyManager::class.java) as SensorPrivacyManager val supportsMicrophoneToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.MICROPHONE) val supportsCameraToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.CAMERA)
Ява
SensorPrivacyManager sensorPrivacyManager = getApplicationContext() .getSystemService(SensorPrivacyManager.class); boolean supportsMicrophoneToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.MICROPHONE); boolean supportsCameraToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.CAMERA);