Estoy desarrollando una aplicación en el sistema operativo Android. No sé cómo verificar si los Servicios de ubicación están habilitados o no.
Necesito un método que devuelva "verdadero" si están habilitados y "falso" si no (así que en el último caso puedo mostrar un diálogo para habilitarlos).
Respuestas:
Puede usar el siguiente código para verificar si el proveedor gps y los proveedores de la red están habilitados o no.
Y en el archivo de manifiesto, deberá agregar los siguientes permisos
fuente
lm.getAllProviders().contains(LocationManager.GPS_PROVIDER)
(oNETWORK_PROVIDER
) se aseguraría de no lanzar al usuario a una página de configuración donde no hay una opción de red.Settings.ACTION_SECURITY_SETTINGS
debería serSettings.ACTION_LOCATION_SOURCE_SETTINGS
Yo uso este código para verificar:
fuente
Como ahora en 2020
El último, mejor y más corto camino es
fuente
LocationManager.class
en elgetSystemService
método porque llamada requiere API 23 ;-)Puede usar este código para dirigir a los usuarios a la Configuración, donde pueden habilitar el GPS:
fuente
isProviderEnabled()
ygetProviders(true)
.isProviderEnabled()
ygetProviders(true)
cuando esta configuración está habilitada (o deshabilitada, dependiendo de cómo lo mire), me gustaría saber qué ha encontrado.Migrar a Android X y usar
y usar LocationManagerCompat
En java
En kotlin
fuente
Before API version LOLLIPOP [API Level 21], this method would throw SecurityException if the location permissions were not sufficient to use the specified provider.
que si no tiene permiso para la red o el proveedor de gps, podría lanzar una excepción, dependiendo de cuál esté habilitado. Consulte el código fuente para más información.A partir de la respuesta anterior, en API 23 necesita agregar verificaciones de permisos "peligrosos", así como verificar el propio sistema:
fuente
Si no se habilita ningún proveedor, "pasivo" es el mejor proveedor devuelto. Ver https://stackoverflow.com/a/4519414/621690
fuente
Sí, puedes consultar a continuación el código:
con el permiso en el archivo de manifiesto:
fuente
Esta cláusula if comprueba fácilmente si los servicios de ubicación están disponibles en mi opinión:
fuente
Lo uso para NETWORK_PROVIDER, pero puede agregarlo y para GPS .
En onCreate pongo
Y método de verificación
fuente
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
Este es un método muy útil que devuelve "
true
" siLocation services
están habilitados:fuente
Para obtener la ubicación geográfica actual en google google maps, debe activar la opción de ubicación de su dispositivo. Para verificar si la ubicación está activada o no, simplemente puede llamar a este método desde su
onCreate()
método.fuente
Para kotlin
diálogo
llama así
Sugerencia: el diálogo necesita las siguientes importaciones (Android Studio debería manejar esto por usted)
Y en el manifiesto necesitas los siguientes permisos
fuente
Puede solicitar las actualizaciones de ubicación y mostrar el cuadro de diálogo juntos, como también las mapas de GoogleMaps. Aquí está el código:
Si necesita más información, consulte la clase LocationRequest .
fuente
utilizo el primer código para comenzar a crear el método isLocationEnabled
y verifico Condición si está abierto el mapa y la intención falsa de dar ACTION_LOCATION_SOURCE_SETTINGS
fuente
Puede hacerlo de la manera más simple
fuente
Si está utilizando AndroidX, use el siguiente código para verificar que el Servicio de ubicación esté habilitado o no:
fuente
Para verificar el proveedor de red, solo necesita cambiar la cadena que se pasa a isProviderEnabled a LocationManager.NETWORK_PROVIDER si verifica los valores de retorno para el proveedor de GPS y el proveedor de NETwork; ambos falsos significa que no hay servicios de ubicación
fuente
fuente
fuente
}
Utilice el método isLocationEnabled para detectar si los servicios de ubicación están habilitados.
La página https://github.com/Polidea/RxAndroidBle/issues/327# le dará más información sobre por qué no usar un proveedor pasivo, en su lugar use el modo de ubicación.
fuente