我正在使用地理编码器,它在我的设备上工作得很好,但在模拟器上不起作用,在 2.2 和 4.2.2 上尝试过它不起作用;
这是我的代码:
Geocoder myLocation = new Geocoder(AzanTime.this, Locale.getDefault());
List<Address> myList=null;
try {
myList = myLocation.getFromLocation(latitude,longitude, 1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Address address = (Address) myList.get(0);
String addressStr = "";
if(address.getAddressLine(0)!=null){
addressStr += address.getAddressLine(0);
}
和日志猫:
01-11 09:31:07.573: E/AndroidRuntime(788): FATAL EXCEPTION: main
01-11 09:31:07.573: E/AndroidRuntime(788): java.lang.RuntimeException: Unable to start activity ComponentInfo{amina.myhomebusiness.IslamicApps.FortressOfTheMuslimExplanation/amina.myhomebusiness.IslamicApps.FortressOfTheMuslimExplanation.AzanTime}: java.lang.IllegalArgumentException: provider doesn't exisit: null
01-11 09:31:07.573: E/AndroidRuntime(788): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
01-11 09:31:07.573: E/AndroidRuntime(788): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
01-11 09:31:07.573: E/AndroidRuntime(788): at android.app.ActivityThread.access$600(ActivityThread.java:141)
01-11 09:31:07.573: E/AndroidRuntime(788): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
01-11 09:31:07.573: E/AndroidRuntime(788): at android.os.Handler.dispatchMessage(Handler.java:99)
01-11 09:31:07.573: E/AndroidRuntime(788): at android.os.Looper.loop(Looper.java:137)
01-11 09:31:07.573: E/AndroidRuntime(788): at android.app.ActivityThread.main(ActivityThread.java:5041)
01-11 09:31:07.573: E/AndroidRuntime(788): at java.lang.reflect.Method.invokeNative(Native Method)
01-11 09:31:07.573: E/AndroidRuntime(788): at java.lang.reflect.Method.invoke(Method.java:511)
01-11 09:31:07.573: E/AndroidRuntime(788): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-11 09:31:07.573: E/AndroidRuntime(788): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-11 09:31:07.573: E/AndroidRuntime(788): at dalvik.system.NativeStart.main(Native Method)
01-11 09:31:07.573: E/AndroidRuntime(788): Caused by: java.lang.IllegalArgumentException: provider doesn't exisit: null
01-11 09:31:07.573: E/AndroidRuntime(788): at android.os.Parcel.readException(Parcel.java:1429)
01-11 09:31:07.573: E/AndroidRuntime(788): at android.os.Parcel.readException(Parcel.java:1379)
01-11 09:31:07.573: E/AndroidRuntime(788): at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:538)
01-11 09:31:07.573: E/AndroidRuntime(788): at android.location.LocationManager.requestLocationUpdates(LocationManager.java:836)
01-11 09:31:07.573: E/AndroidRuntime(788): at android.location.LocationManager.requestLocationUpdates(LocationManager.java:430)
01-11 09:31:07.573: E/AndroidRuntime(788): at android.app.Activity.performCreate(Activity.java:5104)
01-11 09:31:07.573: E/AndroidRuntime(788): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
01-11 09:31:07.573: E/AndroidRuntime(788): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
01-11 09:31:07.573: E/AndroidRuntime(788): ... 11 more
模拟器上没有安装地理编码器。
根据Geocoder参考
Geocoder 类需要一个未包含在核心 Android 框架中的后端服务。如果平台中没有后端服务,Geocoder 查询方法将返回空列表。使用 isPresent() 方法确定 Geocoder 实现是否存在。
你应该检查一下
Geocoder.isPresent()
在访问 API 之前。
使用您自己的实现更可靠。
检查这个答案以了解我的实施情况。android.location.geocoder 的问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)