Question

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?

Était-ce utile?

La solution

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 organisée dans android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS pour créer une intention d'ouvrir cette activité.

Autres conseils

if(!LocationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER ))
{
    Intent myIntent = new Intent( Settings.ACTION_SECURITY_SETTINGS );
    startActivity(myIntent);
}

Ce code de méthode peut vous aider

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;

}

Puis enfin, si le service de localisation est désactivé précédemment

  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 les paramètres de localisation. Dialogue dans Play Services qui invite l'utilisateur à activer les services de localisation (si nécessaire) en un seul clic.

si votre question concerne les utilisateurs d'Android, ces propriétés se trouvent dans: "Settings -> Location -> Use wireless networks" -> "Settings -> Location -> Use GPS satellites".

Mais le développeur peut utiliser la classe "android.provider.Settings.Secure" avec les autorisations appropriées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top