web-dev-qa-db-fra.com

Comment activer par programme le GPS dans Android Cupcake

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?

27
Chiwai Chan

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é.

51
CommonsWare
if(!LocationManager.isProviderEnabled(Android.location.LocationManager.GPS_PROVIDER ))
{
    Intent myIntent = new Intent( Settings.ACTION_SECURITY_SETTINGS );
    startActivity(myIntent);
}
15
TS.xy

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();
  }
}
6
Dwivedi Ji

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: /

3
icyerasor

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();
                }
1
yubaraj poudel

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.

0
Greg Ennis