为什么应用程序要求权限而不在清单中写入

时间:2015-07-31 09:04:35

标签: android android-manifest android-permissions

我有一个应用,其中清单只有权限中的以下行

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>

但是在安装应用程序时,Play商店会显示以下权限

身份
使用以下一个或多个:设备上的帐户,个人资料数据
位置
使用设备的位置
照片/媒体/文件
使用以下一个或多个:设备上的文件,如图像,视频或音频,设备的外部存储空间

由于我没有要求用户位置我也没有使用它,为什么Play商店会显示这个?

编辑:如何修复

接受答案和this google page上的链接帮助我解决了这个问题。基本上播放服务使用位置,所以我只是用服务加和服务广告取代它们解决了这个问题。希望这将有助于其他一些开发人员。

具体
替换compile 'com.google.android.gms:play-services:7.5.0'

compile 'com.google.android.gms:play-services-ads:7.5.0'
compile 'com.google.android.gms:play-services-plus:7.5.0'

1 个答案:

答案 0 :(得分:10)

  

由于我没有要求用户位置我也没有使用它,为什么Play商店会显示这个?

它显示了您的应用所需的内容,即使您没有明确地将其明确放入您的清单文件中。实际上,最终的Manifest是您的AndroidManifest.xml和所有清单(您通常通过gradle&#39; s compile ...提供)提供的合并结果。

如果您想知道哪个依赖项会影响您的最终权限要求,您可以检查<PROJECT>/app/build/outputs/logs文件夹中的清单合并报告文件并查找uses-permission#<PERMISSION_YOU_LOOK_FOR>,即:

uses-permission#android.permission.WRITE_EXTERNAL_STORAGE
ADDED from AndroidManifest.xml:11:5
MERGED from com.google.android.gms:play-services-maps:7.5.0:22:5

进一步阅读: