Разрешения на Android

Разрешения для приложений помогают защитить конфиденциальность пользователей, ограничивая доступ к следующим данным:

  • Данные с ограниченным доступом, например состояние системы и контактная информация пользователей.
  • Ограниченные действия, например подключение к подключенному устройству и запись аудио.

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

Полный список разрешений для приложений Android можно найти на странице документации по API разрешений.

Чтобы посмотреть примеры приложений, демонстрирующие работу с разрешениями, посетите репозиторий примеров разрешений Android на GitHub.

Как работать с разрешениями

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

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

На рисунке 1 показан рабочий процесс использования разрешений для приложений.

Рисунок 1. Общая схема работы с разрешениями в Android.

Типы разрешений

В Android разрешения делятся на несколько типов, в том числе разрешения, предоставляемые при установке, динамические и специальные разрешения. Тип разрешения указывает на то, к каким данным с ограниченным доступом и действиям с ограниченным доступом приложение получит доступ, если разрешение будет предоставлено. Уровень защиты для каждого разрешения зависит от его типа и указан на странице документации по API разрешений.

Разрешения, предоставляемые при установке

На изображении слева показан список разрешений, которые приложение запрашивает при установке. На изображении справа показано всплывающее диалоговое окно с двумя вариантами: разрешить и запретить.
Рисунок 2. список разрешений, которые приложение запрашивает при установке в магазине приложений.

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

В Android есть несколько подтипов разрешений, выдаваемых при установке, в том числе обычные разрешения и разрешения для подписи.

Обычные разрешения

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

Система назначает обычным разрешениям уровень защиты normal.

Разрешения для подписей

Система предоставляет разрешение на подпись приложению, только если оно подписано тем же сертификатом, что и приложение или ОС, определяющие разрешение.

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

Система назначает разрешениям уровня signature уровень защиты signature.

Динамические разрешения

Всплывающее диалоговое окно с двумя вариантами: разрешить и запретить.
Рисунок 3. Системный запрос разрешения, который появляется, когда приложение запрашивает динамическое разрешение.

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

Когда приложение запрашивает динамическое разрешение, система показывает запрос, как на рисунке 3.

Многие динамические разрешения запрашивают доступ к личным пользовательским данным – особому типу данных ограниченного доступа, которые могут содержать конфиденциальную информацию. Примеры личных данных пользователя: местоположение и контактная информация.

Микрофон и камера предоставляют доступ к особо конфиденциальной информации. Поэтому система помогает вам объяснить, зачем вашему приложению нужен доступ к этой информации.

Система назначает динамическим разрешениям уровень защиты dangerous.

Специальные разрешения

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

На странице Специальный доступ в настройках системы есть набор переключателей. Многие из этих операций реализованы как специальные разрешения.

Подробнее о том, как запросить специальные разрешения…

Система назначает специальным разрешениям уровень защиты appop.

Группы разрешений

Разрешения могут относиться к группам разрешений. Группа разрешений состоит из набора логически связанных разрешений. Например, разрешения на отправку и получение SMS могут относиться к одной группе, поскольку оба связаны с взаимодействием приложения с SMS.

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

Рекомендации

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

  • Контроль. Пользователь может контролировать, какими данными он делится с приложениями.
  • Прозрачность. Пользователь понимает, какие данные использует приложение и зачем оно получает к ним доступ.
  • Минимизация данных. Приложение получает доступ только к тем данным, которые необходимы для выполнения определенной задачи или действия, запущенного пользователем.

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

Запрашивайте минимальное количество разрешений

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

Как связать динамические разрешения с определенными действиями

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

Учитывайте зависимости приложения

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

Будьте честны

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

Явный доступ к системе

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

Разрешения в системных компонентах

Разрешения нужны не только для запроса системных функций. Системные компоненты вашего приложения могут ограничивать взаимодействие с другими приложениями, как описано в статье ограничение взаимодействия с другими приложениями.