- синтаксис:
<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>
<разрешение>
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 UTC."],[],[],null,["# <permission\u003e\n\nsyntax:\n:\n\n ```xml\n \u003cpermission android:description=\"string resource\"\n android:icon=\"drawable resource\"\n android:label=\"string resource\"\n android:name=\"string\"\n android:permissionGroup=\"string\"\n android:protectionLevel=[\"normal\" | \"dangerous\" |\n \"signature\" | ...] /\u003e\n ```\n\ncontained in:\n: [\u003cmanifest\u003e](/guide/topics/manifest/manifest-element)\n\ndescription:\n: Declares a security permission used to\n limit access to specific components or features of this or other applications.\n For more information about how permissions work, see the [Permissions](/guide/topics/manifest/manifest-intro#perms) section in the app manifest overview and [Security tips](/guide/topics/security/security).\n\nattributes:\n:\n\n `android:description`\n\n : A user-readable description of the permission that is longer and more informative than the label. It might display, for example, to explain the permission to the user when the user is asked to grant the permission to another application.\u003cbr /\u003e\n\n\n This attribute is set as a reference to a string resource.\n Unlike the `label` attribute, it can't be a raw string.\n\n `android:icon`\n : A reference to a drawable resource for an icon that represents the\n permission.\n\n `android:label`\n\n : A user-readable name for the permission.\u003cbr /\u003e\n\n\n As a convenience, the label can be directly set\n as a raw string while you're developing the application. However,\n when the application is ready to publish, set it as a\n reference to a string resource, so that it can be localized like other\n strings in the user interface.\n\n `android:name`\n : The name to be used in\n code to refer to the permission, such as in a\n [\u003cuses-permission\u003e](/guide/topics/manifest/uses-permission-element) element or the\n `permission` attributes of application components.\n\n\n **Note:** The system doesn't let multiple packages declare\n a permission with the same name unless all the packages are signed with the\n same certificate. If a package declares a permission, the system doesn't permit\n the user to install other packages with the same permission name, unless\n those packages are signed with the same certificate as the first package.\n\n For this reason, Google recommends prefixing permissions with the app's package name,\n using reverse-domain-style naming.\n Follow this prefix with `.permission.` and then a description of the\n capability that the permission represents in upper SNAKE_CASE. For example:\n `com.example.myapp.permission.ENGAGE_HYPERSPACE`.\n\n Following this recommendation avoids naming collisions and helps clearly identify the owner\n and intention of a custom permission.\n\n `android:permissionGroup`\n : Assigns this permission to a group. The value of this attribute is\n the name of the group, which is declared with the\n [\u003cpermission-group\u003e](/guide/topics/manifest/permission-group-element) element in this\n or another application. If this attribute isn't set, the permission\n doesn't belong to a group.\n\n `android:protectionLevel`\n\n :\n Characterizes the potential risk implied in the permission and\n indicates the procedure for the system to follow when determining\n whether to grant the permission to an application requesting it.\n\n\n Each protection level consists of a base permission type and zero or more\n flags. For example, the `\"dangerous\"` protection level has no\n flags. In contrast, the protection level `\"signature|privileged\"`\n is a combination of the `\"signature\"` base permission type and the\n `\"privileged\"` flag.\n\n\n The following table shows all base permission types. For a list of flags, see\n [protectionLevel](/reference/android/R.attr#protectionLevel).\n\n | Value | Meaning |\n |-----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n | `\"normal\"` | The default value. A lower-risk permission that gives requesting applications access to isolated application-level features with minimal risk to other applications, the system, or the user. The system automatically grants this type of permission to a requesting application at installation, without asking for the user's explicit approval, though the user always has the option to review these permissions before installing. |\n | `\"dangerous\"` | A higher-risk permission that gives a requesting application access to private user data or control over the device that can negatively impact the user. Because this type of permission introduces potential risk, the system might not automatically grant it to the requesting application. For example, any dangerous permissions requested by an application might be displayed to the user and require confirmation before proceeding, or some other approach might be taken to avoid the user automatically granting the use of such facilities. |\n | `\"signature\"` | A permission that the system grants only if the requesting application is signed with the same certificate as the application that declared the permission. If the certificates match, the system automatically grants the permission without notifying the user or asking for the user's explicit approval. |\n | `\"knownSigner\"` | A permission that the system grants only if the requesting application is signed with [an allowed certificate](/guide/topics/permissions/defining#grant-signature-permissions). If the requester's certificate is listed, the system automatically grants the permission without notifying the user or asking for the user's explicit approval. |\n | `\"signatureOrSystem\"` | *Old synonym for `\"signature|privileged\"`. Deprecated in API level 23.* A permission that the system grants only to applications that are in a dedicated folder on the Android system image *or* that are signed with the same certificate as the application that declared the permission. Avoid using this option, as the `\"signature\"` protection level is sufficient for most needs and works regardless of where apps are installed. The `\"signatureOrSystem\"` permission is used for certain special situations where multiple vendors have applications built into a system image and need to share specific features explicitly because they are being built together. |\n\nintroduced in:\n: API level 1\n\nsee also:\n: [\u003cuses-permission\u003e](/guide/topics/manifest/uses-permission-element)\n\n [\u003cpermission-tree\u003e](/guide/topics/manifest/permission-tree-element)\n\n [\u003cpermission-group\u003e](/guide/topics/manifest/permission-group-element)"]]