在我的清单中,我只要求这两个权限:
<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.
从我收集到的信息来看这个答案,我应该需要使用TelephonyManager
并打电话
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
需要此许可。但我没有使用 TelephonyManager 或调用该权限。我不想要求用户授予此权限。我查看了我的清单和 gradle 文件。难道是我使用的某些代码在没有我专门请求的情况下触发了此权限的调用?我知道我不会给你太多继续下去的机会,因为我不知道还能去哪里寻找。
Update 1
我在 Android Studio 中创建了一个全新的项目,并从中生成了一个签名的 APK。我安装了它,但没有询问权限。 (这至少对我来说证实了 Android Studio 中没有自动请求此权限的“新功能”。)
Update 2
根据@antonio的回答,我发现app/build/outputs/logs/manifest-merger-release-report.txt
但是,我没有发现任何隐含的权限请求。
Update 3
以下是我的应用程序正在使用的依赖项(来自 gradle.build):
dependencies {
compile 'com.android.support:support-v4:21.0.3'
compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:+'
}
我测试了一个具有这两个依赖项的新应用程序,并且没有请求任何权限。
我的下一步是从头开始再次添加每个活动,看看是否可以找到开始调用此权限的位置。待续...
Update 4
我尝试将所有内容复制到新项目并重构项目名称并删除部分内容,但事实证明它非常复杂。我无法找出原因。
Update 5
我将 targetSdkVersion 设置为 1。这会在安装应用程序之前宣布权限时给出一条新消息:
读取手机状态和身份
允许应用程序访问设备的电话功能。这
权限允许应用程序确定电话号码和设备
ID、呼叫是否处于活动状态以及通过某个设备连接的远程号码
称呼。
我在开头写的旧电话 ID 权限通知仍然存在(安装应用程序后显示)。这让我想知道这是否与操作系统有关(我在小米手机上使用MIUI Android)。该应用程序仍然存在一些问题,导致该应用程序显示在此应用程序中,但不显示在其他应用程序中。接下来我需要在其他设备上进行测试。