为了账号安全,请及时绑定邮箱和手机立即绑定

getLastKnownLocation返回null

getLastKnownLocation返回null

慕勒3428872 2019-10-09 16:25:37
我已经阅读了有关此问题的一些问题,但并没有找到我需要的答案。因此,情况是我已经设置了地图,并且想要获取当前的GPS位置。我检查过我的变量不是NULL,但是我的结果是:getLastKnownLocation(provider, false);虽然给我null,所以这是我需要帮助的地方。我已经添加了对COARSE + FINE位置的权限。但是我通常会禁用手机的各种网络数据,因为我对手机账单中不可预测的数据流费用感到不满意。因此,此测试仅启用并连接了WiFi。为了使之成为可能,我还需要启用更多功能吗?我认为WiFi应该足够了吗?
查看完整描述

3 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

使用此方法获取最近的已知位置:


LocationManager mLocationManager;

Location myLocation = getLastKnownLocation();


private Location getLastKnownLocation() {

    mLocationManager = (LocationManager)getApplicationContext().getSystemService(LOCATION_SERVICE);

    List<String> providers = mLocationManager.getProviders(true);

    Location bestLocation = null;

    for (String provider : providers) {

        Location l = mLocationManager.getLastKnownLocation(provider);

        if (l == null) {

            continue;

        }

        if (bestLocation == null || l.getAccuracy() < bestLocation.getAccuracy()) {

            // Found best last known location: %s", l);

            bestLocation = l;

        }

    }

    return bestLocation;

}


查看完整回答
反对 回复 2019-10-09
?
慕的地10843

TA贡献1785条经验 获得超8个赞

试试这个对我有用:-


LocationManager mLocationManager;

Location myLocation = getLastKnownLocation();


        private Location getLastKnownLocation() {

            Location oldLoc;

            while (true){

                oldLoc = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

                if (oldLoc == null){

                    continue;

                }

                else {

                    break;

                }

            }

            return oldLoc;

        }

您可以使用NETWORK_PROVIDER代替GPS_PROVIDER以获得更快的结果。

查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 572 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信