0Pricing
Android Academy · Aula

Lidando com recusas e justificativas

Explique por que uma permissão é necessária.

Lidando com recusas e justificativas é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 4 aulas no total.

Como lidar com recusas

Os usuários podem recusar uma permissão, inclusive recusá-la permanentemente. Um aplicativo bem elaborado lida com todos os estados de forma adequada: concedida, recusada uma vez e recusada com a opção "não perguntar novamente".

Três estados possíveis

Após uma solicitação, você pode estar em um de três estados:

  • Concedida: prossiga com o recurso
  • Recusada (é possível perguntar novamente): explique e solicite de novo
  • Recusada permanentemente: a caixa de diálogo não aparece mais; oriente o usuário até as Configurações

O que é uma justificativa

Uma justificativa é uma breve explicação do motivo pelo qual seu aplicativo precisa de uma permissão. O Android informa quando exibir uma por meio de shouldShowRequestPermissionRationale.

shouldShowRequestPermissionRationale

Esse método retorna true quando o usuário recusou a permissão pelo menos uma vez, mas não selecionou "não perguntar novamente". Esse é o momento de explicar antes de solicitar novamente.

val activity = LocalContext.current as Activity
val showRationale = ActivityCompat
    .shouldShowRequestPermissionRationale(
        activity,
        Manifest.permission.CAMERA
    )

Interpretando o sinal

Interprete o valor juntamente com a verificação da concessão:

  • Concedida: não há nada a fazer
  • Não concedida e shouldShowRationale == true: exiba uma explicação e solicite novamente
  • Não concedida e shouldShowRationale == false: pode ser a primeira solicitação ou uma recusa permanente

Exibindo uma caixa de diálogo de justificativa

Quando uma justificativa for necessária, apresente uma caixa de diálogo amigável antes de iniciar novamente a solicitação do sistema, para que o usuário entenda o benefício.

if (showRationale) {
    AlertDialog(
        onDismissRequest = { },
        title = { Text("Camera needed") },
        text = { Text("We use the camera to scan codes.") },
        confirmButton = {
            TextButton(onClick = {
                launcher.launch(Manifest.permission.CAMERA)
            }) { Text("Continue") }
        }
    )
}

Detectando uma recusa permanente

Se a permissão ainda não tiver sido concedida e shouldShowRationale for false depois de o usuário já ter sido consultado, trate-a como recusada permanentemente. A caixa de diálogo do sistema não aparecerá mais.

Acompanhando se você já solicitou

Como shouldShowRationale também é false na primeira solicitação, acompanhe uma sinalização (por exemplo, em DataStore) que registre que você já solicitou a permissão pelo menos uma vez. Assim, será possível distinguir a primeira solicitação de uma recusa permanente.

Encaminhando os usuários para as Configurações

Em caso de recusa permanente, não é possível solicitar novamente. Ofereça um botão que abra a página de configurações do seu aplicativo para que o usuário possa conceder a permissão manualmente.

fun openAppSettings(context: Context) {
    val intent = Intent(
        Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
        Uri.fromParts("package", context.packageName, null)
    )
    context.startActivity(intent)
}

Projetando a interface para recusas

Nunca deixe uma tela vazia ou com falhas quando uma permissão for recusada. Exiba uma mensagem clara, explique o impacto e ofereça a ação adequada: solicitar novamente, abrir as Configurações ou continuar com funcionalidade reduzida.

Respeite a escolha do usuário

Não insista. Se o usuário recusou a permissão, não o bombardeie em todas as telas. Solicite novamente apenas quando ele realizar uma ação que precise do recurso e, caso contrário, reduza a funcionalidade de forma adequada.

Verificação rápida

Teste sua compreensão sobre recusas e justificativas.

Recapitulação

Você aprendeu a lidar com recusas:

  • Três estados: concedida, recusada e recusada permanentemente
  • shouldShowRequestPermissionRationale indica quando explicar
  • Acompanhe se você já solicitou a permissão para detectar uma recusa permanente
  • Em caso de recusa permanente, encaminhe o usuário para as Configurações do aplicativo
  • Projete uma interface clara para o estado de recusa e evite insistir

A seguir: boas práticas de privacidade.

Perguntas Frequentes

A aula “Lidando com recusas e justificativas” é grátis?

Sim — o texto completo de “Lidando com recusas e justificativas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Android Academy, atualize para CoddyKit PRO. O curso de Android Academy inclui 4 aulas no total.

O que vou aprender em “Lidando com recusas e justificativas”?

Explique por que uma permissão é necessária. Você pratica Android Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Android Academy?

Nenhuma experiência prévia é necessária. Android Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Lidando com recusas e justificativas”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Android Academy?

Sim. Cada aula de Android Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. O modelo de permissões do Android
  2. Solicitando permissões no Compose
  3. Lidando com recusas e justificativas
  4. Práticas recomendadas de privacidade
← Voltar para Android Academy