0Pricing
Android Academy · Aula

Solicitando permissões no Compose

Use as APIs do Accompanist ou de resultados de atividades.

Solicitando permissões no Compose é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 2 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.

Solicitação no Compose

No Jetpack Compose, você solicita permissões em tempo de execução usando a API de resultados de atividades, encapsulada por rememberLauncherForActivityResult. Isso evita o callback antigo onRequestPermissionsResult.

O contrato RequestPermission

A API de resultados de atividades usa contratos que definem a entrada e a saída. ActivityResultContracts.RequestPermission() recebe uma string de permissão e retorna um resultado Boolean de concessão.

Criando um inicializador

rememberLauncherForActivityResult cria um inicializador associado à composição. Você passa o contrato e um callback que recebe o resultado.

val launcher = rememberLauncherForActivityResult(
    contract = ActivityResultContracts.RequestPermission()
) { isGranted ->
    if (isGranted) {
        // permission granted, use the feature
    } else {
        // permission denied
    }
}

Iniciando a solicitação

Chame launcher.launch com a permissão desejada. O sistema exibirá a caixa de diálogo, e seu callback será acionado com a escolha do usuário.

Button(onClick = {
    launcher.launch(Manifest.permission.CAMERA)
}) {
    Text("Enable Camera")
}

Verifique antes de solicitar

Não inicie uma solicitação às cegas. Primeiro verifique se a permissão já foi concedida e só a solicite se não tiver sido.

val context = LocalContext.current
val alreadyGranted = ContextCompat.checkSelfPermission(
    context, Manifest.permission.CAMERA
) == PackageManager.PERMISSION_GRANTED

Acompanhando o estado no Compose

Mantenha o status atual da concessão em um estado para que a interface possa reagir. Atualize-o dentro do callback do inicializador.

var hasCamera by remember {
    mutableStateOf(
        ContextCompat.checkSelfPermission(
            context, Manifest.permission.CAMERA
        ) == PackageManager.PERMISSION_GRANTED
    )
}

val launcher = rememberLauncherForActivityResult(
    ActivityResultContracts.RequestPermission()
) { granted -> hasCamera = granted }

Solicitando várias permissões

Para várias permissões de uma vez, use o contrato RequestMultiplePermissions. O callback recebe um mapa de permissões e seus status de concessão.

val multi = rememberLauncherForActivityResult(
    ActivityResultContracts.RequestMultiplePermissions()
) { results ->
    val fineLocation = results[Manifest.permission.ACCESS_FINE_LOCATION] == true
}

multi.launch(
    arrayOf(
        Manifest.permission.ACCESS_FINE_LOCATION,
        Manifest.permission.ACCESS_COARSE_LOCATION
    )
)

Controlando a interface pelo estado

Exiba conteúdos diferentes com base no estado da concessão: se a permissão tiver sido concedida, mostre o recurso; caso contrário, mostre um botão para solicitá-la. Assim, a tela permanece reativa e clara.

if (hasCamera) {
    CameraPreview()
} else {
    Button(onClick = { launcher.launch(Manifest.permission.CAMERA) }) {
        Text("Grant camera access")
    }
}

A opção de permissões do Accompanist

A biblioteca Accompanist Permissions oferece auxiliares de nível mais alto, como rememberPermissionState. Muitas equipes preferem a API de resultados de atividades diretamente para evitar uma dependência adicional; ambas as opções são válidas.

Não solicite ao iniciar

Evite disparar uma solicitação de permissão no instante em que uma tela aparece. Aguarde até que o usuário toque em uma ação que claramente precise dela. Solicitações feitas no contexto certo obtêm taxas de concessão muito maiores.

Lembre-se das mudanças de configuração

rememberLauncherForActivityResult sobrevive à recomposição, e a estrutura de resultados de atividades entrega os resultados corretamente mesmo durante mudanças de configuração, como a rotação. Você não precisa gerenciar essa infraestrutura.

Verificação rápida

Teste sua compreensão da solicitação de permissões.

Recapitulação

Você solicitou permissões da maneira moderna:

  • Use rememberLauncherForActivityResult com o contrato RequestPermission
  • Verifique primeiro e depois use launcher.launch(permission)
  • Acompanhe o status da concessão em um estado para controlar a interface
  • Use RequestMultiplePermissions para várias permissões de uma vez

A seguir: como lidar com recusas e exibir uma justificativa.

Perguntas Frequentes

A aula “Solicitando permissões no Compose” é grátis?

Sim — o texto completo de “Solicitando permissões no Compose” é 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 “Solicitando permissões no Compose”?

Use as APIs do Accompanist ou de resultados de atividades. 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 2 de 4.

Quanto tempo leva a aula “Solicitando permissões no Compose”?

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