2016-10-09 4 views
0

Ich versuche Google Places API zu verwenden, um den aktuellen Standort des Geräts mithilfe von PlaceDetectionApi zu ermitteln. Ich habe erwartet, dass für den Fall, dass die erforderlichen Einstellungen nicht aktiviert sind, um den aktuellen Ort zu erkennen, die Startauflösung den Benutzer auffordern sollte, Standortdienste zu aktivieren, ohne das LocationSettings-Objekt erstellen und explizit auflösen zu müssen. Fehle ich etwas?LocationSettings für Google platziert API zum Ermitteln des aktuellen Standorts

Antwort

0

Sie überprüfen können, ob der Standort-Modus manuell deaktiviert oder nicht, und wenn deaktiviert können Sie die Einstellungen direkt öffnen, damit es wie gezeigt:

public static boolean isLocationServicesAvailable(Context context) { 
     int locationMode = 0; 
     String locationProviders; 
     boolean isAvailable = false; 

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
      try { 
       locationMode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE); 
      } catch (Settings.SettingNotFoundException e) { 
       e.printStackTrace(); 
      } 

      isAvailable = (locationMode != Settings.Secure.LOCATION_MODE_OFF); 
     } else { 
      locationProviders = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 
      isAvailable = !TextUtils.isEmpty(locationProviders); 
     } 

     // boolean coarsePermissionCheck = (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED); 
     // boolean finePermissionCheck = (ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED); 

     return isAvailable; 
    } 

Oeffnen Einstellungen bei disabled:

if(!isLocationServicesAvailable(this)) { 
      // notify user 
      AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
      dialog.setMessage("enabled"); 
      dialog.setPositiveButton("open GPS", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface paramDialogInterface, int paramInt) { 
        // TODO Auto-generated method stub 
        Intent myIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
        startActivity(myIntent); 
        //get gps 
       } 
      }); 
      dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface paramDialogInterface, int paramInt) { 
        // TODO Auto-generated method stub 

       } 
      }); 
      dialog.show(); 
     } 
+0

Ich hatte gehofft, dass es eine bessere allgemeine Auflösung gibt, anstatt auf Internet und GPS manuell zu überprüfen – hsen

+0

ich denke, dass Sie es manuell überprüfen müssen, das ist, was ich weiß :)) –

Verwandte Themen