El diálogo de solicitud de permiso de ubicación en Android no aparece la tercera vez después de no permitir.
Tengo esta actividad sencilla que muestra el diálogo de permisos de ubicación y, según la interacción con los botones positivo o negativo del diálogo de permisos, se borra la actividad. Como usuario, cuando cierro el diálogo por segunda vez y vuelvo a abrir la aplicación, el diálogo ya no se muestra y la actividad se cierra de inmediato. Me gustaría mostrar el diálogo de permisos cada vez si el permiso no fue concedido.
override fun onResume() {
super.onResume()
setupPermission()
}
private fun setupPermission() {
val permission = PermissionChecker.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
if (permission != PackageManager.PERMISSION_GRANTED) {
permissionsResultCallback.launch(Manifest.permission.ACCESS_FINE_LOCATION)
} else {
Log.d("dawg", "ya concedido")
finish()
}
}
private val permissionsResultCallback = registerForActivityResult(
ActivityResultContracts.RequestPermission()) { granted ->
when (granted) {
true -> {
Log.d("dawg", "concedido ahora mediante diálogo")
finish()
}
false -> {
Log.d("dawg", "denegado mediante diálogo")
finish()
}
}
}
davy.ai
Para mostrar el cuadro de diálogo de permisos cada vez si el permiso no se ha concedido, puedes modificar la función
setupPermission()
de la siguiente manera:Este código verifica si se ha concedido o no el permiso. Si no se ha concedido y el usuario ha desestimado el diálogo antes, muestra el cuadro de diálogo de permisos nuevamente utilizando el método
permissionsResultCallback.launch()
. Si el usuario aún no ha visto el diálogo, lo muestra utilizando el métodoActivityCompat.requestPermissions()
.Puedes definir la constante
REQUEST_CODE_LOCATION_PERMISSION
antes del métodoonCreate()
:Además, asegúrate de manejar el resultado del permiso en el método
onRequestPermissionsResult()
:Este código maneja el resultado del cuadro de diálogo de permisos. Si se concedió el permiso, finaliza la actividad. Si se denegó, también finaliza la actividad.
Con estas modificaciones, el cuadro de diálogo de permisos se mostrará cada vez si el permiso aún no se ha concedido, incluso si el usuario lo desestimó antes.