Como Solicitar Permisos del GPS Cuando una Aplicación se esta ejecutando (FusedLocationProviderClient) con Kotlin – Parte 2
Demo
En la parte anterior llamada Como Solicitar Permisos del GPS Cuando una Aplicación se esta ejecutando (FusedLocationProviderClient) con Kotlin – Parte 1, creamos un nuevo proyecto en Android Studio, importamos ciertos elementos necesarios para que la aplicación funcione sin problemas. Asimismo comenzamos creando algunas variables y llamamos a la función iniciarGeolocalizacion() que inicia la tarea de geolocalizar la ubicación del usuario. En esta segunda parte vamos a continuar con la creación de este proyecto, vamos con ello.
Partes
Antes de continuar te invito a leer los siguientes artículos:
- Las Novedades más Destacadas que trae Android Studio Chipmunk
- Como Configurar el Autoguardado en Android Studio
- Que es Android y tu Primera aplicación Hola Mundo
- Las Novedades más Destacadas que trae Android Studio Dolphin – Parte 1
- Como Leer un archivo JSON en Android (Android Studio 3.6.1 + Java) – Parte 1
- Que es Kotlin y otros detalles
- Tipos de Variables en Kotlin
- Las Novedades más Destacadas que trae Android Studio 4.0
- Creando un Bot (Android) para una tienda de Postres (Dialogflow V2 + Kotlin 1.3.72) – Parte 1
- Como Solicitar Permisos del GPS Cuando una Aplicación se esta ejecutando (FusedLocationProviderClient) con Java – Parte 1
- Puedes leer más artículos en la categoría Android
Asimismo te invito a escuchar el Podcast: “¿ Que Hago Si No Tengo Los Recursos Para Dedicarme A La Programación ?” y “¿ Qué Es NoCode Development ?” (Anchor Podcast):
Spotify: | Sound Cloud: | Apple Podcasts | Anchor Podcasts |
Bien ahora continuemos con el Post: Como Solicitar Permisos del GPS Cuando una Aplicación se esta ejecutando (FusedLocationProviderClient) con Kotlin – Parte 2.
Creamos una función llamada verificarPermisos(), la cual revisará si el usuario ha otorgado permisos para acceder a su ubicación, si no es así le mostramos 2 Dialogs o cuadros de diálogo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
// Verificamos los Permisos de ubicación del usuario private fun verificarPermisos(cancel:()-> Unit, ok:() ->Unit){ if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){ if(ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.ACCESS_FINE_LOCATION)){ // Se nego los permisos cancel() } else{ ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),SOLICITAR_ACCESS_FINE_LOCATION) } } else { // Encendemos el GPS del usuario val request = LocationRequest.create().apply { interval = 2000 priority = LocationRequest.PRIORITY_HIGH_ACCURACY } val builder = LocationSettingsRequest.Builder().addLocationRequest(request) val client: SettingsClient = LocationServices.getSettingsClient(this) val task: Task<LocationSettingsResponse> = client.checkLocationSettings(builder.build()) task.addOnFailureListener { if (it is ResolvableApiException) { try { it.startResolutionForResult(this, 12345) } catch (sendEx: IntentSender.SendIntentException) { } } }.addOnSuccessListener { // Aca el GPS se enciende } // Se activo el GPS ok() } } |
El primer diálogo solicita permisos para que la aplicación acceda a la ubicación del usuario, esto es por seguridad de los usuarios y solo se les pedirá una sola vez:
El segundo diálogo le solicita permisos al usuario para que encienda su GPS, ya que el usuario puede optar por apagar su GPS más adelante, siempre es bueno recordarle que lo tiene apagado y debe activarlo para que envie su ubicación:
Creamos la función mostrarDialogoPermiso(), esta función solicitará al usuario que encienda su GPS, cada ves que lo haya apagado posteriormente y siempre le recuerde encenderlo:
1 2 3 4 5 6 7 |
private fun mostrarDialogoPermiso(){ ActivityCompat.requestPermissions(this@MapsActivity, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),SOLICITAR_ACCESS_FINE_LOCATION) } |
Una vez que el usuario acepta los permisos iniciamos la Geolocalización de su ubicación mediante la función iniciarGeolocalizacion(), esta función la llamamos en el método onCreate(), en la Parte 1 de este tutorial, acá obtenemos la ubicación del usuario cada 5 segundos:
1 2 3 4 5 6 7 8 9 10 11 12 |
private fun iniciarGeolocalizacion(){ fusedLocationProviderClient = getFusedLocationProviderClient(this) locationCallback = MyLocationCallBack() locationRequest = LocationRequest() locationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY locationRequest.interval = 5000 locationRequest.fastestInterval = 5000 } |
Agregamos el método nativo onMapReady(), que es necesaria para que el mapa de Google se muestre en la interface del usuario:
1 2 3 4 5 |
override fun onMapReady(googleMap: GoogleMap) { mMap = googleMap } |
Cuando el usuario abre la app, hacemos uso del método nativo onResume() para verificar si tiene el GPS activado, si no es así le solicitamos que lo hago con la función mostrarDialogoPermiso() que creamos anteriormente y si el usuario ya tiene encendido su GPS, iniciamos la Geolocalización con la función agregarOyenteUbicacion()la cual crearemos más adelante:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
override fun onResume() { super.onResume() verificarPermisos(cancel = { // Mostramos el dialogo para solicitarle al usuario que encienda su GPS mostrarDialogoPermiso() }, ok = { // Iniciamos la Geolocalización del usuario con un Listener o Oyente agregarOyenteUbicacion() }) } |
Bien, hasta aqui llegamos con esta segunda parte, hemos creado varios métodos, que son necesarios para que la aplicación funcione correctamente.
Ten Paciencia, lo que quiero es que conozcas bien como se crea esta funcionalidad de Solicitar Permisos del GPS Cuando una Aplicación se esta ejecutando y no llenarte el capitulo de mucho contenido porque te puedes marear y no tendrás un óptimo aprendizaje.
Nota (s)
- En la siguiente parte y última terminaremos de crear nuestro proyecto.
- No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo.
Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos
- Android
- 05-11-2022
- 09-11-2022
- Crear un Post - Eventos Devs - Foro
Social
Redes Sociales (Developers)
Redes Sociales (Digital)