Gestionar denegaciones y justificaciones
Explique por qué necesita un permiso
Gestionar denegaciones y justificaciones es una lección gratuita de Android Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Android Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Android Academy incluye 4 lecciones en total.
Gestionar las denegaciones
Los usuarios pueden denegar un permiso y también pueden denegarlo de forma permanente. Una aplicación bien diseñada gestiona correctamente todos los estados: concedido, denegado una vez y denegado con «no volver a preguntar».
Tres estados posibles
Después de una solicitud, puede encontrarse en uno de estos tres estados:
- Concedido: continúe con la función
- Denegado (se puede volver a solicitar): explique el motivo y vuelva a solicitarlo
- Denegado permanentemente: el cuadro de diálogo ya no aparece; guíe al usuario a Ajustes
Qué es una justificación
Una justificación es una breve explicación de por qué su aplicación necesita un permiso. Android le indica cuándo mostrarla mediante shouldShowRequestPermissionRationale.
shouldShowRequestPermissionRationale
Este método devuelve true cuando el usuario ha denegado el permiso al menos una vez, pero no ha seleccionado «no volver a preguntar». Esa es la señal para explicar el motivo antes de volver a solicitarlo.
val activity = LocalContext.current as Activity
val showRationale = ActivityCompat
.shouldShowRequestPermissionRationale(
activity,
Manifest.permission.CAMERA
)Interpretar la señal
Interprete el valor junto con la comprobación de concesión:
- Concedido: no hay nada que hacer
- No concedido y
shouldShowRationale == true: muestre una explicación y vuelva a solicitarlo - No concedido y
shouldShowRationale == false: puede tratarse de la primera solicitud o de una denegación permanente
Mostrar un cuadro de diálogo de justificación
Cuando sea necesaria una justificación, muestre un cuadro de diálogo amigable antes de volver a lanzar la solicitud del sistema, para que el usuario entienda su utilidad.
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") }
}
)
}Detectar una denegación permanente
Si el permiso sigue sin concederse y shouldShowRationale es false después de que el usuario ya haya recibido una solicitud, trátelo como una denegación permanente. El cuadro de diálogo del sistema ya no volverá a aparecer.
Registrar si ya lo ha solicitado
Como shouldShowRationale también es false en la primera solicitud, registre un indicador (por ejemplo, en DataStore) que indique que ya lo ha solicitado al menos una vez. Así podrá distinguir la primera solicitud de una denegación permanente.
Enviar a los usuarios a Ajustes
En caso de denegación permanente, no puede volver a mostrar la solicitud. Ofrezca un botón que abra la página de ajustes de su aplicación para que el usuario pueda conceder el permiso manualmente.
fun openAppSettings(context: Context) {
val intent = Intent(
Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", context.packageName, null)
)
context.startActivity(intent)
}Diseñar la interfaz para permisos denegados
No deje nunca una pantalla en blanco o deteriorada cuando se deniegue un permiso. Muestre un mensaje claro, explique el impacto y ofrezca la acción adecuada: volver a solicitarlo, abrir Ajustes o continuar con una funcionalidad reducida.
Respete la decisión del usuario
No insista. Si el usuario ha denegado el permiso, no lo bombardee con solicitudes en cada pantalla. Vuelva a solicitarlo únicamente cuando realice una acción que necesite esa función y, en los demás casos, reduzca la funcionalidad de forma adecuada.
Comprobación rápida
Compruebe cuánto entiende de las denegaciones y las justificaciones.
Resumen
Ha aprendido a gestionar las denegaciones:
- Tres estados: concedido, denegado y denegado permanentemente
shouldShowRequestPermissionRationaleindica cuándo debe explicar el motivo- Registre si ya ha solicitado el permiso para detectar una denegación permanente
- En caso de denegación permanente, envíe al usuario a los Ajustes de la aplicación
- Diseñe una interfaz clara para el estado denegado y evite insistir
Siguiente: buenas prácticas de privacidad.
Aprende Kotlin con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 36
- Lecciones
- 152
Preguntas frecuentes
¿La lección «Gestionar denegaciones y justificaciones» es gratis?
Sí — el texto completo de «Gestionar denegaciones y justificaciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Android Academy, actualiza a CoddyKit PRO. El curso de Android Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Gestionar denegaciones y justificaciones»?
Explique por qué necesita un permiso Practicas Android Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Android Academy?
No se requiere experiencia previa. Android Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Gestionar denegaciones y justificaciones»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Android Academy?
Sí. Cada lección de Android Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- El modelo de permisos de Android
- Solicitar permisos en Compose
- Gestionar denegaciones y justificaciones
- Prácticas recomendadas de privacidad