2009-06-26 4 views
27

Ich schreibe gerade eine App in Android, die mit dem GPS funktioniert. Im Moment kann ich herausfinden, ob das GPS aktiviert ist. Mein Problem ist, dass ich das GPS beim Start der App aktivieren möchte, wenn es deaktiviert ist. Wie kann ich das programmatisch machen?Wie programmgesteuert aktivieren GPS in Android Cupcake

+0

hängt von der Version des kleinen Kuchens. 1.5 erlaubt es anscheinend nicht. – D3vtr0n

Antwort

51

Sie können nicht, beginnend mit Android 1.5. Das meiste, was Sie tun können, ist das Öffnen der Aktivität, um dem Benutzer das Ein-/Ausschalten zu ermöglichen. Verwenden Sie die Aktion android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS, um eine Absicht zu erstellen, um diese Aktivität zu öffnen.

+3

Warum ist das deaktiviert? Warum lassen Entwickler das nicht umschalten? Das Power-Control-Widget kann, so sollten wir auch können. Denkst du nicht? –

+24

Es ist aus Datenschutzgründen deaktiviert. Wenn der Benutzer GPS deaktivieren möchte, sollte der Benutzer GPS ausgeschaltet haben, Punkt. – CommonsWare

+0

Diese Jungs scheinen es herausgefunden zu haben. Leider ist die Apk verschleiert und ich konnte nicht herausfinden, wie es geschafft wurde. URL: https: //market.android.com/details?id=at.abraxas.powerwidget.free&hl=de –

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

Dieser Code kompilierte nicht für mich auf Android 2.2, als .isProviderEnabled ist keine statische Methode auf LocationManager.Arbeitscode für mich war wie folgt (Entschuldigung für die Formatierung) LocationManager locationManager = (LocationManager) getSystemService (LOCATION_SERVICE); if (! LocationManager.isProviderEnabled (LocationManager.GPS_PROVIDER)) { Absicht myIntent = neue Absicht (Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivity (meinIntent); } –

-5

wenn Ihre Frage auf der Benutzerebene von Android ist diese Eigenschaften in sich befinden: "Settings -> Location -> Use wireless networks" -> "Settings -> Location -> Use GPS satellites".

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

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:

+0

Dies ist nicht die Antwort, die Person, die die Frage gestellt –

3

Sie können die folgenden Befehle verwenden. So müssen Sie Ihr eigenes Bild, um kochen tatsächlich, es zu benutzen:/

6

Dieser Code Methode Hilfe sein kann für Sie

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

ja ** dies kann bis zu 2.2 (SDK 8) ** getan werden. Weitere Informationen finden Sie unter [GPS programmatisch wie Tasker aktivieren] (http://stackoverflow.com/a/5305835/383414) –

0

Sie sollten die Location Settings Dialog in Play-Dienste verwenden, die den Benutzer auffordert, die Ortungsdienste zu ermöglichen (wenn nötig) mit nur einem Klick.

1

Zuerst prüfen, ob der Ortungsdienst bereits eingeschaltet ist oder nicht ??

Überprüfung Standort-Dienst 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 zuvor 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(); 
       }