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

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

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

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

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

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

Схема использования разрешений

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

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

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

Рисунок 1. Общий алгоритм использования разрешений в Android.

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

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

Разрешения во время установки

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

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

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

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

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

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

Права доступа к подписи

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

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

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

Разрешения во время выполнения

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

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

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

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

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

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

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

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

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

Узнайте больше о том, как запросить специальные разрешения .

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

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

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

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

Передовые методы

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

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

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

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

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

Свяжите разрешения во время выполнения с конкретными действиями.

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

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

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

Будьте прозрачны.

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

Сделайте доступ к системе явным.

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

Права доступа в компонентах системы

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