为什么我的应用程序具有READ_PHONE_STATE权限,尽管它没有在清单中声明?

时间:2014-12-15 18:26:07

标签: android permissions android-permissions

当我将apk上传到Google Play时,我注意到了READ_PHONE_STATE权限。 我没有添加它,它没有写在我的清单或我的项目的任何其他文件中的任何地方。 (我查看了所有图书馆的许可)

我的应用在我以前使用相同库的版本中没有此权限。自上次构建以来,我将android studio更新为版本1,更新了我的android sdk并对我的应用程序进行了一些更改(代码中)。我没有在我的应用中请求设备ID。

我的应用有minSDK 14,没有广告。 以下是我的明确权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<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.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

这里是apk file

4 个答案:

答案 0 :(得分:13)

我能够解决问题。它类似于reneph的解决方案。

我发现一个库在build.gradle和manifest文件中都没有指定minSDK。添加后

defaultConfig {
    minSdkVersion 14
    targetSdkVersion 21
}
许可证已经消失了。我不知道为什么它没有我之前构建的许可(也没有指定minSDK)。必须是Android Studio 1.0或Android SDK更新。


READ_PHONE_STATE权限的Android开发人员文档:

  

注意:如果您的minSdkVersiontargetSdkVersion值都设置为3或更低,系统会隐式授予您的应用此权限。如果您不需要此权限,请确保targetSdkVersion为4或更高。

答案 1 :(得分:1)

我发现了这个问题。

我有另一个包含minSdkVersion="4"的库(它不是我的库,但我的应用需要minSdkVersion="14")。 我刚刚将附加库的minSdkVersion更改为14,许可消失了!

我在我的应用中声明了以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<permission-group android:name="android.permission-group.STORAGE" />

答案 2 :(得分:0)

---为我工作!- 我在清单上尝试了很多事情,这里和其他论坛都提到过。

最后,我注意到该错误消息,apk上载错误消息希望将“隐私策略URL”添加到“商品详情/隐私政策”部分。 (选中了“当前不提交隐私政策URL”)。

因此,我从我的网站添加我的隐私政策URL,然后提交。后来,我成功上传了我的apk。

答案 3 :(得分:0)

一个原因可能是(传递)依赖项,即库,它声明低于4的Android SDK最低要求级别。在这种情况下,“清单合并工具”将隐式添加这些权限。

Lower-priority manifest declares                   Permissions added to the merged manifest

targetSdkVersion <= 3                              WRITE_EXTERNAL_STORAGE, READ_PHONE_STATE 
targetSdkVersion <= 15 and using READ_CONTACTS     READ_CALL_LOG 
targetSdkVersion <= 15 and using WRITE_CONTACTS    WRITE_CALL_LOG

来源:https://developer.android.com/studio/build/manifest-merge#implicit_system_permissions

如果是这种情况,请查看manifest-merger-*-report.txt中的build/outputs/logs日志。