🚀 6.3 Permissões de Identidade e Segurança

No Android moderno, o acesso às contas do usuário e suas credenciais não é apenas uma questão de declarar permissões no manifesto. O usuário deve conceder acesso explicitamente para garantir sua privacidade e segurança.

Permissões no Manifesto (AndroidManifest.xml)

Para que o BoaViagem consiga listar as contas do Google disponíveis no aparelho, precisamos das permissões:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />

O Desafio das Permissões em Tempo de Execução

CAUTION

Dangerous Permissions: A permissão GET_ACCOUNTS é considerada de “nível perigoso” (Dangerous). Se o seu app não solicitar essa permissão em tempo de execução, ele não conseguirá ver nenhuma conta do Google no dispositivo, causando falhas na autenticação.

Implementando a Verificação (Java 17)

private void verificarPermissoesIdentidade() {
    if (ContextCompat.checkSelfPermission(this, GET_ACCOUNTS) == GRANTED) {
        // Já tem permissão, pode seguir para a escolha da conta
        escolherContaGoogle();
    } else {
        // Solicita permissão usando o ActivityResultLauncher (visto no Módulo 5)
        requestAccountsPermissionLauncher.launch(GET_ACCOUNTS);
    }
}

A Era do Credential Manager (Premium)

Embora o gerenciamento manual de contas (AccountManager) ainda funcione, a Engenharia Premium atual utiliza o Credential Manager. Esse novo componente centraliza senhas, chaves de acesso (Passkeys) e o Google Sign-In em uma única interface segura e simplificada para o desenvolvedor.

IMPORTANT

Privacidade Total: O Android desencoraja o acesso direto a todos os e-mails do usuário. Se você só precisa de um login, o Google Sign-In já fornece as permissões necessárias sem que você precise pedir a GET_ACCOUNTS separadamente.

TIP

Em ambientes de teste (Emuladores), certifique-se de que a conta do Google foi adicionada em Configurações > Contas, caso contrário o sistema não terá dados de identidade para fornecer ao seu aplicativo.


⬅️ Capítulo Anterior | Próximo Capítulo ➡️