Comment vérifier si les Services de Localisation sont activés?
Je suis le développement d'une application sur OS Android. Je ne sais pas comment faire pour vérifier si les Services de Localisation sont activés ou non.
J'ai besoin d'une méthode qui renvoie "vrai" si elles sont activées et "faux" sinon (dans le dernier cas, je peux afficher une boîte de dialogue pour activer eux).
- Je sais que c'est un vieux sujet, mais pour ceux qui peuvent suivre... Google a publié une API pour cela; voir developers.google.com/android/reference/com/google/android/gms/...
- j'ai la réponse question similaire ici avec les codes. Check it out. Très utile.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le code ci-dessous pour vérifier si le gps fournisseur et les fournisseurs de réseau sont activées ou non.
Et dans le fichier de manifeste, vous aurez besoin d'ajouter les autorisations suivantes
lm.getAllProviders().contains(LocationManager.GPS_PROVIDER)
(ouNETWORK_PROVIDER
) aurait assurez-vous que vous ne jetez pas l'utilisateur à une page de paramètres où il n'y a pas d'option réseau.Settings.ACTION_SECURITY_SETTINGS
devrait êtreSettings.ACTION_LOCATION_SOURCE_SETTINGS
airplane mode
???J'utilise ce code pour vérifier:
locationProviders = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
a une valeur de 0, possible en indiquantLOCATION_MODE_OFF
?Vous pouvez utiliser ce code pour diriger les utilisateurs vers les Paramètres, où ils peuvent activer le GPS:
isProviderEnabled()
etgetProviders(true)
méthodes.isProviderEnabled()
etgetProviders(true)
méthodes de répondre lorsque ce paramètre est activé (ou désactivé, selon la façon dont vous le regardez), je lui en serais grandement curieux de savoir ce que vous avez rencontré.Comme maintenant en 2019
Dernière , le Meilleur et le plus court chemin est
LocationManager.class
dansgetSystemService
méthode parce que l'appel nécessite API 23 😉Travaillant à l'extérieur de la réponse ci-dessus, l'API 23, vous devez ajouter "dangereux" des contrôles d'autorisation ainsi que la vérification du système lui-même:
Si aucun fournisseur n'est activé, le "passif" est le meilleur fournisseur retourné.
Voir https://stackoverflow.com/a/4519414/621690
Oui, vous pouvez vérifier ci-dessous le code:
avec la permission dans le fichier manifeste:
Cette clause if vérifie si les services de localisation sont disponibles dans mon opinion:
- Je utiliser un tel moyen pour NETWORK_PROVIDER mais vous pouvez ajouter et pour GPS.
Dans onCreate j'ai mis
Et de la méthode de vérification de
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
Comme Peter McClennan indiqué, Google a une API qui fonctionne très bien avec la nouvelle fusionné fournisseur d'emplacement. Entièrement travaillé par exemple est à
Google Exemple de Code sur Github Vous n'avez pas besoin de code d'un utilisateur boîte de dialogue pour leur demander de modifier les paramètres comme il est fait automatiquement avec l'API.
C'est une méthode très utile qui renvoie "
true
" si leLocation services
sont activées:Pour kotlin
dialogue
appeler comme ça
Conseil: la boîte de dialogue besoins les importations suivantes (android studio doit gérer cela pour vous)
Et dans le manifeste vous avez besoin des autorisations suivantes
Pour obtenir actuel Geo emplacement dans android, google maps,vous devrait tourner sur votre emplacement de l'appareil option.Pour vérifier si l'emplacement est sur ou pas,vous pouvez simplement appeler cette méthode à partir de votre
onCreate()
méthode.Vous pouvez demander l'emplacement des mises à jour et afficher la boîte de dialogue ensemble, comme GoogleMaps doas aussi. Voici le code:
Si vous avez besoin de plus d'informations, consultez la LocationRequest classe.
j'utilise d'abord le code de commencer à créer la méthode isLocationEnabled
et j'ai vérifier l'État si ture Ouvrir la carte et de fausses donner intention ACTION_LOCATION_SOURCE_SETTINGS
Pour vérifier fournisseur de réseau, vous avez juste besoin de changer la chaîne de caractères passée à isProviderEnabled à LocationManager.NETWORK_PROVIDER si vous vérifier les valeurs de retour pour les deux GPS fournisseur et le fournisseur de Réseau - à la fois des moyens de faux pas de services de localisation
Pouvez le faire de la manière la plus simple