在android开发中调用Geocoder方法返回空值的问题

问题代码如下

//获取对应位置的经纬度并且定位城市
        private void updateWithNewLocation(Location location) {
            double lat = 0.0,lng = 0.0;
            if (location!=null) {
                lat = location.getLatitude();
                lng = location.getLongitude();
                Log.i("TAG", "经度是"+lat+"纬度是"+lng);
                System.out.println("程序能走到这一步4");
            }else {
                cityName = "无法获取城市信息";

            }

            System.out.println("程序能走到这一步5");
            //通过经纬度获取地址
            //通过经纬度获取地址
            List<Address> list = null;
            Geocoder geocoder = new Geocoder(getActivity());
            try {
                list = geocoder.getFromLocation(lat, lng, 2);
                System.out.println("list="+list);
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
            if (list!=null&&list.size()>0) {
                for (int i = 0; i < list.size(); i++) {
                    Address address = list.get(i);
                    cityName = address.getLocality();//获取城市
                }       
            }
            //发送空消息
            handler.sendEmptyMessage(1);
        }

logcat中lat和lng的值有正常输出,但是执行完list = geocoder.getFromLocation(lat, lng, 2);之后list依然为空,显示在模拟器上面updateWithNewLocation()这个方法根本没有执行,后来用真机测试这个方法有执行,但是geocoder方法总是返回空值。最后知道是Geocoder()这个方法本身的问题,如果手机没有google service框架总是会返回空值,参看
Pro Android学习笔记(一一五):Location(1):Geocoder

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值