2016-08-10 2 views
1

Ok, das ist ein komisches, aber ich vermisse vielleicht etwas, das offensichtlich ist. Ich bin zur Zeit Zugriff auf den Standort des Nutzers mit dieser Funktion:Android App fehlt Statusleiste Symbol beim Zugriff auf Location Services

public String[] getGeoCoords() { 
    String[] geoCoords = new String[2]; 
    String mprovider = locationManager.getBestProvider(criteria, false); 
    if (mprovider != null && !mprovider.equals("")) { 
     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      return geoCoords; 
     } 
     Location loc = locationManager.getLastKnownLocation(mprovider); 
     if(loc== null) 
      loc = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
     if (loc == null) 
      loc = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER); 
     if (loc == null) 
      loc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
     geoCoords[0] = String.valueOf(loc.getLatitude()); 
     geoCoords[1] = String.valueOf(loc.getLongitude()); 
    } 
    return geoCoords; 
} 

Dies gibt den Standort wie erwartet, aber das Symbol, das Sie in der Regel erhalten, wenn der Benutzer den Zugriff auf Position nicht in der Statusleiste angezeigt wird.

In meinem Manifest Ich habe

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 

Irgendwelche Ideen?

+0

versuchen, diese Berechtigung hinzuzufügen

Antwort

0

Sie greifen auf getLastKnownLocation() zurück, die den letzten verfügbaren Speicherort direkt zurückgibt, andernfalls gibt es null zurück.

Das Symbol Ihr reden werden kommt, wenn Sie für den Standort-Update wie folgt anfordern ..

LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE); 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() { 
      @Override 
      public void onLocationChanged(Location location) { 

      } 

      @Override 
      public void onStatusChanged(String provider, int status, Bundle extras) { 

      } 

      @Override 
      public void onProviderEnabled(String provider) { 

      } 

      @Override 
      public void onProviderDisabled(String provider) { 

      } 
     }); 

so, während es für Satelliten sucht, zeigt es, dass GPS-Symbol und wenn es ein onLocationChanged(Location location) gefunden wird aufgerufen erfasste Position

+0

Ahh, das macht Sinn! Vielen Dank. – MarkDev

Verwandte Themen