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

在清单中没有添加 android.permison.READ _ PHONE _ STATE. mission。

Why error comes when I upload a new apk version error comes below.

您的应用程序有一个版本代码为1的 apk,它请求以下权限: android.permison.READ _ PHONE _ STATE。在 APK 中使用这些权限的应用程序需要有一个隐私策略集。

我已经附上了我的谷歌商店帐户的屏幕截图。 enter image description here

我的清单文件。

<?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>
221691 次浏览

如果你在一个 > android 6.0的设备上测试你的应用程序,你也必须明确地要求用户授予许可。

正如你所看到的 给你 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
}
}
}
}

你应该阅读 这篇文章了解更多

这可能是因为任何第三方的 lib 可能包括这个许可,所以根据我在这个领域的经验,你必须添加有关这个特定信息的隐私政策,这意味着如果你要求在你的应用程序中获得帐户许可,而不是你必须声明,与你的隐私政策文件,我们使用这些数据,即电子邮件地址或任何理由,登录在谷歌游戏。

也可以这样做

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

希望这将指导你为此警告 create privacy policy for your app and attach that with store listing可以做些什么。

您的应用程序的 Manif.xml 拥有从您的设备访问信息的这些权限,但您没有隐私政策链接,而提交的播放商店。所以你得到了这个警告。

需要应用程序的隐私政策如果你的应用程序处理个人或敏感的用户数据

将隐私策略添加到应用程序的商店列表中有助于提供关于如何处理敏感用户和设备数据的透明度。

更新1

GooglePlayConsole 中的隐私策略设置更改了位置。

在谷歌播放控制台,
选择 商店存在应用程序内容
私隐政策下面。

Update 2

在最左下角选择 政策应用程序内容
私隐政策下面。

只要尝试将这一行添加到您的清单文件:

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

and add attribute xmlns:tools="http://schemas.android.com/tools" to your <manifest> tag to define namespace tools

文件tools:node="remove":

从合并的清单中删除此元素。尽管看起来你应该直接删除这个元素,但是当你在合并的清单中发现一个你不需要的元素时,使用这个元素是必要的,并且它是由一个不受你控制的低优先级清单文件提供的(比如一个导入的库)。

你是否在你的应用程序中使用 AdSense 或者其他广告,或者谷歌分析?我认为如果你这样做,即使你没有 android.permison.READ _ PHONE _ STATE 在你的清单,这是由广告库添加。

有一些免费的模板可以帮助您创建隐私策略。

以下是我从谷歌收到的关于此事的电子邮件:

您好,谷歌播放开发者,我们的记录显示,您的应用程序,xxx,与 包名 xxx,目前违反了我们的用户数据策略 个人和敏感信息。政策问题: Google Play 需要 开发人员提供有效的隐私政策时,应用程序请求或 处理敏感的用户或设备信息。您的应用程序请求 敏感权限(例如相机、麦克风、帐户、联系人或 电话)或用户资料,但不包括有效的私隐政策。 所需操作: 在您的 app's Store Listing page and within your app. You can find more 你亦可选择不使用此服务 要求删除任何敏感的权限或用户的请求 如果您的目录中还有其他应用程序,请确保 they are compliant with our Prominent Disclosure requirements. Please 在2017年3月15日前解决此问题,否则将采取行政行动 taken to limit the visibility of your app, up to and including removal 感谢您帮助我们提供一个清晰和 为 Google Play 用户提供透明的体验 团队

项目中的依赖项将添加它们自己的权限。 请按照下面的步骤查找“ READ _ PHONE _ STATE”的来源。

  1. 重新构建您的 Android 应用程序
  2. 在 android 工作室中点击“ Ctrl + Shift + F”(基本上在你喜欢的编辑器中进行搜索)。
  3. 搜索“ READ _ PHONE _ STATE”,您将在重新生成的清单文件(而不是您最初创建的清单文件)中找到该条目。通过它的路径,您可以知道从哪个依赖项添加权限。 enter image description here

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

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

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

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

  1. 也许你正在使用9.6.0版本的 PlayServices。那么你应该更新它,这是图书馆的 bug。更多信息 给你

或者

  1. < 使用-准许 Name = “ android.permission on.READ _ PHONE _ STATE” 工具: node = “ remove”/>

你的清单文件。

您应该删除 android.permission.READ_PHONE_STATE权限。请将以下内容添加到清单文件:

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

2018年更新:

对于 AdMob 用户,这会导致 AdMob 版本12.0.0(当前最新版本)。它错误地请求 READ _ PHONE _ STATE 权限,所以即使你的应用程序在清单中不需要 READ _ PHONE _ STATE 权限,你也不能在 Google Play Console 中更新你的应用程序(它会告诉你为你的应用程序创建一个隐私策略页面,因为你的应用程序需要这个权限)。

看这个: https://developers.google.com/android/guides/releases#march_20_2018_-_version_1200

此外,他们写道,他们将发布更新到12.0.1修复这很快。

目前,一些人正面临着同样的问题,因为使用 12.0.0版本的 AdMob lib。

更新到 12.0.1。这应该可以修复它。你可以阅读更多的 给你

I was facing same issue and got the error while uploading apk to Google play. 我在应用程序中使用了广告,甚至在我的清单文件中都没有提到 READ _ PHONE _ STATE 权限。但是我得到了这个错误。然后在 build.gradle 文件中更改广告的依赖项。然后它解决了我的问题。他们在12.0.1中解决了这个问题。

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

这是第三方图书馆。你可以在 build/outputs/logs/manifest-merger-release-report.txt中找到罪魁祸首

我发现这个免费的网站,将为您的政策和主机:

Https://www.freeprivacypolicy.com/

然后将它添加到商店清单下的游戏商店-在底部添加您从 https://www.freeprivacypolicy.com/获得的策略的公共链接

如果你使用 React Native

这个问题在这里已经完全解决了

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

一步一步来,你就会明白

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;
}

您可能需要添加或更新您的隐私策略。 You can easily create a privacy policy using this template

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

如果你正在使用包 Device _ id获得唯一的设备 ID,然后将添加一个 android.permission.READ_PHONE_STATE在你不知情的情况下,最终将导致播放商店警告。

Instead you can use the Device _ info package for the same purpose without the need of the extra permission. Check this 那么线头

我用这种方法解决了这个问题: 谷歌游戏机 找到 应用程式内容-> 私隐政策 然后 隐私策略 URL 设置为 你可以提交你的网页。

您需要在 Google Play Console 中为您的应用程序提供隐私策略,或者删除需要隐私策略的权限。

点击这里: < a href = “ https://play.google.com/sole/app/app-content/Summary”rel = “ nofollow norefrer”> https://play.google.com/console/app/app-content/summary

Or open the Google Play Console for your app, scroll all the way to the bottom of the nav menu on the left and under the heading "Policy" click "App Content".

有关需要隐私策略的时间和原因的更多信息,请参见 the docs here

我不能发布我的应用程序在谷歌作为错误显示后上传应用程序 apk 文件在谷歌测试“内部测试版本。” 附加的屏幕截图,请解决建议如何解决这个错误。 应用程序生成在 Mobiroll 应用程序生成器上。 即使在我有了[错误按摩看到: “您的 APK 或 Android 应用程序包是使用权限,需要一个隐私策略: (Android.permission. CAMERA)。” 在我的应用程序中增加了 Mobiroller 的隐私政策。

错误信息显示: “您的 APK 或 Android 应用程序包正在使用需要隐私策略的权限: (Android.permission. CAMERA)。”