- 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 puede usarse para limitar el acceso a funciones o componentes específicos de esta y otras aplicaciones. Consulta la sección Permisos en la introducción y también el documento Seguridad y permisos para obtener más información.
- 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 debe configurar como referencia a un recurso de string; a diferencia del atributo
label
, no puede ser una string 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 para el permiso que se puede mostrar a los usuarios.
Según como prefieras, puedes configurar la etiqueta directamente como una string 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 string a fin de que se pueda localizar como otras strings en la interfaz de usuario.
android:name
- El nombre del permiso. Es el nombre que se usará en el código para referirse al permiso, por ejemplo, en un elemento
<uses-permission>
y en 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 se hayan firmado 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.
Te recomendamos que uses prefijos para los permisos con el nombre del paquete de la app mediante la denominación de estilo de dominio inverso. Este prefijo debe ir seguido de
.permission.
y, luego, 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 debe declararse con el elemento
<permission-group>
en esta o en otra aplicación. Si este atributo no está configurado, 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 daría 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 de 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. " 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
debe ser 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>
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: 2022-05-19 (UTC)
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Falta la información que necesito"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Muy complicado o demasiados pasos"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Desactualizado"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problema de traducción"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problema con las muestras o los códigos"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Otro"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Fácil de comprender"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Resolvió mi problema"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Otro"
}]