Frage

Ich bin derzeit eine App in Android zu schreiben, die mit dem GPS funktioniert. Im Moment bin ich in der Lage, herauszufinden, ob das GPS aktiviert ist. Mein Problem ist, dass ich die GPS auf app Start aktiviert werden soll, wenn es deaktiviert ist. Wie kann ich tun, um diese programmaticaly?

War es hilfreich?

Lösung

Sie können nicht, beginnend mit Android 1.5. Die Sie tun können, ist Pop die Aktivität öffnen, damit der Benutzer es ein- / auszuschalten. Verwenden Sie die gehaltene Aktion in android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS eine Intent Handwerk, diese Aktivität zu öffnen.

Andere Tipps

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

Dieser Code Methode kann Hilfe für Sie sein

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

Sie können verwenden Sie die folgende:

try {
  Settings.Secure.setLocationProviderEnabled(getContentResolver(), LocationManager.GPS_PROVIDER, true);
} catch (Exception e) {
  logger.log(Log.ERROR, e, e.getMessage());
}

, aber es wird nur funktionieren, wenn Sie Systemsignaturschutzniveau haben. So müssen Sie Ihr eigenes Bild, um kochen, es tatsächlich zu verwenden: /

Überprüfen Sie zunächst, ob der Standort-Service ist bereits auf oder nicht ??

Standortbestimmungsdienst-Überprüfung aktiviert ist oder nicht

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;

}

Dann endlich zu öffnen, wenn Standortdienst in vorher ausgeschaltet

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

sollten Sie verwenden die Standorteinstellungen Dialog in Play-Diensten, die den Benutzer auffordert, die Ortungsdienste (falls erforderlich) mit nur einem Klick zu aktivieren.

Wenn Sie Ihre Frage auf der Benutzerebene von android diese Eigenschaften befinden sich in:. "Settings -> Location -> Use wireless networks" -> "Settings -> Location -> Use GPS satellites"

Aber im Entwickler kann die Klasse "android.provider.Settings.Secure" mit den entsprechenden Berechtigungen verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top