繁体   English   中英

Android GoogleMaps在某些设备上不工作,显示java.lang.SecurityException:需要INSTALL_LOCATION_PROVIDER权限

[英]Android GoogleMaps not working on some devices shows java.lang.SecurityException: need INSTALL_LOCATION_PROVIDER permission

我试图使用GoogleMap制作Map应用程序以获取位置坐标和反向地理编码。 我试图在Lenovo A7000plus中运行它,它运行正常,没有任何问题。

不知何故,我使用相同的Android棉花糖在一些小米上测试了我的应用程序,而地图根本无法正常工作。 只有这样的错误报告:

07-28 14:04:01.144 19465-19465/? E/NetworkLocationProvider: Exception
                                                            java.lang.SecurityException: need INSTALL_LOCATION_PROVIDER permission, or UID of a currently bound location provider
                                                                at android.os.Parcel.readException(Parcel.java:1620)
                                                                at android.os.Parcel.readException(Parcel.java:1573)
                                                                at android.location.ILocationManager$Stub$Proxy.reportLocation(ILocationManager.java:1281)
                                                                at com.android.location.provider.LocationProviderBase.reportLocation(LocationProviderBase.java:136)
                                                                at com.amap.android.location.v.handleMessage(Unknown Source)
                                                                at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                at android.os.Looper.loop(Looper.java:148)
                                                                at android.app.ActivityThread.main(ActivityThread.java:5441)
                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
07-28 14:04:01.164 19465-19465/? E/NetworkLocationProvider: Exception
                                                            java.lang.SecurityException: need INSTALL_LOCATION_PROVIDER permission, or UID of a currently bound location provider
                                                                at android.os.Parcel.readException(Parcel.java:1620)
                                                                at android.os.Parcel.readException(Parcel.java:1573)
                                                                at android.location.ILocationManager$Stub$Proxy.reportLocation(ILocationManager.java:1281)
                                                                at com.android.location.provider.LocationProviderBase.reportLocation(LocationProviderBase.java:136)
                                                                at com.amap.android.location.v.handleMessage(Unknown Source)
                                                                at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                at android.os.Looper.loop(Looper.java:148)
                                                                at android.app.ActivityThread.main(ActivityThread.java:5441)
                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)

还有,这是我实现的清单

<uses-sdk android:minSdkVersion="14" />

<permission
    android:name="com.myapps.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-permission android:name="com.myapps.permission.MAPS_RECEIVE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

您能帮我解决这个问题吗?

**编辑:**由于我使用的所有手机(包括Lenovo A7000)都是棉花糖,因此我已在代码中添加了运行时权限。 但是以某种方式,它将无法在具有相同版本Android的小米手机中运行

必须访问运行时权限才能访问位置数据。 自Android 6.0发行以来,用户在运行时向应用授予权限。 链接说明有关运行时权限的信息。

从API 23开始,您需要在运行时请求危险权限,请检查此链接,以了解如何在运行时请求危险权限https://developer.android.com/training/permissions/requesting.html或在build.gradle文件中更改目标SDK级别至22

根据文档, INSTALL_LOCATION_PROVIDER

不适用于第三方应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM