2016-03-23 10 views
2

Ich versuche, den letzten bekannten Standort des Benutzers zu ermitteln.LocationService.FusedLocation gibt nur auf einigen Geräten null zurück.

Nachdem Google API verbunden ist, nenne ich meine Funktion:

@Override 
public void onConnected(Bundle bundle) { 
    initilizeMap(); 
} 

Die Funktion sieht wie folgt aus:

private void initilizeMap(){ 
    mLastLocation = LocationServices.FusedLocationApi 
      .getLastLocation(mGoogleApiClient); 

    if (mLastLocation != null){ 
     ... 
    }else{ 
     // location unknown 
    } 
} 

ich die Google Maps geöffnet zuerst den aktuellen Standort des Benutzers zu erhalten . mLastLocation ist jedoch immer noch null.

Die interessanteste Sache ist, dass der Code auf Sony Tablet funktioniert. Aber ich habe mein Handy heute zu Nexus gewechselt und es funktioniert nicht auf diesem Gerät!

Wie kann ich das beheben?

P.S. Ich enthalten diese Berechtigungen in meinem Manifest-Datei:

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

und Android-Version ist 6.0.1

+0

Sieht aus wie der Code ist in Ordnung, vielleicht hat es mit Ihrem Telefon zu tun? –

+0

@EricS. Ich hoffe es ist nicht! Ich kaufte es gerade :(Google Maps arbeitet obwohl –

+0

Ich bin sicher, dass Ihr Telefon in Ordnung ist, dachte ich vielleicht eine Einstellung oder etwas. –

Antwort

1

eine gefährliche Berechtigungen aufgeführten here Bedarf zur Laufzeit aufgefordert werden, wie auf Requesting Permissions at Run Time sonst gezeigt Sie erhalten Ein Permission Denied Fehler, der unerwartete Ergebnisse in Ihrer App haben kann.

überprüfen Sie eine Erlaubnis mit: ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.ACCESS_FINE_LOCATION)

es zurückgeben kann entweder PackageManager.PERMISSION_GRANTED oder PackageManager.PERMISSION_DENIED

, wenn Sie bekommen ein PackageManager.PERMISSION_DENIED dann können Sie diese Erlaubnis beantragen mit:

ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSIONS_REQUEST_ACCESS_LOCATION);

wo MY_PERMISSION_REQUEST_ACCESS_LOCATION ist Ihre definierte int Variable, die Pas ist sed zum Rückruf von onRequestPermissionsResult wo Sie das Ergebnis der Erlaubnis erlauben/verweigern.

+0

Danke @Pztar !! –

Verwandte Themen