Permisos de la App

Permisos de la App

ℹ️

Este proceso es obligatorio para terminales con Android 12 o superior

En esta sección, encontrarás el código fuente de ejemplo para solicitar permisos en la App y asegurar el correcto funcionamiento del SDK en las terminales con Sistema Operativo Android 12 o superior.

Crear un listado de permisos

Estos son los permisos requeridos para el funcionamiento del SDK:

    private val permissions: Array<String> = arrayOf(
        android.Manifest.permission.READ_EXTERNAL_STORAGE,
        android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
        android.Manifest.permission.ACCESS_WIFI_STATE
    )

Configurar los request de permisos

A continuación, se muestra un ejemplo para hacer la petición de permisos en la App:

 @RequiresApi(Build.VERSION_CODES.R)
    private val manageAllFilesAccessPermissionLauncher =
        registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
            if (Environment.isExternalStorageManager()) {
                setup()
            } else {
                Toast.makeText(
                    this,
                    "Por favor permitir acceso a todos los permisos para poder continuar",
                    Toast.LENGTH_SHORT
                ).show()
                manageExternalPermissions()
            }
        }
 
    @RequiresApi(Build.VERSION_CODES.R)
    private val permissionsLauncher =
        registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
            val allPermissionsGranted = permissions.values.all { it }
 
            if (allPermissionsGranted) {
                if (!Environment.isExternalStorageManager()) {
                    manageExternalPermissions()
                }
 
            } else {
                setup()
            }
        }
 
    @RequiresApi(Build.VERSION_CODES.R)
    private fun requestPermissions() {
        permissionsLauncher.launch(permissions)
    }

Configuración en el onCreate

Es importante asegurarse de tener todos los permisos otorgados antes de iniciar cualquier proceso con el SDK.

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        val allPermissionsGranted = permissions.all { permission ->
            ActivityCompat.checkSelfPermission(
                this,
                permission
            ) == PackageManager.PERMISSION_GRANTED
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !allPermissionsGranted) {
            requestPermissions()
        } else {
            setup()
        }
    }

El ejemplo completo y funcional de la solicitud de permisos se encuentra en el repositorio (opens in a new tab) de demo.