【问题标题】:Unable to parse response from server - Geocoder无法解析来自服务器的响应 - 地理编码器
【发布时间】:2013-07-30 19:41:54
【问题描述】:

好的..我已经看到了很多关于这个的问题:例如

Geocoder error java.io.IOException: Unable to parse response from server 等等..没有给我答复!

谁能帮帮我??我的应用程序可以正常运行几分钟,但其余时间会出现 IOException:

      Geocoder gcd = new Geocoder(getApplicationContext(), Locale.getDefault());
      List<Address> addresses = null;
      try {
     addresses = gcd.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
     if (addresses!= null && addresses.size() > 0 ) 

    txtLat.setText(addresses.get(0).toString());

         } catch (IOException e) {
    // TODO Auto-generated catch block

     e.printStackTrace();

         }

我的日志是:

      07-30 16:24:20.351: W/System.err(5170): java.io.IOException: Unable to parse response from server
       07-30 16:24:20.351: W/System.err(5170):  at android.location.Geocoder.getFromLocation(Geocoder.java:136)
        07-30 16:24:20.351: W/System.err(5170):     at com.example.test.MainActivity.onLocationChanged(MainActivity.java:46)
        07-30 16:24:20.351: W/System.err(5170):     at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:227)
        07-30 16:24:20.351: W/System.err(5170):     at android.location.LocationManager$ListenerTransport.access$000(LocationManager.java:160)

【问题讨论】:

  • addresses.get(0).toString() 打印出来看看值是多少。

标签: android


【解决方案1】:

我猜你正在尝试使用 LocationClient 类。

尝试在清单文件中添加此权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

【讨论】:

  • 非常感谢。这对我有用。但我不明白为什么!您能否解释一下添加此权限后到底发生了什么??
  • 在外部存储上写入缓存需要此权限,以节省流量带宽。我很高兴能帮助你:) 祝你好运!
  • 哦,我明白了...谢谢一百万!你救了我的一天!! :)
  • 我正在使用LocationManager 并且已经拥有 write 权限!还在买吗?
【解决方案2】:

如果是由于应用程序中的权限错误,那么我建议以下所有权限都必须添加到 AndroidManifest.xml 文件中,以确保不会因位置服务而导致应用程序崩溃。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

getFromLocation() 函数需要网络。所以请确保添加网络权限。

【讨论】:

  • 是的!所有这些显然都是添加的..:P
  • 这是网络问题。您连接的网络可能具有过滤掉 Geocoder 的代理。所以尝试使用其他网络。
  • 无需添加ACCESS_COARSE_LOCATION,因为ACCESS_FINE_LOCATION 包含相同的权限。
猜你喜欢
  • 2012-05-25
  • 2011-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-26
  • 2013-08-05
相关资源
最近更新 更多