<разрешение>

синтаксис:
<permission android:description="string resource"
            android:icon="drawable resource"
            android:label="string resource"
            android:name="string"
            android:permissionGroup="string"
            android:protectionLevel=["normal" | "dangerous" |
                                     "signature" | ...] />
содержится в:
<manifest>
описание:
Объявляет разрешение безопасности, используемое для ограничения доступа к определенным компонентам или функциям этого или других приложений. Дополнительные сведения о том, как работают разрешения, см. в разделе «Разрешения» в обзоре манифеста приложения и в советах по безопасности .
атрибуты:
android:description
Читаемое пользователем описание разрешения, которое длиннее и информативнее метки. Например, оно может отображаться для объяснения разрешения пользователю, когда пользователя просят предоставить разрешение другому приложению.

Этот атрибут устанавливается как ссылка на строковый ресурс. В отличие от атрибута label , он не может быть необработанной строкой.

android:icon
Ссылка на доступный ресурс для значка, представляющего разрешение.
android:label
Читаемое пользователем имя разрешения.

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

android:name
Имя, которое будет использоваться в коде для ссылки на разрешение, например, в элементе <uses-permission> или атрибутах permission компонентов приложения.

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

По этой причине Google рекомендует добавлять к разрешениям префикс имени пакета приложения, используя именование в стиле обратного домена. После этого префикса добавьте .permission. а затем описание возможности, которую представляет разрешение в верхнем SNAKE_CASE. Например: com.example.myapp.permission.ENGAGE_HYPERSPACE .

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

android:permissionGroup
Назначает это разрешение группе. Значением этого атрибута является имя группы, объявленное с помощью элемента <permission-group> в том или ином приложении. Если этот атрибут не установлен, разрешение не принадлежит группе.
android:protectionLevel

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

Каждый уровень защиты состоит из базового типа разрешения и нуля или более флагов. Например, уровень защиты "dangerous" не имеет флагов. Напротив, уровень защиты "signature|privileged" представляет собой комбинацию базового типа разрешения "signature" и флага "privileged" .

В следующей таблице показаны все базовые типы разрешений. Список флагов см. в protectionLevel .

Ценить Значение
"normal" Значение по умолчанию. Разрешение с низким уровнем риска, которое предоставляет запрашивающим приложениям доступ к изолированным функциям уровня приложения с минимальным риском для других приложений, системы или пользователя. Система автоматически предоставляет этот тип разрешения запрашивающему приложению при установке, не запрашивая явного согласия пользователя, хотя у пользователя всегда есть возможность просмотреть эти разрешения перед установкой.
"dangerous" Разрешение повышенного риска, которое предоставляет запрашивающему приложению доступ к личным данным пользователя или контроль над устройством, что может негативно повлиять на пользователя. Поскольку этот тип разрешения представляет потенциальный риск, система может не предоставить его автоматически запрашивающему приложению. Например, любые опасные разрешения, запрошенные приложением, могут отображаться пользователю и требовать подтверждения перед продолжением, или может быть использован какой-либо другой подход, чтобы избежать автоматического разрешения пользователем использования таких возможностей.
"signature" Разрешение, которое система предоставляет только в том случае, если запрашивающее приложение подписано тем же сертификатом, что и приложение, объявившее разрешение. Если сертификаты совпадают, система автоматически предоставляет разрешение, не уведомляя пользователя и не запрашивая явного согласия пользователя.
"knownSigner" Разрешение, которое система предоставляет только в том случае, если запрашивающее приложение подписано разрешенным сертификатом . Если сертификат запрашивающей стороны указан в списке, система автоматически предоставляет разрешение, не уведомляя пользователя и не запрашивая явного согласия пользователя.
"signatureOrSystem"

Старый синоним слова "signature|privileged" . Устарело на уровне API 23.

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

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

представлено в:
API уровня 1
см. также:
<uses-permission>
<permission-tree>
<permission-group>