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.