服务不可用 – 地理编码Android

地址parsing器有一个小小的问题,可以从地址获得纬度和经度:

这是我的代码:

for (Garage g : XMLGarage) { List<Address> address; address = coder.getFromLocationName( g.getAddress(), 5); if (address != null) { Address location = address.get(0); g.setLatitude(location.getLatitude()); g.setLongitude(location.getLongitude()); ... 

错误是:

 08-18 14:28:56.026: WARN/System.err(359): java.io.IOException: Service not Available 08-18 14:28:56.026: WARN/System.err(359): at android.location.Geocoder.getFromLocationName(Geocoder.java:178) 08-18 14:28:56.026: WARN/System.err(359): at com.amt.android.garage.Garage.postData(Garage.java:269) 08-18 14:28:56.026: WARN/System.err(359): at com.amt.android.garage.GarageForm$2.onClick(GarageForm.java:86) 08-18 14:28:56.026: WARN/System.err(359): at android.view.View.performClick(View.java:2485) 08-18 14:28:56.026: WARN/System.err(359): at android.view.View$PerformClick.run(View.java:9080) 08-18 14:28:56.036: WARN/System.err(359): at android.os.Handler.handleCallback(Handler.java:587) 08-18 14:28:56.036: WARN/System.err(359): at android.os.Handler.dispatchMessage(Handler.java:92) 08-18 14:28:56.036: WARN/System.err(359): at android.os.Looper.loop(Looper.java:130) 08-18 14:28:56.036: WARN/System.err(359): at android.app.ActivityThread.main(ActivityThread.java:3683) 08-18 14:28:56.036: WARN/System.err(359): at java.lang.reflect.Method.invokeNative(Native Method) 08-18 14:28:56.036: WARN/System.err(359): at java.lang.reflect.Method.invoke(Method.java:507) 08-18 14:28:56.036: WARN/System.err(359): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 08-18 14:28:56.046: WARN/System.err(359): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 08-18 14:28:56.046: WARN/System.err(359): at dalvik.system.NativeStart.main(Native Method) 

感谢和问候,安娜

最近有一个问题的Android设备和地理编码器不工作: http : //code.google.com/p/android/issues/detail? id = 38009

重启似乎解决了这个问题

如果GeoCoding提供程序失败并且无法对您的位置进行地址parsing,您偶尔会遇到此错误。

看到这些相关的post:

Geocoder.getFromLocation抛出exception

Geocoder.getFromLocation在Android模拟器上抛出IOException

如果情况并非如此,请确保您的Manifest拥有互联网许可:

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

先尝试更新位置。 像下面一样

 locationManager.requestLocationUpdates(bestProvider, 20000, 1, this); 

请参考这里