Sé que la pregunta sobre activar / desactivar GPS mediante programación en Android se ha discutido muchas veces , y la respuesta es siempre la misma:
"No puede por razones de seguridad / privacidad, debe reenviar a la pantalla de preferencias de ubicación y dejar que el usuario lo habilite / deshabilite".
Entiendo que, sin embargo, recientemente compré Tasker en el mercado y, entre muchas otras cosas que puede lograr con él, puede establecer reglas para habilitar automáticamente el GPS al ingresar a aplicaciones predeterminadas y deshabilitarlo a la salida (consulte aquí para ver el tutorial sobre cómo hacerlo, ¡y simplemente funciona!) y esta aplicación no se puede firmar con la clave de firma de firmware, ya que funciona en muchas versiones de Android y dispositivos diferentes, y ni siquiera necesita ser rooteado.
Me gustaría hacer esto en mi aplicación. Por supuesto, no quiero volar la privacidad de los usuarios, por lo que primero le preguntaría al usuario si quiere activarlo automáticamente con la típica casilla de verificación "recordar mi decisión" y si responde que sí, habilítelo.
¿Alguien tiene alguna idea o idea de cómo Tasker logra esto?
Todas estas respuestas no están permitidas ahora. Aquí está la correcta:
Para todos aquellos que todavía buscan la respuesta:
Así es como lo están haciendo OLA Cabs y otras aplicaciones similares.
Agregue esto en su onCreate
Estos son los métodos implícitos:
Aquí está la documentación de Android para el mismo.
Esto es para ayudar a otros hombres si todavía están luchando:
Editar : Agregar el comentario de Irfan Raza para obtener más ayuda.
fuente
ACTIVAR GPS:
DESACTIVAR GPS:
fuente
Este código funciona en teléfonos ROOTED si la aplicación se mueve a
/system/aps
, y tienen los siguientes permisos en el manifiesto :Código
fuente
En lugar de usar la configuración de intención.ACTION_LOCATION_SOURCE_SETTINGS, puede mostrar directamente una ventana emergente en su aplicación como Google Map y en Gps al hacer clic en el botón Aceptar, no es necesario redirigir a la configuración, simplemente necesita usar mi código como
Nota: Esta línea de código abre automáticamente el cuadro de diálogo si Ubicación no está activada. Este fragmento de línea también se usa en Google Map
fuente
Desde la versión 4.4 de Android, no puede habilitar / deshabilitar gps mediante programación. Si prueba el código propuesto en esta respuesta , se activará una excepción.
fuente
Para activar o desactivar el GPS mediante programación, necesita acceso 'root' y BusyBox instalado. Incluso con esos, la tarea no es trivial.
La muestra está aquí: Google Drive , Github , Sourceforge
Probado con los androides 2.3.5 y 4.1.2.
fuente
La respuesta correcta anterior es muy antigua, necesita algo nuevo, así que aquí está la respuesta
Como en la última actualización, tenemos soporte para Androidx, así que primero incluya la dependencia en el archivo build.gradle de su nivel de aplicación
luego agregue en su archivo de manifiesto:
no olvides pedir el consentimiento del usuario para estos permisos si estás liberando
ahora aquí está el código solo úsalo
si algo sale mal por favor envíame un ping
fuente
Se desarrolló una respuesta en otra pregunta, pero estaba cerrada, y me gustaría que la comunidad también la probara.
Ver este comentario
Esta solución requeriría los permisos
WRITE_SETTINGS
yWRITE_SECURE_SETTINGS
.fuente
android.permission.WRITE_SECURE_SETTINGS
permiso en el Manifiesto.Tal vez con trucos de reflexión alrededor de la clase.
android.server.LocationManagerService
.Además, hay un método (desde API 8)
android.provider.Settings.Secure.setLocationProviderEnabled
fuente
Settings.Secure
clase parece prometedora, sin embargo, recibo una excepción de seguridad que dice que necesito android.permission.WRITE_SECURE_SETTINGS, y sigo recibiendo el error incluso agregando este permiso (y WRITE_SETTINGS también) a mi manifiesto. Pero parece una buena manera de seguir buscando. Gracias :)WRITE_SECURE_SETTINGS
tiene un nivel de protecciónsystemOrSignature
que necesita para que esa aplicación sea una aplicación del sistema para que funcione, lo que también se menciona en esta respuesta .Esta es la mejor solución proporcionada por
Google Developers
. Simplemente llame a este método en onResume of onCreate después de inicializarGoogleApiClient
.Nota: Esta línea de código abre automáticamente el cuadro de diálogo si
Location
no está activado. Este fragmento de línea también se usa en Google Mapfuente
run time
permiso otorgado.Este código funciona en teléfonos ROOTED:
Para apagar el GPS, puedes usar este comando
También puede alternar la precisión de la red con los siguientes comandos: para activar el uso:
y para apagar puedes usar:
fuente
Las cosas han cambiado desde que se publicó esta pregunta, ahora con la nueva API de servicios de Google, puede solicitar a los usuarios que habiliten el GPS:
https://developers.google.com/places/android-api/current-place
Deberá solicitar el permiso ACCESS_FINE_LOCATION en su manifiesto:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Mira también este video:
https://www.youtube.com/watch?v=F0Kh_RnSM0w
fuente
Esta funciona para mí.
Es más simple que la respuesta de Rj0078 en esta pregunta ( https://stackoverflow.com/a/42556648/11211963 ), pero esa también funciona.
Muestra un diálogo como este:
(Escrito en Kotlin)
fuente
Sólo tiene que quitar la
LocationListener
deLocationManager
fuente
Utilice este código simple y fácil de acceder:
Permisos:
Siga este código para acceder al GPS mediante programación:
fuente