Разрешения, касающиеся местоположения, микрофона и камеры, предоставляют вашему приложению доступ к особо конфиденциальной информации о пользователях. Платформа включает в себя несколько механизмов, описанных на этой странице, которые помогут пользователям быть в курсе и контролировать, какие приложения могут получать доступ к местоположению, микрофону и камере.
Эти функции системы, обеспечивающие конфиденциальность, не должны влиять на то, как ваше приложение обрабатывает разрешения, связанные с местоположением, микрофоном и камерой, при условии соблюдения лучших практик обеспечения конфиденциальности .
В частности, убедитесь, что вы выполнили в своем приложении следующие действия:
- Дождитесь, пока пользователь не предоставит вашему приложению разрешение на доступ к
CAMERAустройства. - Дождитесь разрешения
RECORD_AUDIOдля доступа к микрофону устройства, пока пользователь не предоставит вашему приложению это разрешение. - Дождитесь, пока пользователь не начнет взаимодействовать с функцией вашего приложения, требующей определения местоположения, прежде чем запрашивать разрешение
ACCESS_COARSE_LOCATIONилиACCESS_FINE_LOCATION, как описано в руководстве по запросу разрешений на определение местоположения . - Дождитесь, пока пользователь предоставит вашему приложению разрешение
ACCESS_COARSE_LOCATIONилиACCESS_FINE_LOCATION, прежде чем запрашивать разрешениеACCESS_BACKGROUND_LOCATION.
Панель управления конфиденциальностью
На поддерживаемых устройствах под управлением Android 12 и выше в системных настройках появляется экран «Панель конфиденциальности». На этом экране пользователи могут получить доступ к отдельным экранам, отображающим, когда приложения получают доступ к информации о местоположении, камере и микрофоне. На каждом экране отображается хронология доступа различных приложений к определенному типу данных. На рисунке 1 показана хронология доступа к данным о местоположении.
Обоснуйте необходимость доступа к данным.
Ваше приложение может предоставить пользователям объяснение, помогающее им понять, почему ваше приложение получает доступ к информации о местоположении, камере или микрофоне. Это объяснение может отображаться на новом экране панели управления конфиденциальностью, на экране разрешений вашего приложения или на обоих экранах.
Чтобы объяснить, зачем вашему приложению нужны данные о местоположении, камере и микрофоне, выполните следующие шаги:
Добавьте активность, которая при запуске будет предоставлять обоснование того, почему ваше приложение выполняет тот или иной тип доступа к данным. В этой активности установите атрибут
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)
Java
SensorPrivacyManager sensorPrivacyManager = getApplicationContext() .getSystemService(SensorPrivacyManager.class); boolean supportsMicrophoneToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.MICROPHONE); boolean supportsCameraToggle = sensorPrivacyManager .supportsSensorToggle(Sensors.CAMERA);