【问题标题】:Warnings Your Apk Is Using Permissions That Require A Privacy Policy: (android.permission.READ_PHONE_STATE)警告您的 Apk 正在使用需要隐私政策的权限:(android.permission.READ_PHONE_STATE)
【发布时间】:2017-05-05 04:34:13
【问题描述】:

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

为什么我上传新的apk版本时出现错误如下。

您的应用有一个版本代码为 1 的 apk,它请求以下权限: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>

【问题讨论】:

  • 该权限是否存在于清单中,在此之前您已删除并且尚未上传新的 apk?
  • 不,我的清单文件已经附上你可以看到。
  • 在清单中添加读取手机状态权限
  • 我已经尝试过添加并再次删除。没有任何效果

标签: android android-studio permissions android-manifest google-developers-console


【解决方案1】:

您的应用的 manifest.xml 具有从您的设备访问信息的这些权限,但您在 Play 商店提交时没有隐私政策链接。所以你会收到这个警告。

如果您的应用处理个人或敏感用户数据,则需要应用的隐私政策

Adding a privacy policy to your app's store listing helps provide transparency about how you treat sensitive user and device data.

更新 1

Google Play 管理中心的隐私政策设置已更改位置。

在 Google Play 管理中心中,
选择商店展示应用内容
根据隐私政策

更新 2

选择最左下角的政策应用内容
根据隐私政策

【讨论】:

  • 有没有办法从模板创建私有策略?
  • 我希望您需要显示隐私政策但您没有网站,隐私政策文档可能是文本内容,所以最简单的方法是我们可以制作包含您所有隐私的word文档政策和权限相关信息,然后您可以将其上传到任何免费存储桶(如投递箱等)上。然后您可以获取要在 Play 商店提交中使用的 url。
  • 因为 AdMob。他们当前的版本 12.0.0 请求 READ_PHONE_STATE(错误),即使您的应用程序在清单中没有它。就是这样了。他们说他们很快就会发布到 12.0.1 的更新。
  • Google Play 管理中心的隐私政策设置已更改路径。选择商店状态 > 应用内容。在“隐私政策”下。
  • 是的,它又变了。在左侧菜单中一直向下滚动到Policy 部分,然后单击App Content。然后首先列出Privacy Policy,然后点击Start
【解决方案2】:

尝试将此行添加到您的清单文件中:

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

并将属性xmlns:tools="http://schemas.android.com/tools" 添加到您的&lt;manifest&gt; 标记以定义命名空间工具

documentationtools:node="remove"

从合并的清单中删除此元素。尽管您似乎应该只删除此元素,但当您在合并清单中发现不需要的元素时使用此元素是必要的,并且它是由您无法控制的较低优先级清单文件提供的(例如作为导入库)。

【讨论】:

  • 这也绕过了令人讨厌的权限警告,否则当有人要下载您的应用程序时会出现这些警告......必须有
  • 如果使用这个你将无法使用 READ_PHONE_STATE
  • [致命错误]:50:95:与元素类型“uses-permission”关联的属性“tools:node”的前缀“tools”未绑定。
  • 在清单标头中使用这个? schemas.android.com/apk/res/android" xmlns:tools="schemas.android.com/tools" ...... />
【解决方案3】:

它是第三方库。你可以在build/outputs/logs/manifest-merger-release-report.txt找到罪魁祸首

【讨论】:

    【解决方案4】:

    您在项目中拥有的依赖项将添加它们自己的权限。 请执行以下操作以查找“READ_PHONE_STATE”的来源。

    1. 重建您的安卓应用程序
    2. 在 android studio 中按“Ctrl+Shift+F”(基本上在您喜欢的编辑器中进行搜索)。
    3. 搜索“READ_PHONE_STATE”,您会在重新生成的清单文件(不是您最初创建的文件)中找到该条目。通过它的路径,您可以知道从哪个依赖项添加权限。

    【讨论】:

      【解决方案5】:

      这可能是因为任何第三方库都可能包含该权限,因此根据我在该领域的经验,您必须添加有关该特定信息的隐私政策,这意味着如果您要求在您的应用中获得帐户权限而不是您拥有的权限声明我们通过您的隐私政策文件使用该数据,即电子邮件地址或其他任何出于登录 google play 游戏的原因。

      这个也可以

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

      希望这将指导您如何处理此警告为您的应用创建隐私政策并将其附加到商品详情中

      【讨论】:

      • 谢谢 :) 但这会起作用 ?
      【解决方案6】:

      如果你使用React Native

      这个问题到这里已经彻底解决了

      https://facebook.github.io/react-native/docs/removing-default-permissions

      【讨论】:

        【解决方案7】:

        您需要在清单文件中指定mintarget sdk 版本。
        如果不是,android.permission.READ_PHONE_STATE 将在导出您的 apk 文件时自动添加。

        <uses-sdk
                android:minSdkVersion="9"
                android:targetSdkVersion="19" />
        

        【讨论】:

        • 太棒了!那解决了它。当我没有指定目标时,它被添加了。
        【解决方案8】:

        目前有些人因为使用 12.0.0 版本的 AdMob 库而面临同样的问题。

        将其更新为12.0.1。这应该解决它。你可以阅读更多here

        【讨论】:

        • 鼓励链接到外部资源,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。
        • 这是对我的修复。在 A-Studio 中,您可以查看“合并清单”,它指向 Google Play 库。
        【解决方案9】:

        您可能需要添加或更新您的隐私政策。 您可以使用此模板轻松创建隐私政策

        https://app-privacy-policy-generator.firebaseapp.com/

        【讨论】:

          【解决方案10】:

          如果您在设备 > android 6.0 上测试您的应用,您还必须明确要求用户授予权限。

          如你所见hereREAD_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
                          }
                      }
                  }
              }
          

          您应该阅读this article 以了解更多信息

          【讨论】:

            【解决方案11】:
            1. 您可能正在使用 9.6.0 版的 PlayServices。然后你应该更新它,这是图书馆的错误。更多信息here

            1. 添加

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

            到您的清单文件。

            【讨论】:

            • 本主题是关于 READ_PHONE_STATE 权限问题。为什么选择 android.permission.CAMERA?
            【解决方案12】:

            您是否在应用中使用 AdSense 或其他广告,或者可能是 Google Analytics(分析)?我认为如果您这样做,即使您的清单中没有 android.permission.READ_PHONE_STATE,这也是由广告库添加的。

            有一些免费模板可以帮助您制定隐私政策。

            这是我从 Google 收到的关于它的电子邮件:

            您好 Google Play 开发者,我们的记录显示您的应用 xxx 与 包名称 xxx,目前违反了我们关于用户数据的政策 个人和敏感信息。政策问题:Google Play 要求 开发人员在应用程序请求时提供有效的隐私政策或 处理敏感的用户或设备信息。您的应用请求 敏感权限(例如摄像头、麦克风、帐户、联系人或 电话)或用户数据,但不包括有效的隐私政策。 需要采取的行动:在您的网站上包含指向有效隐私政策的链接 应用的商品详情页面和您的应用内。你可以找到更多 我们帮助中心的信息。或者,您可以选择退出此 通过删除对敏感权限或用户的任何请求来要求 数据。如果您的目录中有其他应用程序,请确保 它们符合我们的突出披露要求。请 在 2017 年 3 月 15 日之前解决此问题,否则将采取行政措施 用于限制您的应用程序的可见性,包括删除 从 Play 商店。感谢您帮助我们提供清晰且 为 Google Play 用户提供透明的体验。问候, Google Play 团队

            【讨论】:

            【解决方案13】:

            您应该放弃android.permission.READ_PHONE_STATE 权限。将此添加到您的清单文件中:

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

            【讨论】:

              【解决方案14】:

              您需要在 Google Play 管理中心为您的应用提供隐私权政策,或移除需要隐私权政策的权限。

              去这里: https://play.google.com/console/app/app-content/summary

              或者为您的应用打开 Google Play 控制台,一直滚动到左侧导航菜单的底部,然后在“政策”标题下点击“应用内容”。

              有关何时以及为何需要隐私政策的更多信息,请参阅the docs here

              【讨论】:

              • 太棒了谢谢兄弟:)
              【解决方案15】:

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

              2.更新新 SDK 移除不需要的权限并重新提交应用。

              【讨论】:

                【解决方案16】:

                我找到了这个免费网站,它将为您制定并托管它:

                https://www.freeprivacypolicy.com/

                然后将其添加到商店列表下的 Play 商店 - 在底部添加您从 https://www.freeprivacypolicy.com/ 获得的政策的公共链接

                【讨论】:

                  【解决方案17】:

                  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 的更新来修复此问题。

                  【讨论】:

                    【解决方案18】:

                    我在将 apk 上传到 Google Play 时遇到了同样的问题并遇到了错误。 我在我的应用程序中使用了广告,我的清单文件中甚至没有提到 READ_PHONE_STATE 权限。但我得到了这个错误。然后我在 build.gradle 文件中更改广告的依赖项。然后它解决了我的问题。他们在 12.0.1 中解决了这个问题。

                    compile 'com.google.android.gms:play-services-ads:12.0.1'
                    

                    【讨论】:

                      【解决方案19】:

                      一步一步看,你就明白了

                      public static String getVideoTitle(String youtubeVideoUrl) {
                              Log.e(youtubeVideoUrl.toString() + " In GetVideoTitle Menu".toString() ,"hiii" );
                              try {
                      
                                  if (youtubeVideoUrl != null) {
                                      URL embededURL = new URL("https://www.youtube.com/oembed?url=" +
                                              youtubeVideoUrl + "&format=json"
                                      );
                                      Log.e(youtubeVideoUrl.toString() + " In EmbedJson Try Function ".toString() ,"hiii" );
                                      Log.e(embededURL.toString() + " In EmbedJson Retrn value ".toString() ,"hiii" );
                                      Log.e(new JSONObject(IOUtils.toString(embededURL)).getString("provider_name").toString() + " In EmbedJson Retrn value ".toString() ,"hiii" );
                      
                                      return new JSONObject(IOUtils.toString(embededURL)).getString("provider_name").toString();
                                  }
                              } catch (Exception e) {
                                  Log.e(" In catch Function ".toString() ,"hiii" );
                      
                                  e.printStackTrace();
                              }
                              return null;
                          }
                      

                      【讨论】:

                      • 请在您的代码中添加一些解释,以便其他人学习
                      【解决方案20】:

                      如果您使用包 device_id 来获取唯一的设备 ID,那么这将在您不知情的情况下添加一个 android.permission.READ_PHONE_STATE,这最终会导致 Play 商店警告。

                      相反,您可以将device_info 包用于相同目的,而无需额外许可。检查这个SO thread

                      【讨论】:

                        【解决方案21】:

                        如果您仔细阅读该消息,您会发现您正在使用相机、麦克风、联系人、存储和电话等权限,并且您没有提供隐私政策。如果您这样做,您需要提供隐私政策。您可以在 google 上找到有关 android 隐私政策的更多信息

                        添加隐私政策 In-Play 控制台,

                        1. 查找并选择所有应用

                        2. 选择您需要添加隐私政策的应用程序。

                        3. 在页面末尾找到政策

                        4. 点击应用内容为您的应用编辑列表。

                        5. 找到标有 P隐私政策 的字段并放置您的隐私政策页面的 URL

                        6. 点击保存,一切顺利。

                        注意:您需要有一个公共网页来托管您的隐私政策。 Google Play 商店不会为您托管该政策。

                        【讨论】:

                          【解决方案22】:

                          我通过这种方式解决了这个问题: 谷歌游戏控制台 查找应用内容->隐私政策 然后 隐私政策网址设置为 你可以提交你的页面。

                          【讨论】:

                            【解决方案23】:

                            在 Google 测试“内部测试版本”上传应用程序 apk 文件后,我无法在 Google 上发布我的应用程序,显示为错误。 附加屏幕截图请解决建议如何解决此错误。 在 Mobiroller 应用生成器上生成的应用。 即使在我看到 [错误消息:“您的 APK 或 Android App Bundle 正在使用需要隐私政策的权限:(android.permission.CAMERA)。” 1在我的应用程序的 Mobiroller 中添加了隐私政策。

                            看到错误消息:“您的 APK 或 Android App Bundle 正在使用需要隐私政策的权限:(android.permission.CAMERA)。”

                            【讨论】:

                              猜你喜欢
                              • 2017-10-21
                              • 2018-03-21
                              • 2023-03-13
                              • 2018-03-24
                              • 2021-10-25
                              • 2021-06-13
                              • 1970-01-01
                              • 1970-01-01
                              相关资源
                              最近更新 更多