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

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

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

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

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

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

Рабочий процесс использования разрешений

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лучшие практики

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

,

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

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

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

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

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

Рабочий процесс использования разрешений

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лучшие практики

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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