Je sais que la question sur l'activation / la désactivation du GPS par programme sur Android a été discutée à plusieurs reprises , et la réponse est toujours la même:
"Vous ne pouvez pas pour des raisons de sécurité / confidentialité, vous devez transférer à l'écran des préférences de localisation et laisser l'utilisateur l'activer / le désactiver."
Je comprends que, cependant, j'ai récemment acheté Tasker sur le marché et, parmi beaucoup d'autres choses que vous pouvez accomplir avec lui, vous pouvez définir des règles pour activer automatiquement le GPS lors de l'accès à des applications prédéterminées et le désactiver à la sortie (voir ici pour le tutoriel sur la façon de le faire, et cela fonctionne!) Et cette application ne peut pas être signée avec la clé de signature du micrologiciel car elle fonctionne sur de nombreuses versions d'Android et différents appareils et vous n'avez même pas besoin d'être rooté.
J'aimerais faire cela dans mon application. Bien sûr, je ne veux pas faire exploser la confidentialité des utilisateurs, donc je demanderais d'abord à l'utilisateur s'il veut l'activer automatiquement avec la case à cocher typique "se souvenir de ma décision" et s'il répond oui, activez-la.
Quelqu'un a-t-il une idée ou un indice sur la façon dont Tasker y parvient?
Toutes ces réponses ne sont pas autorisées maintenant. Voici la bonne:
Pour tous ceux qui recherchent encore la réponse:
Voici comment OLA Cabs et d'autres applications similaires le font.
Ajoutez ceci dans votre onCreate
Voici les méthodes implémentées:
Voici la documentation Android pour le même.
C'est pour aider les autres gars s'ils ont encore du mal:
Edit : Ajout du commentaire d'Irfan Raza pour plus d'aide.
la source
ACTIVER LE GPS:
DÉSACTIVER LE GPS:
la source
Ce code fonctionne sur ROOTED téléphones si l'application est déplacé
/system/aps
, et ils ont les autorisations suivantes dans le manifeste :Code
la source
Au lieu d'utiliser les paramètres d'intention.ACTION_LOCATION_SOURCE_SETTINGS, vous pouvez directement afficher des fenêtres contextuelles dans votre application comme Google Map et sur Gps en cliquant sur le bouton OK, il n'est pas nécessaire de rediriger vers le paramètre, vous devez simplement utiliser mon code comme
Remarque: Cette ligne de code ouvre automatiquement la boîte de dialogue si l'emplacement n'est pas activé. Ce morceau de ligne est également utilisé dans Google Map
la source
Depuis la version Android 4.4, vous ne pouvez pas activer / désactiver le GPS par programme. Si vous essayez le code proposé sur cette réponse , une exception sera déclenchée.
la source
Pour activer ou désactiver le GPS par programme, vous avez besoin d'un accès «root» et BusyBox installé. Même avec ceux-ci, la tâche n'est pas anodine.
L'échantillon est ici: Google Drive , Github , Sourceforge
Testé avec les androïdes 2.3.5 et 4.1.2.
la source
La réponse ci-dessus est très ancienne, elle a besoin de quelque chose de nouveau, voici la réponse
Comme dans la dernière mise à jour, nous avons le support androidx, alors incluez d'abord la dépendance dans votre fichier build.gradle au niveau de l'application
puis ajoutez dans votre fichier manifeste:
n'oubliez pas de prendre le consentement de l'utilisateur pour ces autorisations si vous libérez
maintenant, voici le code, utilisez-le
si quelque chose ne va pas, envoyez-moi un ping
la source
Une réponse a été développée dans une autre question, mais elle a été fermée, et j'aimerais que la communauté l'essaie également.
Voir ce commentaire
Cette solution nécessiterait les autorisations
WRITE_SETTINGS
etWRITE_SECURE_SETTINGS
.la source
android.permission.WRITE_SECURE_SETTINGS
autorisation dans le manifeste.Peut-être avec des astuces de réflexion autour de la classe
android.server.LocationManagerService
.Aussi, il existe une méthode (depuis l'API 8)
android.provider.Settings.Secure.setLocationProviderEnabled
la source
Settings.Secure
classe semble prometteuse, mais j'obtiens une exception de sécurité indiquant que j'ai besoin de android.permission.WRITE_SECURE_SETTINGS, et j'obtiens l'erreur même en ajoutant cette autorisation (et WRITE_SETTINGS également) à mon manifeste. Mais cela semble un bon moyen de continuer à chercher. Merci :)WRITE_SECURE_SETTINGS
a un niveau de protection dontsystemOrSignature
vous avez besoin pour faire de cette application une application système pour qu'elle fonctionne, ce qui est également mentionné dans cette réponse .C'est la meilleure solution fournie par
Google Developers
. Appelez simplement cette méthode dans onResume de onCreate après l'initialisationGoogleApiClient
.Remarque: Cette ligne de code ouvre automatiquement la boîte de dialogue si elle
Location
n'est pas activée. Ce morceau de ligne est également utilisé dans Google Mapla source
run time
permission accordée.Ce code fonctionne sur les téléphones ROOTED:
Pour désactiver le GPS, vous pouvez utiliser cette commande à la place
Vous pouvez également basculer la précision du réseau à l'aide des commandes suivantes: pour activer l'utilisation:
et pour éteindre, vous pouvez utiliser:
la source
Les choses ont changé depuis la publication de cette question, maintenant avec la nouvelle API Google Services, vous pouvez inviter les utilisateurs à activer le GPS:
https://developers.google.com/places/android-api/current-place
Vous devrez demander l'autorisation ACCESS_FINE_LOCATION dans votre manifeste:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Regardez également cette vidéo:
https://www.youtube.com/watch?v=F0Kh_RnSM0w
la source
Celui-ci fonctionne pour moi.
C'est plus simple que la réponse de Rj0078 à cette question ( https://stackoverflow.com/a/42556648/11211963 ), mais celle-ci fonctionne également.
Il montre une boîte de dialogue comme celle-ci:
(Écrit en Kotlin)
la source
Il vous suffit de supprimer le
LocationListener
deLocationManager
la source
Utilisez ce code simple et facile d'accès:
Autorisations:
Suivez ce code pour accéder au GPS par programmation:
la source