J'écris actuellement une application sous Android qui fonctionne avec le GPS. Pour le moment, je suis en mesure de déterminer si le GPS est activé. Mon problème est que je veux activer le GPS au démarrage de l'application s'il est désactivé. Comment puis-je faire cela par programmation?
Vous ne pouvez pas, à partir d'Android 1.5. Le mieux que vous puissiez faire est d'ouvrir l'activité pour permettre à l'utilisateur de l'activer/la désactiver. Utilisez l'action contenue dans Android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS
pour créer une intention d'ouvrir cette activité.
if(!LocationManager.isProviderEnabled(Android.location.LocationManager.GPS_PROVIDER ))
{
Intent myIntent = new Intent( Settings.ACTION_SECURITY_SETTINGS );
startActivity(myIntent);
}
Ce code de méthode peut être une aide pour vous
private void turnGPSOnOff(){
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(!provider.contains("gps")){
final Intent poke = new Intent();
poke.setClassName("com.Android.settings", "com.Android.settings.widget.SettingsAppWidgetProvider");
poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
poke.setData(Uri.parse("3"));
sendBroadcast(poke);
//Toast.makeText(this, "Your GPS is Enabled",Toast.LENGTH_SHORT).show();
}
}
Vous pouvez utiliser les éléments suivants:
try {
Settings.Secure.setLocationProviderEnabled(getContentResolver(), LocationManager.GPS_PROVIDER, true);
} catch (Exception e) {
logger.log(Log.ERROR, e, e.getMessage());
}
mais cela ne fonctionnera que si vous avez le niveau de protection de la signature du système. Donc, vous devez faire cuire votre propre image pour l'utiliser réellement: /
Commencez par vérifier si le service de localisation est déjà activé ou non ??
La vérification du service de localisation est activée ou non
public boolean isLocationServiceEnabled(){
LocationManager locationManager = null;
boolean gps_enabled= false,network_enabled = false;
if(locationManager ==null)
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
try{
gps_enabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
}catch(Exception ex){
//do nothing...
}
try{
network_enabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
}catch(Exception ex){
//do nothing...
}
return gps_enabled || network_enabled;
}
Enfin, enfin, si le service de localisation est désactivé auparavant
if (isLocationServiceEnabled())) {
//DO what you need...
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Seems Like location service is off, Enable this to show map")
.setPositiveButton("YES", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
}).setNegativeButton("NO THANKS", null).create().show();
}
Vous devez utiliser la boîte de dialogue Paramètres de localisation in Play Services qui invite l'utilisateur à activer les services de localisation (si nécessaire) en un seul clic.