Je développe une application sur Android OS. Je ne sais pas comment vérifier si les services de localisation sont activés ou non.
J'ai besoin d'une méthode qui renvoie "true" si elles sont activées et "false" sinon (donc dans le dernier cas, je peux afficher une boîte de dialogue pour les activer).
Réponses:
Vous pouvez utiliser le code ci-dessous pour vérifier si le fournisseur gps et les fournisseurs réseau sont activés ou non.
Et dans le fichier manifeste, vous devrez ajouter les autorisations suivantes
la source
lm.getAllProviders().contains(LocationManager.GPS_PROVIDER)
(ouNETWORK_PROVIDER
) garantirait 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
J'utilise ce code pour vérifier:
la source
Comme maintenant en 2020
Dernier moyen, le meilleur et le plus court
la source
LocationManager.class
engetSystemService
méthode parce que l' appel nécessite API 23 ;-)Vous pouvez utiliser ce code pour diriger les utilisateurs vers les paramètres, où ils peuvent activer le GPS:
la source
isProviderEnabled()
etgetProviders(true)
.isProviderEnabled()
etgetProviders(true)
réagissent lorsqu'un tel paramètre est activé (ou désactivé, selon la façon dont vous le regardez), je serais très curieux de savoir ce que vous avez rencontré.Migrer vers Android X et utiliser
et utilisez LocationManagerCompat
En java
À Kotlin
la source
Before API version LOLLIPOP [API Level 21], this method would throw SecurityException if the location permissions were not sufficient to use the specified provider.
donc que si vous n'avez pas d'autorisation pour le réseau ou le fournisseur gps, il peut lever une exception, selon ce qui est activé. Vérifiez le code source pour plus d'informations.En partant de la réponse ci-dessus, dans l'API 23, vous devez ajouter des vérifications d'autorisations "dangereuses" ainsi que la vérification du système lui-même:
la source
Si aucun fournisseur n'est activé, «passif» est le meilleur fournisseur renvoyé. Voir https://stackoverflow.com/a/4519414/621690
la source
Oui, vous pouvez vérifier ci-dessous le code:
avec l'autorisation dans le fichier manifeste:
la source
Cette clause if vérifie facilement si les services de localisation sont disponibles à mon avis:
la source
J'utilise de cette façon pour NETWORK_PROVIDER mais vous pouvez ajouter et pour GPS .
Dans onCreate je mets
Et méthode de vérification
la source
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
C'est une méthode très utile qui retourne "
true
" si lesLocation services
sont activés:la source
Pour obtenir l' emplacement géographique actuel dans Android Google Maps, vous devez activer l' option de localisation de votre appareil.Pour vérifier si l'emplacement est activé ou non, vous pouvez simplement appeler cette méthode à partir de votre
onCreate()
méthode.la source
Pour kotlin
dialogue
appeler comme ça
Astuce: la boîte de dialogue a besoin des importations suivantes (Android Studio devrait gérer cela pour vous)
Et dans le manifeste, vous avez besoin des autorisations suivantes
la source
Vous pouvez demander les mises à jour de l'emplacement et afficher la boîte de dialogue ensemble, comme les doas GoogleMaps également. Voici le code:
Si vous avez besoin de plus d'informations, consultez la classe LocationRequest .
la source
j'utilise le premier code commence la méthode de création isLocationEnabled
et je vérifie Condition si tu ouvres la carte et donne une fausse intention ACTION_LOCATION_SOURCE_SETTINGS
la source
Peut faire de la manière la plus simple
la source
Si vous utilisez AndroidX, utilisez le code ci-dessous pour vérifier que le service de localisation est activé ou non:
la source
Pour vérifier le fournisseur de réseau, il vous suffit de remplacer la chaîne transmise à isProviderEnabled par LocationManager.NETWORK_PROVIDER si vous vérifiez les valeurs de retour pour le fournisseur GPS et le fournisseur NETwork - les deux false signifie aucun service de localisation
la source
la source
la source
}
Utilisez la méthode isLocationEnabled pour détecter que les services de localisation sont activés.
https://github.com/Polidea/RxAndroidBle/issues/327# page donnera plus d'informations pourquoi ne pas utiliser le fournisseur passif, utilisez plutôt le mode de localisation.
la source