Разрешения приложений помогают поддерживать конфиденциальность пользователей, защищая доступ к следующим данным:
- Ограниченные данные , такие как состояние системы и контактная информация пользователей
- Ограниченные действия , такие как подключение к сопряженному устройству и запись звука
На этой странице представлен обзор того, как работают разрешения Android, включая высокоуровневый рабочий процесс для использования разрешений, описания различных типов разрешений и некоторые передовые практики использования разрешений в вашем приложении. На других страницах объясняется, как минимизировать запросы вашего приложения на разрешения , объявлять разрешения , запрашивать разрешения времени выполнения и ограничивать взаимодействие других приложений с компонентами вашего приложения.
Чтобы просмотреть полный список разрешений приложений Android, посетите страницу справки по API разрешений .
Чтобы просмотреть примеры приложений, демонстрирующих рабочий процесс разрешений, посетите репозиторий примеров разрешений Android на GitHub.
Рабочий процесс использования разрешений
Если ваше приложение предлагает функциональные возможности, которые могут потребовать доступа к ограниченным данным или ограниченным действиям, определите, можете ли вы получить информацию или выполнить действия без необходимости объявлять разрешения . Вы можете реализовать множество вариантов использования в своем приложении, например, делать фотографии, приостанавливать воспроизведение мультимедиа и показывать релевантную рекламу, без необходимости объявлять какие-либо разрешения.
Если вы решили, что ваше приложение должно получить доступ к ограниченным данным или выполнить ограниченные действия для выполнения варианта использования, объявите соответствующие разрешения. Некоторые разрешения, известные как разрешения времени установки , автоматически предоставляются при установке вашего приложения. Другие разрешения, известные как разрешения времени выполнения , требуют, чтобы ваше приложение пошло на шаг дальше и запросило разрешение во время выполнения.
На рисунке 1 показан рабочий процесс использования разрешений приложения:
Типы разрешений
Android классифицирует разрешения по различным типам, включая разрешения времени установки, разрешения времени выполнения и специальные разрешения. Тип каждого разрешения указывает объем ограниченных данных, к которым может получить доступ ваше приложение, и объем ограниченных действий, которые может выполнить ваше приложение, когда система предоставляет вашему приложению это разрешение. Уровень защиты для каждого разрешения основан на его типе и отображается на странице справки API разрешений .
Разрешения на установку
Разрешения на время установки предоставляют вашему приложению ограниченный доступ к закрытым данным или позволяют вашему приложению выполнять ограниченные действия, которые минимально влияют на систему или другие приложения. Когда вы объявляете разрешения на время установки в своем приложении, магазин приложений представляет пользователю уведомление о разрешении на время установки, когда он просматривает страницу сведений о приложении, как показано на рисунке 2. Система автоматически предоставляет вашему приложению разрешения, когда пользователь устанавливает ваше приложение.
Android включает несколько подтипов разрешений времени установки, включая обычные разрешения и разрешения подписи.
Обычные разрешения
Эти разрешения обеспечивают доступ к данным и действиям, которые выходят за рамки изолированной программной среды вашего приложения, но представляют минимальный риск для конфиденциальности пользователя и работы других приложений.
Система назначает normal
уровень защиты обычным разрешениям.
Разрешения на подпись
Система предоставляет приложению разрешение на подпись только в том случае, если приложение подписано тем же сертификатом, что и приложение или ОС, определяющая разрешение.
Приложения, реализующие привилегированные сервисы, такие как автозаполнение или VPN-сервисы, также используют разрешения подписи. Эти приложения требуют разрешения подписи, связывающей сервисы, чтобы только система могла связываться с сервисами.
Система назначает уровень защиты signature
разрешениям на подпись.
Разрешения времени выполнения
Разрешения времени выполнения, также известные как опасные разрешения, предоставляют вашему приложению дополнительный доступ к ограниченным данным или позволяют вашему приложению выполнять ограниченные действия, которые более существенно влияют на систему и другие приложения. Поэтому вам необходимо запросить разрешения времени выполнения в вашем приложении, прежде чем вы сможете получить доступ к ограниченным данным или выполнить ограниченные действия. Не думайте, что эти разрешения были предоставлены ранее — проверяйте их и, при необходимости, запрашивайте их перед каждым доступом.
Когда ваше приложение запрашивает разрешение на выполнение, система выводит запрос на разрешение на выполнение, как показано на рисунке 3.
Многие разрешения времени выполнения имеют доступ к личным данным пользователя , особому типу ограниченных данных, которые включают потенциально конфиденциальную информацию. Примерами личных данных пользователя являются местоположение и контактная информация.
Микрофон и камера обеспечивают доступ к особо конфиденциальной информации. Поэтому система помогает вам объяснить, почему ваше приложение получает доступ к этой информации .
Система назначает dangerous
уровень защиты разрешениям времени выполнения.
Специальные разрешения
Специальные разрешения соответствуют определенным операциям приложения. Только платформа и OEM-производители могут определять специальные разрешения. Кроме того, платформа и OEM-производители обычно определяют специальные разрешения, когда хотят защитить доступ к особенно мощным действиям, таким как рисование поверх других приложений.
Страница Special app access в системных настройках содержит набор переключаемых пользователем операций. Многие из этих операций реализованы как специальные разрешения.
Узнайте больше о том, как запросить специальные разрешения .
Система назначает уровень защиты appop
специальным разрешениям.
Группы разрешений
Разрешения могут принадлежать группам разрешений . Группы разрешений состоят из набора логически связанных разрешений. Например, разрешения на отправку и получение SMS-сообщений могут принадлежать одной и той же группе, поскольку они оба относятся к взаимодействию приложения с SMS.
Группы разрешений помогают системе минимизировать количество системных диалогов, которые отображаются для пользователя, когда приложение запрашивает тесно связанные разрешения. Когда пользователю предлагается предоставить разрешения для приложения, разрешения, принадлежащие к той же группе, отображаются в том же интерфейсе. Однако разрешения могут менять группы без уведомления, поэтому не предполагайте, что определенное разрешение сгруппировано с любым другим разрешением.
Лучшие практики
Разрешения приложений основаны на функциях безопасности системы и помогают Android поддерживать следующие цели, связанные с конфиденциальностью пользователей:
- Контроль: пользователь может контролировать данные, которыми он делится с приложениями.
- Прозрачность: пользователь понимает, какие данные использует приложение и почему приложение получает доступ к этим данным.
- Минимизация данных: приложение получает доступ и использует только те данные, которые необходимы для конкретной задачи или действия, выполняемого пользователем.
В этом разделе представлен набор основных рекомендаций по эффективному использованию разрешений в вашем приложении. Для получения более подробной информации о том, как работать с разрешениями на Android, посетите страницу рекомендаций по разрешениям приложений .
Запросить минимальное количество разрешений
Когда пользователь запрашивает определенное действие в вашем приложении, ваше приложение должно запрашивать только те разрешения, которые ему нужны для выполнения этого действия. В зависимости от того, как вы используете разрешения, может быть альтернативный способ выполнить сценарий использования вашего приложения, не полагаясь на доступ к конфиденциальной информации.
Свяжите разрешения времени выполнения с определенными действиями
Запрашивайте разрешения как можно позже в потоке сценариев использования вашего приложения. Например, если ваше приложение позволяет пользователям отправлять аудиосообщения другим, подождите, пока пользователь не перейдет на экран обмена сообщениями и не нажмет кнопку «Отправить аудиосообщение» . После того, как пользователь нажмет кнопку, ваше приложение может запросить доступ к микрофону.
Учитывайте зависимости вашего приложения
Когда вы включаете библиотеку, вы также наследуете ее требования к разрешениям. Помните о разрешениях, которые требуются каждой зависимости, и о том, для чего используются эти разрешения.
Будьте прозрачны
При запросе разрешений четко объясните, к чему вы получаете доступ, почему и какие функции будут затронуты в случае отказа в предоставлении разрешений, чтобы пользователи могли принимать обоснованные решения.
Сделайте доступ к системе явным
При доступе к конфиденциальным данным или оборудованию, например камере или микрофону, предоставьте в своем приложении постоянную индикацию, если система еще не предоставляет эти индикаторы . Это напоминание помогает пользователям точно понять, когда ваше приложение получает доступ к ограниченным данным или выполняет ограниченные действия.
Разрешения в системных компонентах
Разрешения предназначены не только для запроса системных функций. Системные компоненты вашего приложения могут ограничивать, какие другие приложения могут взаимодействовать с вашим приложением, как описано на странице о том, как ограничить взаимодействие с другими приложениями .