首页 > 解决方案 > fusedLocationClient.getLastLocation 总是返回 NULL

问题描述

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

  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 中,结果始终为 null,我正在我的手机(9.0 android)上测试 LOCAL(gps) 模式并仍然返回 null,我的清单具有必要的权限:<uses-permission android: name = "android.permission .ACCESS_FINE_LOCATION "/>

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

标签: androidandroid-locationandroid-gpsfusedlocationproviderapi

解决方案


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

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

位置在设备设置中被禁用。结果可能是无效的,甚至是先前检索到的最后一个位置,因为禁用该位置也会清除缓存。设备从不记录自己的位置,这种情况发生在设备是新设备或恢复出厂设置时。设备上的 Google Play 服务平台已重新启动,并且在服务重新启动后没有活动的 Fused Location Provider API 客户端请求位置。为避免这种情况,请创建新客户并请求位置更新。


推荐阅读