fusedLocationClient.getLastLocation始终返回NULL



我实现了 Lib android 中使用的方法,请参阅:

fusedLocationProviderClient.getLastLocation().addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if(location != null) {
localidade = location;
Toast.makeText(getApplicationContext(), "Local correto", Toast.LENGTH_LONG).show();
}
Toast.makeText(getApplicationContext(), "Localidade vazia", Toast.LENGTH_LONG).show();
}
});

但是,在OnSuccess中,结果始终为空,我正在打开LOCAL(gps(模式的手机(9.0 android(上进行测试,并且仍然返回null,我的manisfest具有必要的权限:<uses-permission android: name = "android.permission .ACCESS_FINE_LOCATION "/>

在我看来,没有什么错,那么为什么总是为空呢?

最后已知位置是用户注册的已知位置。如果您在位置页面上阅读,它指出在某些情况下,最后一个已知位置可以为空;在这些情况下,建议您请求位置更新。以下内容摘自该页面:

在以下情况下,位置对象可以为 null:

位置在设备设置中被禁用。结果可能无效 是之前检索到的最后一个位置,因为禁用 位置还会清除缓存。该设备从未记录过自己的 位置,当设备是新设备或设备已存在时发生 恢复出厂设置。谷歌播放服务平台上的 设备已重新启动,并且没有活动的融合位置提供程序 API 客户端在重新启动服务后请求了位置。自 避免这种情况,创建新客户并请求位置 更新。

最新更新