android - 如何使用纬度和经度获取地址信息?
问题描述
我制作了这个教程来获取用户的地址和位置,但是当我更改 AVD 的位置时出现错误。当我没有在函数中调用getCityName
函数时getLastLocation
,我可以获得用户的位置,但是当我调用它时,它给出了那个错误。我该如何解决?
它给出了一个错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.slidework3, PID: 15792
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.io.IOException: grpc failed
at android.location.Geocoder.getFromLocation(Geocoder.java:136)
at com.example.slidework3.AdresPage.getCityName(AdresPage.kt:152)
at com.example.slidework3.AdresPage.access$getCityName(AdresPage.kt:20)
at com.example.slidework3.AdresPage$getLastLocation$1.onComplete(AdresPage.kt:66)
at com.google.android.gms.tasks.zzj.run(Unknown Source:4)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
编辑: 我尝试了真实设备,位置服务运行良好,我可以获得城市名称、街道名称等。但在模拟器中又出现错误。之后我试图更改 AVD 的位置,它会崩溃。我相信解决方案很简单,但我不知道如何搜索这种情况。
解决方案
尝试在新线程中运行该操作,然后如果我需要更新一些 UI 视图,我将在 runOnUiThread 上进行。
https://developer.android.com/training/location/display-address#java