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