【发布时间】:2015-07-28 10:12:22
【问题描述】:
在我的清单中,我只要求这两个权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
但是当我在手机上安装该应用程序时,我也会收到此通知:
Low-risk permissions
Phone ID
Get your phone ID, including IMEI, IMSI, etc.
根据我从this SO answer 收集到的信息,我应该需要使用TelephonyManager 并调用
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
需要此权限。但我没有使用 TelephonyManager 或调用该权限。我不想要求用户授予此权限。我查看了我的清单和 gradle 文件。会不会是我使用的某些代码触发了这个权限,而我没有特别要求它被调用?我知道我不会给你太多的帮助,因为我不知道还能去哪里看。
更新 1
我在 Android Studio 中创建了一个全新的项目,并从中生成了一个签名的 APK。我安装了它,但没有要求任何权限。 (这至少向我证实,并不是 Android Studio 中的某个“新功能”自动请求此权限。)
更新 2
在@antonio 的回答中,我找到了app/build/outputs/logs/manifest-merger-release-report.txt 但是,我没有发现任何隐含的权限被请求。
更新 3
以下是我的应用使用的依赖项(来自 gradle.build):
dependencies {
compile 'com.android.support:support-v4:21.0.3'
compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:+'
}
我测试了一个具有这两个依赖项的新应用程序,并且没有请求任何权限。
我的下一步是从头开始重新添加每个活动,看看我是否可以找到开始调用此权限的位置。待续……
更新 4
我尝试将所有内容复制到一个新项目并重构项目名称并删除部分,但结果证明它非常复杂。我无法找出原因。
更新 5
我将 targetSdkVersion 设置为 1。这会在安装应用程序之前宣布权限时给出一条新消息:
读取手机状态和身份
允许应用访问设备的电话功能。这 权限允许应用程序确定电话号码和设备 ID,呼叫是否处于活动状态,以及通过 a 连接的远程号码 打电话。
我一开始写的旧电话ID许可通知仍然存在(安装应用程序后显示)。这让我想知道它是否与操作系统有关(我在小米手机上使用 MIUI Android)。该应用程序仍有一些问题会导致它显示在此应用程序中,但不会显示在其他应用程序中。接下来我需要在其他设备上进行测试。
【问题讨论】:
-
你的
targetSdkVersion是什么? -
@Mattia,build.gradle 中的当前设置是 targetSdkVersion 21、minSdkVersion 8、compileSdkVersion 19
标签: android permissions