我想在启用my-location layer的Google Maps上显示用户的位置,但是此功能需要“ACCESS_FINE_LOCATION”权限才能从GPS获取位置。
是否可以防止GoogleMap尝试从GPS获取位置?

如果我在 list 文件中删除了“ACCESS_FINE_LOCATION”权限,则当我尝试显示 map 时,该应用就会崩溃,并显示以下错误:

E/AndroidRuntime(28578): FATAL EXCEPTION: main
E/AndroidRuntime(28578): java.lang.SecurityException: Client must have ACCESS_FINE_LOCATION permission to request PRIORITY_HIGH_ACCURACY locations.
E/AndroidRuntime(28578):    at android.os.Parcel.readException(Parcel.java:1425)
E/AndroidRuntime(28578):    at android.os.Parcel.readException(Parcel.java:1379)
E/AndroidRuntime(28578):    at bbj.a(SourceFile:424)
E/AndroidRuntime(28578):    at bbn.a(SourceFile:232)
E/AndroidRuntime(28578):    at maps.al.b.j(Unknown Source)
E/AndroidRuntime(28578):    at uh.h(SourceFile:642)
E/AndroidRuntime(28578):    at un.a(SourceFile:399)
E/AndroidRuntime(28578):    at uj.a(SourceFile:158)
E/AndroidRuntime(28578):    at ui.handleMessage(SourceFile:111)
E/AndroidRuntime(28578):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(28578):    at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(28578):    at android.app.ActivityThread.main(ActivityThread.java:5041)
E/AndroidRuntime(28578):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(28578):    at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(28578):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
E/AndroidRuntime(28578):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
E/AndroidRuntime(28578):    at dalvik.system.NativeStart.main(Native Method)

最佳答案

您可以使用LocationSource模式提供您自己的位置,该位置可以来自任何位置。 LocationSource是一个接口(interface),您将在可以提供位置数据的某些对象上实现该接口(interface)。您可以使用setLocationSource()GoogleMap上注册它。您在activate()上实现了deactivate()LocationSource方法,这些方法将被调用,以告知您何时应该开始和停止推送位置。在获得位置修复信息后,您将在提供的onLocationChanged()上调用OnLocationChangedListener

This sample project演示LocationSource的用法。

关于android - Google Maps API Android v2-启用my-location图层需要 "ACCESS_FINE_LOCATION"权限,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17089141/

10-14 13:31