For the complete documentation index, see llms.txt. This page is also available as Markdown.

Permissões

Guia para Implementar e Gerenciar Permissões de Execução para Localização no Seu Android SDK (CafSmartAuth)

No Android, certas permissões, especialmente as relacionadas a dados sensíveis como localização, exigem aprovação em tempo de execução dos usuários. Este guia explica como verificar e solicitar permissões de localização programaticamente no seu SDK, CafSmartAuth, usando o checkPermissionStatus função fornecida abaixo.


Por que o CafSmartAuth Requer Permissões de Localização

O CafSmartAuth requer acesso à localização do usuário como parte de seus recursos de prevenção a fraudes, garantindo uma camada adicional de segurança ao verificar informações baseadas em localização. O Android distingue entre dois tipos de acesso à localização, permitindo que os usuários controlem a precisão dos dados de localização que compartilham:

  • ACCESS_FINE_LOCATION: Necessária para informações precisas de localização via GPS, o que é essencial para detectar atividades potencialmente fraudulentas com alta precisão.

  • ACCESS_COARSE_LOCATION: Fornece dados de localização aproximados com base em redes Wi-Fi e celulares, adequada para verificações básicas de localização.

Com esses níveis de permissão, os usuários podem fornecer o acesso mínimo necessário para a prevenção de fraudes, enquanto o CafSmartAuth garante conformidade com as práticas de privacidade de dados do Android.


Passo a Passo: Adicionando e Usando checkPermissionStatus

  1. Adicione Permissões ao Manifesto

    No AndroidManifest.xmldo seu app, inclua ambas as permissões de localização:

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

    Essas declarações no manifesto permitem que o app solicite essas permissões, mas não as concedem automaticamente.

  2. Defina uma Constante de Código de Solicitação

    Para identificar a solicitação de permissão, use uma constante para o código de solicitação:

     companion object {
         private const val REQUEST_CODE = 1234
     }
  3. Crie e Use checkPermissionStatus para Gerenciar Permissões

    O checkPermissionStatus A função verifica se as permissões foram concedidas e, caso contrário, solicita-as ao usuário. Isso é essencial para a conformidade com o modelo de permissões em tempo de execução do Android, introduzido no Android 6.0 (nível de API 23).

    Aqui está o código e uma explicação de como ele funciona:

     private fun checkPermissionStatus() {
         // Verifique a permissão ACCESS_FINE_LOCATION
         if (ContextCompat.checkSelfPermission(
                 this,
                 Manifest.permission.ACCESS_FINE_LOCATION
             ) != PackageManager.PERMISSION_GRANTED
         ) {
             // Solicite a permissão ACCESS_FINE_LOCATION se ela ainda não tiver sido concedida
             ActivityCompat.requestPermissions(
                 this,
                 arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
                 REQUEST_CODE
             )
         }
    
         // Verifique a permissão ACCESS_COARSE_LOCATION
         if (ContextCompat.checkSelfPermission(
                 this,
                 Manifest.permission.ACCESS_COARSE_LOCATION
             ) != PackageManager.PERMISSION_GRANTED
         ) {
             // Solicite a permissão ACCESS_COARSE_LOCATION se ela ainda não tiver sido concedida
             ActivityCompat.requestPermissions(
                 this,
                 arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION),
                 REQUEST_CODE
             )
         }
     }
    • ContextCompat.checkSelfPermission: Isso verifica se o app tem uma permissão específica. Se a permissão não tiver sido concedida, retorna PackageManager.PERMISSION_DENIED.

    • ActivityCompat.requestPermissions: Solicita ao usuário a(s) permissão(ões) especificada(s), exibindo uma caixa de diálogo do sistema para aprovação.

  4. Gerencie o Resultado da Permissão

    Ao solicitar permissões, você pode tratar o resultado em onRequestPermissionsResult para gerenciar as respostas do usuário de forma adequada.

     override fun onRequestPermissionsResult(
         requestCode: Int,
         permissions: Array<out String>,
         grantResults: IntArray
     ) {
         super.onRequestPermissionsResult(requestCode, permissions, grantResults)
         if (requestCode == REQUEST_CODE) {
             if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
                 // A permissão foi concedida.
             } else {
                 // A permissão foi negada.
             }
         }
     }
  5. Chame checkPermissionStatus no Momento Certo

    Você pode querer chamar checkPermissionStatus dentro de onResume ou quando a funcionalidade de localização for acionada, garantindo que as permissões sejam verificadas antes de serem necessárias.


Atualizado