J'ai une application Android qui utilise l'emplacement. Mais j'ai remarqué que si les utilisateurs désactivent l'option 'Accès à ma position' dans Paramètres> Accès à la position, rien ne fonctionne plus. Comment puis-je vérifier qu'il est activé? Dans le cas où il est désactivé, comment ouvrir ces paramètres depuis mon application?
Merci
RESOLU:
String locationProviders = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if (locationProviders == null || locationProviders.equals("")) {
...
startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
}
peut-être cela sera utile vérifier ce site il discute sur le service de localisation
Vous pouvez le vérifier comme ça:
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) // Return a boolean
MODIFIER:
Si vous souhaitez vérifier le fournisseur de réseau:
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER) // Return a boolean
EDIT 2:
Si vous souhaitez ouvrir les paramètres, vous pouvez utiliser cette intention:
Intent intent = new Intent(Android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
Une autre façon de le faire sans utiliser Settings.Secure
et sans analyser tous les fournisseurs de lieux serait de procéder comme suit:
LocationManager locationManager = (LocationManager) getContext().getSystemService(Context.LOCATION_SERVICE);
int providersCount = locationManager.getProviders(true).size(); // Listing enabled providers only
if (providersCount == 0) {
// No location providers at all, location is off
}
Malheureusement, il semble que l'utilisation de Settings.Secure.LOCATION_PROVIDERS_ALLOWED
soit obsolète depuis l'API 19.
Une nouvelle façon de faire serait:
int locationMode = Settings.Secure.getInt(
getContentResolver(),
Settings.Secure.LOCATION_MODE,
Settings.Secure.LOCATION_MODE_OFF // Default value if not found
);
if (locationMode == Settings.Secure.LOCATION_MODE_OFF) {
// Location is off
}