2013-08-09 16 views
18

Ich habe eine Android-App, die Standort verwendet. Aber ich habe festgestellt, dass nichts mehr funktioniert, wenn Benutzer den Zugriff auf meinen Standort unter Einstellungen> Ort deaktivieren. Wie kann ich überprüfen, ob es aktiviert ist? Falls es deaktiviert ist, wie öffne ich diese Einstellungen über meine App?Überprüfen, ob 'Zugriff auf meinen Standort' aktiviert ist - Android

Dank

GELÖST:

String locationProviders = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 
if (locationProviders == null || locationProviders.equals("")) { 
    ... 
    startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)); 
} 

Antwort

3

diese überprüfen Sie diese Seite nützlich sein wird, kann es über die Lage Service

http://www.scotthelme.co.uk/android-location-services/

+0

Ok scheint es Settings.Secure.getString (getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED) zu werden; Thansk, irgendeine Idee, wie man es von meiner APP öffnet? –

+1

Link ist tot ... –

8

Sie es so, dass diskutiert überprüfen :

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) // Return a boolean 

EDIT:

Wenn Sie den Netzbetreiber überprüfen möchten:

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER) // Return a boolean 

EDIT 2:

Wenn Sie die Einstellungen öffnen möchten, können Sie diese Absicht verwenden:

Intent intent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
+0

was Wenn ich den aktuellen Standort dank Wifi bekommen möchte? –

+0

Sie können auch die Verfügbarkeit des Netzwerkanbieters überprüfen (ersetzen Sie "LocationManager.GPS_PROVIDER" durch "LocationManager.NETWORK_PROVIDER"). – Brtle

+1

Wenn Sie Wifi verwenden möchten, verwenden Sie den NETWORK-Provider. Werfen Sie einen Blick auf Docs und offizielle Android-Artikel, wie zum Beispiel: http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html (und beachten Sie, dass es jetzt auch neuere Sachen gibt, via Google Play Services, wie der fusionierte Anbieter: https://developer.android.com/google/play-services/location.html. –

0

Leider scheint es die Verwendung von Settings.Secure.LOCATION_PROVIDERS_ALLOWED ist seit API zu tun, 19.

Eine neue Art und Weise weiterentwickelt, dass sein würde:

int locationMode = Settings.Secure.getInt(
    getContentResolver(), 
    Settings.Secure.LOCATION_MODE, 
    Settings.Secure.LOCATION_MODE_OFF // Default value if not found 
); 

if (locationMode == Settings.Secure.LOCATION_MODE_OFF) { 
    // Location is off 
} 
2

Eine alternative Möglichkeit, das zu tun, ohne Settings.Secure mit und ohne alle Standortanbieter zu Scannen zu tun wäre:

LocationManager locationManager = (LocationManager) getContext().getSystemService(Context.LOCATION_SERVICE); 
int providersCount = locationManager.getProviders(true).size(); // Listing enabled providers only 
if (providersCount == 0) { 
    // No location providers at all, location is off 
} 
-1

Es gibt zwei Möglichkeiten Lage zu überprüfen, 1-mit GPS 2 betriebenen Netzanbietern sein besseren sowohl Service überprüfen aktiviert oder not.For dass die Verwendung dieses metho d :)

public boolean checkServices(){ 
    //check location service 
    LocationManager locationManager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE); 
    if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) && 
      locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){ 
      return true; 
    } 
} 
+0

Ich weiß nicht, warum jemand mir -1 dafür gibt ...Diese Lösung funktioniert für mich und ich benutze sie.Wenn die Lösung nicht mit Ihnen funktioniert, versuchen Sie eine andere Lösung nicht als -1 Idiot, –

Verwandte Themen