<permission>

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 puede usar 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.

Para tu comodidad, la etiqueta se puede configurar directamente como una string sin procesar mientras desarrollas la aplicación. Sin embargo, cuando la aplicación está lista para publicarse, debe configurarse como una referencia a un recurso de string, de modo que pueda localizarse 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 atributos permission 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 que el usuario instale otros paquetes con el mismo nombre de permiso, a menos que estén firmados con el mismo certificado que el primero. Para evitar la repetición de nombres, recomendamos usar nombres de estilo de dominio inverso para los permisos personalizados, por ejemplo, com.example.myapp.ENGAGE_HYPERSPACE.

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 lo otorga o no 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 un riesgo mínimo 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 de manera automática 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, quizás, se adopte algún otro enfoque para evitar que el usuario permita de forma automática el uso 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 la API nivel 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:
API nivel 1
consulta también:
<uses-permission>
<permission-tree>
<permission-group>