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

В Android 6.0 и более поздних версиях модель разрешений приложений Android разработана, чтобы сделать разрешения более понятными, полезными и безопасными для пользователей. Модель переехала приложения для Android , которые требуют опасных разрешений (см Затронутых разрешений ) из инсталляционной-времени модели разрешения на модель разрешения выполнения:

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

    (Android 5.1 и ниже) Пользователи предоставляют опасные разрешения на приложение при установке или обновлении приложения. Производители устройств и операторы связи могут предварительно устанавливать приложения с заранее предоставленными разрешениями без уведомления пользователя.

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

    (Android 6,0 - 9) Пользователи предоставить опасные разрешения на приложение , когда приложение работает. Когда запрашиваются разрешения (например, когда приложение запускается или когда пользователь получает доступ к определенной функции), зависит от приложения, но пользователь предоставляет / запрещает доступ приложения к определенным группам разрешений. OEM-производители / операторы связи могут предварительно устанавливать приложения, но не могут предварительно предоставлять разрешения, если они не пройдут через процесс исключения. (См Создание исключений .)

    (Android 10) Пользователи видят повышенную прозрачность и контроль над которыми приложения имеют разрешение во время выполнения распознавания активности (AR). Пользователи продиктованы разрешениями во время выполнения диалогового либо всегда позволяет, позволяют во время использования, или запретить разрешения. При обновлении операционной системы до Android 10, разрешение , данные приложений сохраняется, но пользователи могут перейти в настройки и изменить их.

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

Затронутые разрешения

Android 6.0 и выше требует опасных разрешений для использования модели разрешений времени выполнения. Опасные разрешения являются разрешениями более высокого риска (таких как READ_CALENDAR ) , которые предоставляют запрашивающее приложениям доступ к личным данным пользователя, или контроль над устройством, которое может отрицательно воздействовать на пользователь. Чтобы просмотреть список опасных разрешений, выполните команду:

adb shell pm list permissions -g -d

Android 6.0 и выше не меняет поведение нормальных разрешений . Это все неопасные разрешения, включая обычные, системные и сигнатурные. Нормальные разрешения являются разрешениями более низкий риска (например, SET_WALLPAPER ) , которые предоставляют запрашивающие приложения доступ к изолированному прикладному уровню особенности с минимальным риском для других приложений, системы или пользователем. Как и в Android 5.1 и более ранних версиях, система автоматически предоставляет обычные разрешения запрашивающему приложению при установке и не запрашивает одобрение у пользователя. Подробные сведения о разрешениях см <разрешение> элемент документации.

Жесткие и мягкие ограничения в Android 10

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

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

При установке приложения установщик (например, Google Play Store) может не заносить в белый список ограниченные разрешения для приложения. Разрешения ограничиваются платформой и предоставляются только в том случае, если приложение соответствует специальным критериям политики платформы. Примеры жестко ограниченных типов разрешений включают разрешения для SMS и журнала вызовов.

Внесение в белый список происходит во время установки, а когда

  • приложение уже установлено во время обновления Android с 9 до 10.
  • предварительно предоставлено разрешение или предустановлено приложение.
  • разрешение требуется для роли, которая уже определена для внесения разрешения в белый список.
  • программа установки (например, Google Play Store) помечает разрешение как внесенное в белый список.

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

Требования

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

  • Модель разрешений времени выполнения должна быть согласованной на всех устройствах под управлением Android 6.0 и более поздних версий. Это обеспечивается тестами Android Compatibility Test Suite (CTS).
  • Приложения должны предлагать пользователям предоставлять разрешения приложения во время выполнения. Для получения дополнительной информации см Обновления приложений . Ограниченные исключения могут быть предоставлены приложениям и обработчикам по умолчанию, которые обеспечивают базовые функции устройства, необходимые для ожидаемой работы устройства. (Например, по умолчанию Dialer приложение устройства для обработки ACTION_CALL может иметь телефон разрешения на доступ.) Для получения дополнительной информации см Создание исключений .
  • Предварительно загруженные приложения с опасными разрешениями должны быть нацелены на уровень API 23 и поддерживать модель разрешений времени выполнения. То есть поток пользовательского интерфейса во время установки приложения не должен отклоняться от реализации PermissionController в AOSP, пользователи могут отозвать опасные разрешения для предустановленных приложений и т. Д.
  • Безголовые приложения должны использовать действие для запроса разрешений или для совместного использования UID с другим приложением, у которого есть необходимые разрешения. Для получения дополнительной информации см приложений безголовых .

Перенос разрешений

Разрешения, предоставленные приложениям на Android 5.x, остаются предоставленными после обновления до Android 6.0 или выше, но пользователи могут отозвать эти разрешения в любое время.

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

Интеграция

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

Обновление приложений

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

Предварительно загруженные приложения

В Android 9 и ниже предварительно загруженные приложения, использующие опасные разрешения, должны нацеливаться на уровень API 23 или выше и поддерживать модель разрешений AOSP Android 6.0 и выше. Например, поток пользовательского интерфейса во время установки приложения не должен отклоняться от реализации AOSP из PermissionController . Пользователи могут даже отозвать опасные разрешения предустановленных приложений.

В Android 6.0–9 некоторые разрешения предоставляются в процессе установки. Однако, начиная с 10, поток установки (выполняется с помощью Package Installer приложения) является отдельной функцией от разрешений предоставления (в Permission Controller приложения).

Безголовые приложения

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

  • В Android 5.1 и более ранних версиях автономные приложения могут запрашивать разрешения при установке или если они были предварительно установлены без использования действия.
  • В Android 6.0 и более поздних версиях автономные приложения должны использовать один из следующих методов для запроса разрешений:
    • Добавьте действие для запроса разрешений. (Это предпочтительный метод.)
    • Поделитесь UID с другим приложением, у которого есть необходимые разрешения. Используйте этот метод только в том случае, если вам нужна платформа для обработки нескольких APK как одного приложения.

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

Настройка пользовательского интерфейса PackageInstaller

При желании вы можете настроить тему разрешений UI обновляя темы устройства по умолчанию ( Theme.DeviceDefault.Settings и Theme.DeviceDefault.Light.Dialog.NoActionBar ) , используемые PackageInstaller. Однако, поскольку согласованность критически важна для разработчиков приложений, вы не можете настроить размещение, положение и правила появления пользовательского интерфейса разрешений.

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

Создание исключений

Вы можете предварительно предоставить разрешения для приложений, которые по умолчанию обработчики или поставщиков основных функций ОС , используя DefaultPermissionGrantPolicy.java класс в PackageManager. Примеры:

ACTION_CALL (Dialer) Default
Phone, Contacts, SMS, Microphone
SMS_DELIVER_ACTION (SMS/MMS) Default
Phone, Contacts, SMS

Определение настраиваемых разрешений

Вы можете задать пользовательские разрешения и группы , как обычно , или опасно и добавить разрешения OEM / Carrier-специфичные для существующих разрешений групп, так же , как вы могли бы в Android 5.x и более ранних версиях.

В Android 6.0 и более поздних версиях, если вы добавляете новое опасное разрешение, оно должно обрабатываться так же, как и другие опасные разрешения (запрашиваются во время выполнения приложения и могут быть отменены пользователями). Конкретно:

  • Вы можете добавить новые разрешения в текущую группу, но не можете изменить сопоставление AOSP опасных разрешений и опасных групп разрешений. (Другими словами, вы не можете удалить разрешение из группы и назначить его другой группе).
  • Вы можете добавлять новые группы разрешений в приложения, установленные на устройстве, но не можете добавлять новые группы разрешений в манифест платформы.

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

Android включает тесты Compatibility Test Suite (CTS), которые проверяют, что отдельные разрешения сопоставлены с правильными группами. Прохождение этих тестов является требованием для совместимости с Android 6.0 и более поздними версиями CTS.