警告:您的Apk正在使用需要隐私政策的权限:(android.permission.READ_PHONE_STATE)

132

清单文件中未添加android.permission.READ_PHONE_STATE权限。

为什么上传新版本时会出现以下错误。

您的应用程序具有版本代码1,请求以下权限:android.permission.READ_PHONE_STATE。在APK中使用这些权限的应用程序需要设置隐私政策。

我已经附上了我的Google Play商店帐户的截图。 输入图片说明文字

我的清单文件。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.my.package.name">

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

    <application
        android:name=".utils.PreferenceManager"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".SplashScreen"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name=".MainActivity"
            android:screenOrientation="portrait" />

        <activity
            android:name=".CategoryListActivity"
            android:screenOrientation="portrait" />
        <activity
            android:name=".ImagesActivity"
            android:screenOrientation="portrait" />

    </application>

</manifest>

1
你在移除权限之前,清单文件中是否存在该权限?并且你还没有上传新的 APK 吗? - aconnelly
在你的清单文件中添加读取手机状态权限。 - Noorul
2
看看这个:https://dev59.com/cOk5XIcBkEYKwwoY_O-N#42751979 - 0xAliHn
我想提醒您,为了解决这个问题,您必须将所有使用“play-services-”前缀的依赖项从12.0.0更新到12.0.1。因此,这包括任何东西,例如将“play-services-analytics:12.0.0”升级到“play-services-analytics:12.0.1”。这不仅限于play-services-ads,而是所有版本为12.0.0的play-services。 - ChallengeAccepted
我投票关闭此问题,因为https://meta.stackoverflow.com/q/272165/6296561。 - Zoe stands with Ukraine
显示剩余3条评论
22个回答

2
  1. 可能你正在使用版本为9.6.0的PlayServices。那么你应该更新它,这是库的一个bug。更多信息在这里

或者

  1. 将以下内容添加到您的清单文件中:

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


1
这个话题是关于READ_PHONE_STATE权限问题的。为什么要android.permission.CAMERA? - Alexander Marochko

2
你是否在你的应用中使用AdSense或其他广告,或者Google Analytics?我认为如果你这样做了,即使你在清单文件中没有android.permission.READ_PHONE_STATE权限,这也会被广告库添加。
有一些免费模板可以帮助你创建隐私政策。
这是我从Google收到的邮件:
尊敬的Google Play开发者,我们的记录显示,你的应用xxx,包名为xxx,目前违反了我们的用户数据政策,涉及个人和敏感信息。政策问题:当应用程序请求或处理敏感用户或设备信息时,Google Play要求开发人员提供有效的隐私政策。你的应用程序请求敏感权限(例如相机、麦克风、帐户、联系人或电话)或用户数据,但没有包含有效的隐私政策。需要采取的措施:在你的应用商店列表页面和应用内包含一个有效的隐私政策链接。你可以在我们的帮助中心找到更多信息。或者,你可以通过删除对敏感权限或用户数据的任何请求来选择退出此要求。如果你的目录中有其他应用程序,请确保它们符合我们的突出披露要求。请在2017年3月15日之前解决此问题,否则将采取行政措施限制你的应用程序的可见性,直至从Play商店中删除。感谢你帮助我们为Google Play用户提供清晰透明的体验。谢谢,Google Play团队

1
我认为一个免费隐私政策的好起点可以在这里找到:http://www.docracy.com/6516/mobile-privacy-policy-ad-sponsored-apps - Sebastiano Tognacci
我和你收到了相同的电子邮件,除了广告和GAnalytics之外还有其他可能性吗? - wanz

2
您应该删除android.permission.READ_PHONE_STATE权限。请将以下内容添加到您的清单文件中:
<uses-permission
    android:name="android.permission.READ_PHONE_STATE"
    tools:node="remove" />

2
如果您正在设备上测试应用程序,并且该设备的 Android 版本大于 6.0,则还必须明确要求用户授予权限。
如您所见 here READ_PHONE_STATE 具有危险级别。
如果权限具有危险级别,则用户必须手动接受或拒绝此权限。您别无选择,必须这样做。
要从活动中执行此操作,请执行以下代码:
如果用户使用的是 Android M 并且尚未授予权限,则会要求用户授予权限。
public static final int READ_PHONE_STATE_PERMISSION = 100;

  if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.READ_PHONE_STATE)
                != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, READ_PHONE_STATE_PERMISSION);
        }

然后在您的活动中覆盖 onRequestPermissionsResult 方法。
@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode){
            case READ_PHONE_STATE_PERMISSION: {
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    //Permission granted do what you want from this point
                }else {
                    //Permission denied, manage this usecase
                }
            }
        }
    }

你应该阅读 这篇文章 以了解更多信息。

1

1. 您需要在您的网站上创建隐私政策页面,并更新您所要求的权限的隐私政策。

2. 更新新的SDK,删除不必要的权限并重新提交应用程序。


1

1
我是这样解决这个问题的: Google Play控制台 找到应用程序内容->隐私政策 然后 设置隐私政策URL为 你可以提交你的页面。

0

2018更新:

对于AdMob用户,这会导致AdMob 12.0.0版本(目前最新版本)错误地请求READ_PHONE_STATE权限,因此即使您的应用程序在清单中不需要READ_PHONE_STATE权限,您也无法在Google Play控制台中更新您的应用程序(它会告诉您为您的应用程序创建隐私政策页面,因为您的应用程序需要此权限)。

请参阅:https://developers.google.com/android/guides/releases#march_20_2018_-_version_1200

另外,他们写道他们将很快发布一个更新版本12.0.1来修复此问题。


0

如果您正在使用device_id包获取唯一设备ID,则会在未经您同意的情况下添加android.permission.READ_PHONE_STATE,最终会导致Play Store警告。

相反,您可以使用device_info包来实现相同的目的,而无需额外的权限。请查看此SO线程


0
我遇到了相同的问题,在上传APK到Google Play时出现了错误。 我的应用中使用了广告,但在清单文件中甚至没有提到READ_PHONE_STATE权限。但我还是遇到了这个错误。然后我在build.gradle文件中更改了广告的依赖。然后问题得到了解决。他们在12.0.1中解决了这个问题。
compile 'com.google.android.gms:play-services-ads:12.0.1'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接