为什么添加了READ_PHONE_STATE权限?

时间:2016-09-23 19:52:07

标签: android android-permissions

在我刚刚发布到Play商店的最新测试版中,我注意到自上一版本以来已添加READ_PHONE_STATE

我自己没有添加这个。所有我都记得的事情,因为上一版本使用v9.6.0的各种播放服务库(是v9.4.0):

compile 'com.google.android.gms:play-services-location:9.6.0'
compile 'com.google.android.gms:play-services-places:9.6.0'
compile 'com.google.android.gms:play-services-auth:9.6.0'

这会做到吗?我无法记录下来。我可以摆脱许可吗?

我确保我使用的所有图书馆都与主应用相匹配,按照this answer ...对我的情况没有任何影响。

修改

根据this article确定,我已经深入研究了我的日志输出以找到:

ADDED from [Meteogram:jobdispatcher:unspecified] C:\Users\Me\AndroidStudioProjects\Meteogram\app\build\intermediates\exploded-aar\Meteogram\jobdispatcher\unspecified\AndroidManifest.xml:37:25-84 android:uses-permission#android.permission.READ_PHONE_STATE

但是自上一版本以来,jobdispatcher库(我作为gradle模块导入到我的项目中)没有任何变化。

EDIT2

以下是该日志的更多信息,我的感觉是,可能是因为游戏服务库版本被怀疑了?

ADDED from [Meteogram:jobdispatcher:unspecified] C:\Users\Me\AndroidStudioProjects\Meteogram\app\build\intermediates\exploded-aar\Meteogram\jobdispatcher\unspecified\AndroidManifest.xml:37:17-87
    android:name
        ADDED from [Meteogram:jobdispatcher:unspecified] C:\Users\Me\AndroidStudioProjects\Meteogram\app\build\intermediates\exploded-aar\Meteogram\jobdispatcher\unspecified\AndroidManifest.xml:37:25-84
android:uses-permission#android.permission.READ_PHONE_STATE
IMPLIED from C:\Users\Me\AndroidStudioProjects\Meteogram\app\src\pro\AndroidManifest.xml:2:1-12:12 reason: com.google.android.gmscore.integ.client.location has a targetSdkVersion < 4
activity#com.google.android.gms.common.api.GoogleApiActivity

targetSdkVersion < 4与上面链接的其他答案匹配,但在这种情况下我能做些什么,因为播放服务库不是我的?

EDIT3

我找到了一个答案......而不是删除这个问题,我会用解决方案将其留下来,以防它对其他人有用(以防万一其他人有更好的解决方案!)< / p>

EDIT4

看起来它已在9.6.1修复。

6 个答案:

答案 0 :(得分:27)

我最终找到了this,它报告了同样的问题。 Answer #3中提到了一种解决方法,即“手动”删除权限(我的假设是只有非常早期的Android版本才需要权限,这对我来说没问题,因为我的minSdk是16 ):

<manifest ...
    xmlns:tools="http://schemas.android.com/tools"
    ... >

<uses-permission
    android:name="android.permission.READ_PHONE_STATE"
    tools:node="remove" />

答案 1 :(得分:22)

Play Services v 12.0.0中也存在此问题。有一个开放的issue tracker on it here。似乎两个权限都存在问题:

  • android.permission.READ_PHONE_STATE
  • android.permission.WRITE_EXTERNAL_STORAGE

可能会修复12.0.1,正如我们在10.0.1修复中看到的那样(来自原始问题)。

在此之前,我建议手动从清单中删除权限,如drmrbrewer在答案中所述。

<强>更新
12.0.1已于2018年3月28日发布,此问题已得到解决。 See the release notes here

  

在-license工件中添加缺少的minSdkVersion,以防止自动包含READ_PHONE_STATE和READ_EXTERNAL_STORAGE权限。

答案 2 :(得分:20)

更新#2 Version 10.0.1再次修复此问题。

更新:这也发生在版本10.0.0的Google Play服务中,如this post中所述。

上一个答案:

Per this post in the Android Developers G+ Community,其中一位主持人(我)发表了此评论:

  

昨天我已经在内部报告了这个问题,开发人员指出了这个问题,修复工具已在内部完成,并且即将推出更新的SDK

现在可以使用更新的SDK - 使用9.6.1 Google Play服务相关性。

答案 3 :(得分:6)

对于那些正在寻找与Firebase 12.0.0版相关的问题的用户,只需升级到12.0.1版即可。 这是12.0.0的包装错误,并在12.0.1中得到解决。

查看发行说明: https://developers.google.com/android/guides/releases

答案 4 :(得分:4)

如果您没有使用过Android(就像我一样!)并且您不确定drmrbrewer的代码片段应该去哪里,答案就在您的主app/manifests/AndroidManifest.xml文件中,如下所示:< / p>

  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      package="com.your.package">

      ...

      <!-- attempt to combat this issue: https://stackoverflow.com/questions/39668549/why-has-the-read-phone-state-permission-been-added -->
      <uses-permission
          android:name="android.permission.READ_PHONE_STATE"
          tools:node="remove" />
      <uses-permission
          android:name="android.permission.WRITE_EXTERNAL_STORAGE"
          tools:node="remove" />
  </manifest>

答案 5 :(得分:1)

面临同样的问题。刚检查过谷歌发布的新版本。更新到12.0.1或最新版本。这个问题就不复存在了。