Normal Permission no Android — o que é, níveis de proteção e princípio de funcionamento

Autor: IT Sectr Publicado: 2026-05-20 Tempo de leitura: 8 min

Normal Permission é uma categoria de permissões no Android que o sistema concede automaticamente sem perguntar ao usuário. De acordo com Android Developer Documentation, 2024, as permissões normais têm ProtectionLevel normal e não exigem um diálogo em tempo de execução, ao contrário das perigosas. Elas cobrem o acesso à internet, ao estado da rede e à vibração, sem criar riscos para os dados confidenciais do usuário.

Pontos principais

  • Normal Permission é uma categoria de permissões Android com ProtectionLevel normal, concedidas automaticamente na instalação.
  • Para usá-la, basta adicionar uses-permission no manifesto — nenhum diálogo é mostrado ao usuário.
  • A principal diferença das perigosas é a ausência de uma solicitação em tempo de execução e a impossibilidade de revogação pelas configurações.
  • A lista inclui INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE e outras constantes do sistema.
  • Você pode verificar o nível de proteção através de PackageManager.getPermissionInfo no código da aplicação.

O que é Normal Permission no Android

Normal Permission é um tipo de permissão do sistema no Android com ProtectionLevel normal, concedida a uma aplicação automaticamente no momento da instalação. O desenvolvedor não precisa escrever código para solicitá-la — basta declarar a permissão no AndroidManifest.xml. O usuário não vê nenhum diálogo e não pode revogar uma permissão normal separadamente, apenas desinstalando toda a aplicação.

O sistema Android classifica as permissões normais como de baixo risco — elas não concedem acesso a dados pessoais, câmera ou microfone. Exemplos típicos: acesso à internet, controle de vibração, leitura do estado do Wi-Fi. De acordo com o Android Security Model (2024), cerca de 40 por cento de todas as permissões do sistema pertencem à categoria normal.

Uma propriedade importante — as permissões normais não podem ser revogadas em tempo de execução através das Configurações. Se o usuário quiser negar o acesso, a única maneira é desinstalar a aplicação. Os desenvolvedores devem considerar isso na arquitetura, mas para os usuários esta abordagem simplifica a interação: sem diálogos na primeira inicialização.

História da categoria

A divisão em permissões normais e perigosas apareceu no Android 6.0 Marshmallow (API 23). Antes desta versão, todas as permissões eram solicitadas na instalação — o usuário via uma lista única e a aceitava ou rejeitava como um todo. A Normal Permission manteve este modelo para operações de baixo risco, enquanto a Dangerous passou para a solicitação em tempo de execução. Esta mudança melhorou a experiência do usuário e ao mesmo tempo aumentou a segurança.

Quais APIs exigem Normal Permission

Muitas APIs do sistema Android exigem uma declaração explícita de uma permissão normal, mesmo que o acesso seja automático. Por exemplo, a classe ConnectivityManager requer ACCESS_NETWORK_STATE, o VibratorService requer VIBRATE, o WifiManager requer ACCESS_WIFI_STATE. Sem declarar o uses-permission correspondente, a chamada dessas APIs resultará em uma SecurityException.

Como funciona ProtectionLevel normal

ProtectionLevel normal é o nível mínimo de proteção no Sistema de Permissões do Android. As permissões com este nível são declaradas no manifesto, e o sistema verifica a declaração na instalação, concedendo acesso sem intervenção do usuário. Nenhum elemento de interface é mostrado, nenhum callback é invocado.

O mecanismo de verificação funciona ao nível do PackageManager. Durante a instalação do APK, o sistema verifica todas as tags uses-permission, determina o nível de proteção de cada permissão comparando com as definições do sistema nos arquivos permissions.xml, e para o nível normal simplesmente registra o acesso. O processo leva milissegundos e não requer interação com a interface do usuário.

O algoritmo de concessão funciona da seguinte forma:

  • O sistema lê o manifesto no momento da instalação da aplicação
  • Ele compara o protectionLevel em /etc/permissions/ no dispositivo
  • Se o valor for normal — concede automaticamente o acesso
  • A permissão permanece ativa até que a aplicação seja completamente desinstalada

O usuário não pode revogar uma permissão normal através da interface. Nas configurações das aplicações, na seção de Permissões, apenas as permissões perigosas são exibidas. Isso contrasta com o iOS, onde cada permissão requer uma confirmação separada independentemente do nível de sensibilidade da função.

Normal Permission vs Dangerous Permission

Normal e Dangerous Permission são duas categorias opostas de proteção no Android. A principal diferença está no método de concessão: as normais são concedidas automaticamente na instalação, as perigosas exigem consentimento explícito através de um diálogo em tempo de execução. Esta distinção está incorporada na arquitetura de segurança do Android desde a versão 6.0 Marshmallow.

Comparação das principais características:

CaracterísticaNormal PermissionDangerous Permission
ProtectionLevelnormaldangerous
Solicitação ao usuárioNão necessáriaDiálogo em tempo de execução obrigatório
Possibilidade de revogaçãoNão, apenas desinstalando a aplicaçãoSim, através das configurações a qualquer momento
Verificação no códigoSempre PERMISSION_GRANTEDcheckSelfPermission obrigatório
ExemplosINTERNET, VIBRATE, ACCESS_NETWORK_STATECAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION

Diferença na solicitação ao usuário

O usuário não vê nenhum diálogo ao solicitar Normal Permission. Se uma aplicação precisar de INTERNET — ela o obtém silenciosamente. Para Dangerous Permission, o sistema mostra um diálogo modal descrevendo o acesso solicitado. O usuário pressiona Permitir ou Negar, e posteriormente pode revogar a permissão a qualquer momento através das Configurações. Esta é uma diferença chave de UX que determina a estratégia de desenvolvimento da interface.

Quando escolher Normal

Normal deve ser usado em todos os casos em que o acesso não envolva dados confidenciais. ACCESS_NETWORK_STATE para verificar a conectividade, VIBRATE para feedback háptico, INTERNET para requisições HTTP — todas estas são permissões normais. Usar o nível dangerous onde o normal é suficiente é uma má prática, criando diálogos desnecessários e reduzindo a confiança do usuário na aplicação.

Lista de permissões normais no Android

O Android define várias dezenas de permissões normais, cada uma correspondendo a uma função específica do sistema. Todas estão disponíveis através das constantes da classe Manifest.permission. Abaixo está uma lista das mais utilizadas no desenvolvimento de aplicações.

ConstanteAcessoDescrição
INTERNETRedeAbertura de sockets de rede para requisições HTTP
ACCESS_NETWORK_STATERedeObtenção de informações sobre o estado da rede
ACCESS_WIFI_STATEWi-FiLeitura de informações sobre conexões Wi-Fi
VIBRATEVibraçãoControle do vibrador do dispositivo
BLUETOOTHBluetoothConexão a dispositivos Bluetooth
WAKE_LOCKAlimentaçãoImpedir que o processador entre em modo de suspensão
SET_ALARMAlarmeDefinição de alarme através do AlarmManager
CHANGE_NETWORK_STATERedeAlteração do estado da conexão de rede

Grupos de permissões normais

As permissões normais não são agrupadas em Permission Groups para fins de exibição na interface. Os grupos no Android são destinados à tela de configurações, onde apenas as permissões perigosas são mostradas. No entanto, as permissões normais podem ser logicamente divididas em categorias: rede (INTERNET, ACCESS_NETWORK_STATE), hardware (VIBRATE, WAKE_LOCK), sistema (SET_ALARM) e permissões Bluetooth.

Algumas constantes do Manifest.permission podem alterar seu nível de proteção em diferentes versões do Android. Por exemplo, BLUETOOTH_CONNECT no Android 12+ tornou-se uma permissão perigosa com solicitação em tempo de execução, embora em versões mais antigas fosse normal. Recomenda-se aos desenvolvedores verificar o protectionLevel atual para a API alvo através da documentação.

Verificação de Normal Permission via PackageManager

Um desenvolvedor pode verificar programaticamente se uma permissão é normal através do PackageManager. O método getPermissionInfo retorna PermissionInfo cujo campo protectionLevel contém o flag PermissionInfo.PROTECTION_NORMAL. Isso é útil para manipulação dinâmica e depuração.

kotlin
fun isNormalPermission(permission: String): Boolean {
    val pm = packageManager
    val info = pm.getPermissionInfo(
        permission,
        PackageManager.GET_META_DATA
    )
    return info.protectionLevel ==
        PermissionInfo.PROTECTION_NORMAL
}

Como declarar Normal Permission no manifesto

Declarar Normal Permission no AndroidManifest.xml é a operação mais simples, exigindo apenas uma tag uses-permission. Nenhuma configuração adicional de protectionLevel é necessária, já que o nível de proteção é determinado pela definição do sistema, não pelo manifesto da aplicação. O desenvolvedor simplesmente especifica o nome completo da constante.

xml
<!-- AndroidManifest.xml -->
<uses-permission
    android:name="android.permission.INTERNET" />
<uses-permission
    android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
    android:name="android.permission.VIBRATE" />

O sistema processa todas as declarações na instalação. Se pelo menos uma das permissões declaradas tiver um protectionLevel diferente de normal, será necessária uma solicitação em tempo de execução. INTERNET é a permissão normal mais popular, presente na maioria das aplicações Android, especialmente aquelas que fazem requisições HTTP ou carregam conteúdo da rede.

Exemplo de manifesto completo

Um exemplo completo de AndroidManifest.xml com permissões normais e perigosas demonstra a diferença: sintaticamente as tags uses-permission são iguais, mas em tempo de execução INTERNET e VIBRATE serão concedidas automaticamente, enquanto CAMERA exigirá um diálogo.

xml
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Normal permissions -->
    <uses-permission
        android:name="android.permission.INTERNET" />
    <uses-permission
        android:name="android.permission.VIBRATE" />

    <!-- Dangerous permission -->
    <uses-permission
        android:name="android.permission.CAMERA" />
</manifest>

Manifest Merger e Normal Permission

Ao usar bibliotecas — Google Play Services, Firebase, Glide — elas podem adicionar seus próprios uses-permission ao manifesto final através do Manifest Merger. Alguns são normais (INTERNET para Firebase), outros perigosos (ACCESS_FINE_LOCATION para Google Maps). O desenvolvedor deve verificar o manifesto mesclado final em build/outputs/logs/manifest-merger-report.txt antes da publicação.

Limitações da Normal Permission

Normal Permission tem duas limitações fundamentais: a impossibilidade de revogação pelo usuário e a ausência de uma interface de gestão. Se o usuário não confiar na aplicação mas a permissão normal já tiver sido concedida automaticamente — a única solução é desinstalar a aplicação. Isso cria um certo risco, já que as permissões normais não podem ser bloqueadas pelos meios padrão do Android.

Uma limitação adicional aparece em dispositivos com múltiplos perfis (Work Profile, Multiple Users). A Normal Permission é concedida a todos os perfis de uma vez — a aplicação não pode restringir a permissão a apenas um. Em cenários empresariais, isso é resolvido através de Managed Configurations.

Não é possível verificar se uma aplicação está usando uma Normal Permission em um determinado momento. O método do sistema checkSelfPermission funciona apenas para permissões perigosas. Para as normais, ele sempre retorna PERMISSION_GRANTED, o que não reflete a atividade real. Isso deve ser considerado durante auditorias de segurança e análise de comportamento da aplicação.

Vale lembrar também que alguns fabricantes de dispositivos (Xiaomi, Huawei, Samsung) modificam o comportamento padrão das permissões. Em seus firmwares, a Normal Permission pode exigir permissões adicionais na interface proprietária MIUI ou EMUI. Recomenda-se aos desenvolvedores testar em dispositivos reais de diferentes fabricantes.

Perguntas frequentes

Qual a diferença entre Normal Permission e Dangerous?

Normal Permission é concedida automaticamente na instalação sem diálogo. Dangerous requer uma solicitação em tempo de execução com consentimento explícito do usuário e pode ser revogada através das configurações. Normal usa ProtectionLevel normal, Dangerous usa protectionLevel dangerous.

Preciso escrever código para Normal Permission?

Não, para permissões normais basta declarar uses-permission no AndroidManifest.xml. Nenhum código de solicitação é necessário — o sistema concede o acesso automaticamente. Isso as diferencia das perigosas, onde é necessário ActivityCompat.requestPermissions.

Quais Normal Permission são as mais populares?

As mais utilizadas são: INTERNET (requisições de rede), ACCESS_NETWORK_STATE (verificação de conectividade), VIBRATE (feedback háptico) e WAKE_LOCK (manter o processador ativo). Praticamente toda aplicação Android usa pelo menos INTERNET.

Posso revogar uma Normal Permission?

Não, Normal Permission não pode ser revogada através das configurações da aplicação. A única maneira de interromper o acesso é desinstalar a aplicação. Esta é uma diferença chave das permissões perigosas, que o usuário pode desativar a qualquer momento.

Como verificar o ProtectionLevel de uma permissão?

Use PackageManager.getPermissionInfo, passando o nome da permissão como string. O método retorna PermissionInfo com um campo protectionLevel. Compare-o com as constantes PermissionInfo.PROTECTION_NORMAL ou PROTECTION_DANGEROUS para determinar a categoria.

Resumo

  • Normal Permission é uma categoria de permissões Android com ProtectionLevel normal, concedidas automaticamente na instalação.
  • Para declará-la, basta a tag uses-permission no AndroidManifest.xml sem código em tempo de execução.
  • Diferem das perigosas pela ausência de diálogo, impossibilidade de revogação e baixo nível de risco.
  • As mais populares: INTERNET, ACCESS_NETWORK_STATE, VIBRATE, ACCESS_WIFI_STATE e WAKE_LOCK.
  • O ProtectionLevel é verificado através de PackageManager.getPermissionInfo no código.
  • Permissões normais não são exibidas na tela de configurações das aplicações.
  • Ao usar bibliotecas, verifique o manifesto final através do Manifest Merger.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também