<permissão>

Sintaxe:
<permission android:description="string resource"
            android:icon="drawable resource"
            android:label="string resource"
            android:name="string"
            android:permissionGroup="string"
            android:protectionLevel=["normal" | "dangerous" |
                                     "signature" | ...] />
contido em:
<manifest>
descrição:
Declara uma permissão de segurança usada para limitar o acesso a componentes ou recursos específicos desse ou de outros aplicativos. Para saber mais sobre como as permissões funcionam, consulte a seção Permissões, na visão geral do manifesto do app, e as Dicas de segurança.
Atributos:
android:description
Uma descrição da permissão legível pelo usuário que é mais longa e mais informativa do que o rótulo. Pode ser mostrada para explicar a permissão ao usuário, por exemplo, quando ela é pedida por outro aplicativo.

Esse atributo é definido como uma referência a um recurso de string. Diferente do atributo label, ele não pode ser uma string bruta.

android:icon
Uma referência a um recurso drawable para um ícone que representa a permissão.
android:label
Um nome legível pelo usuário para a permissão.

Como conveniência, o rótulo pode ser configurado diretamente como uma string bruta enquanto você desenvolve o aplicativo. No entanto, quando o aplicativo estiver pronto para ser publicado, defina o rótulo como uma referência a um recurso de string para que ele possa ser localizado como outras strings na interface do usuário.

android:name
O nome a ser usado no código para se referir à permissão, por exemplo, em um elemento <uses-permission> ou nos atributos permission dos componentes do aplicativo.

Observação: o sistema não permite que vários pacotes declarem uma permissão com o mesmo nome, a menos que todos eles sejam assinados com o mesmo certificado. Se um pacote declarar uma permissão, o sistema não vai permitir que o usuário instale outros pacotes com o mesmo nome de permissão, a menos que eles sejam assinados com o mesmo certificado do primeiro.

Por esse motivo, o Google recomenda prefixar permissões com o nome do pacote do app usando a nomenclatura no estilo de domínio inverso. Esse prefixo precisa ser seguido de .permission. e uma descrição da capacidade que a permissão representa com letras maiúsculas em SNAKE_CASE. Por exemplo: com.example.myapp.permission.ENGAGE_HYPERSPACE

Essa recomendação evita conflitos na nomenclatura e ajuda a identificar com clareza o proprietário e a intenção de uma permissão personalizada.

android:permissionGroup
Atribui esta permissão a um grupo. O valor desse atributo é o nome do grupo, que precisa ser declarado com o elemento <permission-group> nesse aplicativo ou em outro. Se esse atributo não é definido, a permissão não pertence a um grupo.
android:protectionLevel

Caracteriza o possível risco implícito na permissão e indica o procedimento que o sistema precisa seguir ao determinar se concede ou não a permissão a um aplicativo que a solicite.

Cada nível de proteção consiste em um tipo de permissão básico e em zero ou mais flags. Por exemplo, o nível de proteção "dangerous" não tem sinalizações. Por outro lado, o nível de proteção "signature|privileged" é uma combinação do tipo de permissão básico "signature" e a sinalização "privileged".

A tabela abaixo mostra todos os tipos de permissão básicos. Para uma lista de sinalizações, consulte protectionLevel.

Valor Significado
"normal" O valor padrão. Uma permissão de baixo risco que concede a apps que a pedem acesso a recursos isolados no nível do aplicativo, com risco mínimo a outros aplicativos, ao sistema ou ao usuário. O sistema concede automaticamente esse tipo de permissão a um aplicativo solicitante na instalação, sem pedir a aprovação explícita do usuário, que ainda tem a opção de revisar essas permissões antes da instalação.
"dangerous" Uma permissão de alto risco que concede ao app que a pede acesso a dados particulares do usuário ou controle sobre o dispositivo, podendo afetar negativamente o usuário. Como esse tipo de permissão apresenta possível risco, o sistema pode não a conceder automaticamente ao aplicativo que fez o pedido. Por exemplo, uma permissão perigosa solicitada por um app pode ser mostrada ao usuário e exigir a confirmação dele antes de prosseguir. Alguma outra medida também pode ser tomada para evitar que o usuário permita automaticamente o uso desses recursos.
"signature" Uma permissão concedida pelo sistema somente se o aplicativo que a solicitar estiver assinado com o mesmo certificado que o aplicativo que declarou a permissão. Se os certificados forem correspondentes, o sistema dará a permissão de forma automática, sem notificar o usuário ou pedir a aprovação explícita dele.
"knownSigner" Uma permissão concedida pelo sistema somente se o aplicativo solicitante estiver assinado com um certificado permitido. Se o certificado do solicitante estiver listado, o sistema dará a permissão de forma automática, sem notificar o usuário ou pedir a aprovação explícita dele.
"signatureOrSystem"

Sinônimo antigo de "signature|privileged". Descontinuado no nível 23 da API.

Uma permissão que o sistema concede apenas a aplicativos que estejam em uma pasta dedicada na imagem do sistema Android ou que sejam assinados com o mesmo certificado do aplicativo que declarou a permissão. Evite usar essa opção, já que o nível de proteção de "signature" é suficiente para a maioria das necessidades e funciona independente de onde os aplicativos estejam instalados.

A permissão "signatureOrSystem" é usada para algumas situações especiais em que vários fornecedores têm aplicativos integrados a uma imagem do sistema e precisam compartilhar explicitamente recursos específicos que estão sendo criados em conjunto.

Introduzido no:
Nível 1 da API
confira também:
<uses-permission>
<permission-tree>
<permission-group>