Я пытаюсь получить местоположение с помощью FusedLocationApi.getLastLocation
, и у меня есть разрешения на размещение в файле манифеста:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Однако, я получаю null
, когда запрашиваю местоположение из системы. Я просто тестировал отключить и на сервисах определения местоположения, поэтому это может быть связано с этим (конечно, он включен, когда я пытаюсь это сделать). Но даже после возвращения null, я жду, когда onLocationChanged
будет вызван, и он никогда не вызывался. Я также видел аналогичный вопрос: FusedLocationApi.getLastLocation всегда null
Вот мой код:
protected LocationRequest createLocationRequest() {
LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(120000);
mLocationRequest.setFastestInterval(30000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
return mLocationRequest;
}
protected GoogleApiClient getLocationApiClient(){
return new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
LocationRequest locationRequest = createLocationRequest();
@Override
public void onLocationChanged(Location location) {
App.setLocation(location); // NEVER CALLED
}
@Override
public void onConnected(Bundle bundle) {
App.setLocation(LocationServices.FusedLocationApi.getLastLocation(locationApiClient)); //RETURNS NULL
LocationRequest locationRequest = createLocationRequest();
LocationServices.FusedLocationApi.requestLocationUpdates(locationApiClient, locationRequest, this);
}
И на onCreate
моего приложения:
locationApiClient = getLocationApiClient();
locationApiClient.connect();
Где this
- мой объект приложения.
Почему я получаю null (да, я знаю, что это может быть нулевым в некоторых редких случаях, как указано в документах, но я ВСЕГДА получаю это, не редко) и по-прежнему не получают обновлений местоположения после этого? Это реальное устройство (Samsung Galaxy S3) без SIM-карты, если это помогает.