我在我的应用中指定了以下权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<uses-permission android:name="android.permission.VIBRATE"android:maxSdkVersion="18"/>
我的targetSDKVerion设置为23
在使用Android 6的Nexus 9运行预览图像上,我在应用设置Location
中看到了开/关切换的权限,但我真的不知道为什么它存在,因为这里唯一的运行时权限是{{1 }}。所有其他权限都属于列出的正常权限here
同样在pre-M设备上,我可以看到近似位置许可(基于网络)
答案 0 :(得分:3)
@CommonsWare的评论是正确的。我能够在清单合并中找到ACCESS_COARSE_LOCATION。负责的图书馆是 Google Play服务 - 地图
uses-permission#android.permission.ACCESS_COARSE_LOCATION
ADDED from [com.google.android.gms:play-services-maps:7.5.0] .../app/build/intermediates/exploded-aar/com.google.android.gms/play-services-maps/7.5.0/AndroidManifest.xml:23:5-80
在该清单中找到有4个权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
这是非常意外的,因为Google地图的位置权限是可选的,至少根据他们的规范。
幸运的是,我找到了一种删除该权限的方法。清单合并允许删除像这样的节点
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" tools:node="remove"/>
只需在您自己的AndroidManifest.xml
中指定要在合并时删除的节点。