2015-12-09 24 views
7

Ich habe zwei Dateien MainActivity.java und HomeFragment.java in MainActivity ruft eine Funktion von HomeFragment, die den Benutzer auffordert, die Standortdienste auf ihrem Telefon einzuschalten. Das Problem ist, selbst wenn der Benutzer die Standortfunktion bereits aktiviert hat, wird die Funktion trotzdem aufgerufen. Gibt es eine Möglichkeit, das ich es nur machen kann, wenn die Standortfunktion ausgeschaltet ist, wird die Funktion von HomeFragment gestartet.So überprüfen Sie, ob GPS deaktiviert ist

HomeFragment.java

public static void displayPromptForEnablingGPS(
     final Activity activity) 
{ 
    final AlertDialog.Builder builder = 
      new AlertDialog.Builder(activity); 
    final String action = Settings.ACTION_LOCATION_SOURCE_SETTINGS; 
    final String message = "Enable either GPS or any other location" 
      + " service to find current location. Click OK to go to" 
      + " location services settings to let you do so."; 


    builder.setMessage(message) 
      .setPositiveButton("OK", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface d, int id) { 
          activity.startActivity(new Intent(action)); 
          d.dismiss(); 
         } 
        }); 

    builder.create().show(); 
} 

MainActivity.java

public void showMainView() { 
    HomeFragment.displayPromptForEnablingGPS(this); 
} 

Danke :)

+2

Erstes Ergebnis von Google gefunden: http://stackoverflow.com/questions/843675/how-do-i-find-out-wenn-die-gps-eines-android-gerät-is-enabled – BooleanCheese

Antwort

18

Sie so etwas wie dies nutzen könnten:

final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
    // Call your Alert message 
} 

Das sollte den Trick tun.

Um zu überprüfen, ob die Standortdienste aktiviert sind, können Sie Code ähnlich wie diese verwenden:

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

Quelle: Marcus' Beitrag here

+0

liquidsystem danke diese arbeit, aber ich fragte mich, ob anstelle von GPS_PROVIDER, wenn es könnte Überprüfen Sie, ob "Zugang zu meinem Standort" aktiv ist. Ich frage, weil der Benutzer die "Use wireless networks" aktiviert haben und das funktioniert auch. –

+0

Dies sollte Ihnen Ihre Frage stellen: https://scotthelme.co.uk/android-location-services/ – liquidsystem

+0

danke für die Antwort, aber ich endete mit einer "oder" Aussage: if (! Manager.isProviderEnabled (! LocationManager.GPS_PROVIDER) ||! Manager.isProviderEnabled (StandortManager.NETWORK_PROVIDER)) –

Verwandte Themen