- sintaxis:
<permission android:description="string resource" android:icon="drawable resource" android:label="string resource" android:name="string" android:permissionGroup="string" android:protectionLevel=["normal" | "dangerous" | "signature" | ...] />
- se incluye en:
<manifest>
- descripción:
- Declara un permiso de seguridad que se usa para limitar el acceso a funciones o componentes específicos de esta y otras aplicaciones. Si deseas obtener más información sobre el funcionamiento de los permisos, consulta la sección Permisos en la descripción general del manifiesto de la app y las Sugerencias de seguridad.
- atributos:
android:description
- Es una descripción del permiso legible por el usuario, más informativa y extensa que la etiqueta. Puede mostrarse para explicar el permiso al usuario, por ejemplo, cuando se le pregunta si le otorga el permiso a otra aplicación.
Este atributo se configura como referencia a un recurso de cadenas. A diferencia del atributo
label
, no puede ser una cadena sin procesar. android:icon
- Es una referencia a un recurso de elemento de diseño para un ícono que representa el permiso.
android:label
- Es un nombre legible por el usuario para el permiso.
Si así lo prefieres, puedes configurar la etiqueta directamente como una cadena sin procesar mientras desarrollas la aplicación. Sin embargo, cuando la aplicación está lista para publicarse, se debe configurar como referencia a un recurso de cadenas para que se pueda localizar como otras cadenas en la interfaz de usuario.
android:name
- Es el nombre que se usará en el código para referirse al permiso, como en un elemento
<uses-permission>
o los atributospermission
de los componentes de la aplicación.Nota: El sistema no permite que varios paquetes declaren un permiso con el mismo nombre, a menos que todos estén firmados con el mismo certificado. Si un paquete declara un permiso, el sistema no permite al usuario instalar otros paquetes con el mismo nombre de permiso, a menos que estén firmados con el mismo certificado que el primer paquete.
Por este motivo, Google recomienda que agregues prefijos a los permisos con el nombre del paquete de la app a través de la denominación de estilo de dominio inverso. Sigue este prefijo con
.permission.
y, luego, con una descripción de la capacidad que representa el permiso, en letra mayúscula SNAKE_CASE. Por ejemplo:com.example.myapp.permission.ENGAGE_HYPERSPACE
.Si sigues esta recomendación, se evitan los conflictos de nombres y se ayuda a identificar claramente el propietario y la intención de un permiso personalizado.
android:permissionGroup
- Asigna este permiso a un grupo. El valor de este atributo es el nombre del grupo, que se declara con el elemento
<permission-group>
en esta o en otra aplicación. Si no se establece este atributo, el permiso no pertenece a un grupo. android:protectionLevel
-
Caracteriza el riesgo potencial implícito en el permiso y también indica el procedimiento que debe seguir el sistema para determinar si otorga o no dicho permiso a una aplicación que lo solicita.
Cada nivel de protección consta de un tipo de permiso base y cero o más marcas. Por ejemplo, el nivel de protección
"dangerous"
no tiene marcas. Por el contrario, el nivel de protección"signature|privileged"
es una combinación del tipo de permiso base"signature"
y la marca"privileged"
.La siguiente tabla muestra todos los tipos de permisos básicos. Para ver la lista de marcas, consulta
protectionLevel
.Valor Significado "normal"
Es el valor predeterminado. Un permiso de menor riesgo que, con una amenaza mínima para otras aplicaciones, el sistema o el usuario, brinda a las aplicaciones solicitantes acceso a funciones aisladas de la aplicación. El sistema otorga automáticamente este tipo de permiso a una aplicación solicitante durante la instalación sin pedir la aprobación explícita del usuario (aunque este siempre tiene la opción de revisar los permisos antes de la instalación). "dangerous"
Es un permiso de mayor riesgo que le da a una aplicación solicitante acceso a datos privados del usuario o control sobre el dispositivo, que puede afectar negativamente al usuario. Debido a que este tipo de permiso presenta un riesgo potencial, es posible que el sistema no lo otorgue automáticamente a la aplicación solicitante. Por ejemplo, es posible que se muestre al usuario cualquier permiso peligroso solicitado por una aplicación y se le solicite confirmación antes de continuar, o bien se podría adoptar algún otro enfoque para evitar que el usuario permita el uso automático de esas funciones. "signature"
Es un permiso que el sistema otorga solo si la aplicación solicitante está firmada con el mismo certificado que la aplicación que declaró el permiso. Si los certificados coinciden, el sistema otorga automáticamente el permiso sin notificar al usuario ni solicitarle aprobación explícita. "knownSigner"
Se trata de un permiso que el sistema otorga solo si la aplicación solicitante está firmada con un certificado permitido. Si aparece el certificado del solicitante, el sistema otorga automáticamente el permiso sin notificar al usuario ni solicitarle aprobación explícita. "signatureOrSystem"
Es un antiguo sinónimo de
"signature|privileged"
. Dejó de estar disponible desde el nivel de API 23.Se trata de un permiso que el sistema otorga solo a las aplicaciones que están en una carpeta dedicada en la imagen del sistema Android o que están firmadas con el mismo certificado que la aplicación que declaró el permiso. Evita usar esta opción, ya que el nivel de protección
"signature"
es suficiente para la mayoría de las necesidades y funciona independientemente de dónde se instalen las aplicaciones.El permiso
"signatureOrSystem"
se utiliza para ciertas situaciones especiales en las que varios proveedores tienen aplicaciones integradas en una imagen del sistema y necesitan compartir funciones específicas de manera explícita porque se crean juntas.
- primera inclusión:
- Nivel de API 1
- consulta también:
<uses-permission>
<permission-tree>
<permission-group>
<permiso>
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-07-27 (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)"]]