Android geocoder.getFromLocation返回null

Android geocoder.getFromLocation返回null,android,location,android-location,google-geocoder,Android,Location,Android Location,Google Geocoder,我的代码: try { Geocoder geocoder; List<Address> addresses; geocoder = new Geocoder(LocationActivity.this, Locale.getDefault()); address

我的代码:

                 try
                {

                            Geocoder geocoder;
                        List<Address> addresses;

            geocoder = new Geocoder(LocationActivity.this, Locale.getDefault());

            addresses = geocoder.getFromLocation(longitude,latitude,1);

            Toast.makeText(LocationActivity.this, addresses.size() + "", Toast.LENGTH_LONG).show();

            String address = addresses.get(0).getAddressLine(0);
            String city = addresses.get(0).getAddressLine(0);
            String country = addresses.get(0).getAddressLine(0);

            Toast.makeText(LocationActivity.this, address + "  " + city + " " + country, Toast.LENGTH_LONG).show();

        }
        catch(Exception e)
        {
            Toast.makeText(LocationActivity.this,e.toString(), Toast.LENGTH_LONG).show();
        }
试试看
{
地理编码器;
列出地址;
geocoder=新的geocoder(LocationActivity.this,Locale.getDefault());
地址=地理编码器.getFromLocation(经度,纬度,1);
Toast.makeText(LocationActivity.this,addresses.size()+“”,Toast.LENGTH_LONG.show();
字符串地址=地址.get(0).getAddressLine(0);
字符串city=addresses.get(0).getAddressLine(0);
字符串country=addresses.get(0).getAddressLine(0);
Toast.makeText(LocationActivity.this,地址+“”+城市+“”+国家,Toast.LENGTH_LONG).show();
}
捕获(例外e)
{
Toast.makeText(LocationActivity.this,例如toString(),Toast.LENGTH_LONG).show();
}
这是我从经度和纬度获取地址的代码。 但是每次address.size返回0时


如果您正在使用emulator,请转到DDMS,您将找到emulator control并在其中提供有效的lat lng,然后按send。。 确保在清单中提到互联网权限

    try {
        Geocoder geocoder;
        List<Address> addresses;

        geocoder = new Geocoder(this, Locale.getDefault());

        double longitude = 23.00000;
        double latitude = 72.00000;
        addresses = geocoder.getFromLocation(longitude, latitude, 1);

        Toast.makeText(this, addresses.size() + "", Toast.LENGTH_LONG)
                .show();

        String address = addresses.get(0).getAddressLine(0);
        String city = addresses.get(0).getAddressLine(1);
        String country = addresses.get(0).getAddressLine(2);

        if(address==null)
        address="";
        if(city==null)
            city="";
        if(country==null)
            country="";

        Toast.makeText(this, address + "  " + city + " " + country,
                Toast.LENGTH_LONG).show();

    } catch (Exception e) {
        Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
    }
试试看{
地理编码器;
列出地址;
geocoder=新的geocoder(这个,Locale.getDefault());
双经度=23.00000;
双纬度=72.00000;
地址=地理编码器.getFromLocation(经度,纬度,1);
Toast.makeText(这个,addresses.size()+“”,Toast.LENGTH\u LONG)
.show();
字符串地址=地址.get(0).getAddressLine(0);
字符串city=addresses.get(0).getAddressLine(1);
字符串country=addresses.get(0).getAddressLine(2);
如果(地址==null)
地址=”;
如果(城市==null)
城市=”;
如果(国家==null)
国家=”;
Toast.makeText(此,地址+“”+城市+“”+国家,
Toast.LENGTH_LONG).show();
}捕获(例外e){
Toast.makeText(例如toString(),Toast.LENGTH_LONG).show();
}

我不确定这是否会有帮助,但我认为您遇到了IOException。看那只LogCat。另请参见

如果平台中没有后端服务,Geocoder查询方法将返回空列表

参考-

我找到了解决方案。。。 按住
getFromLocation()
上的
Ctrl
并转到
Geocoder.class
。 然后下载android API的源代码并重新启动项目。
然后您会看到它的工作

在try循环中使用条件地址.size()>0修复了它

我没有真正发现真正的问题在哪里,但似乎循环发生了两次,而且一次太早了,因为我可以让循环发生两次,一次是空的结果,一次是好的结果

也许来自我的两张地图和日期通过意图。
但是为我修复了

检查权限,并在真实设备上测试,而不是在模拟器上测试(Anx:)但是我使用的是android api:8i使用的是三星设备我已经添加了两个权限检查你的lat long是否有效我检查了它。。。它的有效性最终与targetsdk版本15nope一起尝试。。。那是什么。。。你能详细描述一下吗。。我的api是8和android 2.2,但我正在targetsdk 8(2.2)中创建我的应用程序。。。现在我要做的是不。。我没有得到任何例外。。。但是地址大小始终为0,因此如何安装后端服务