【发布时间】:2020-04-12 14:11:26
【问题描述】:
我之前已成功使用 FusedLocation 获取设备的最后已知位置,但我不确定为什么它在这种情况下不起作用。
我已经在物理设备和模拟设备上对其进行了测试。
我实现了播放服务,并在清单中说明了所需的权限。 我还检查了我的应用的设备权限,启用了位置,并使用 Google 地图确保有最后一个已知位置。
我在我的 MainActivity 类中声明private FusedLocationProviderClient fusedLocationClient;。
在主Activity onCreate():FusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
现在我正在尝试检索用户从选项菜单中选择项目时的最后一个已知位置。
if(id == R.id.action_GPS){
fusedLocationClient.getLastLocation().addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if(location != null) {
Geocoder gcd = new Geocoder(context, Locale.getDefault());
try {
List<Address> adrs = gcd.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
} catch (IOException e) {
}
}
在对“fusedLocationClient.getLastLocation()...”进行调试后,它会跳到最后,永远不会到达 onSuccess 方法。为什么会失败?
【问题讨论】:
-
我会接受 Cường Nguyễn 的建议并添加一些日志记录,即使位置为空。然后,您也许可以进一步调试问题。实际上,当我自己从未请求过位置更新时,我也遇到了类似的问题。
-
我最终只是提出了位置请求。考虑到 FusedLocation 的不一致,并没有真正看到它的意义
标签: android