我正在尝试使用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 always 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();
为什么我得到了空值(是的,我知道在某些罕见情况下它可能为空,如文档中所述,但我总是得到这个空值,而不是很少)而且之后仍然没有得到位置更新? 这是一个真实的设备(三星Galaxy S3),没有SIM卡,如果可以帮助的话。
ACCESS_GPS
或ACCESS_LOCATION
权限。除此之外,如果没有代码,很难为您提供帮助。 - CommonsWare