应用不符合 REQUEST_INSTALL_PACKAGES 权限的允许方式

MAN*_*ISH 25 policy android android-manifest google-play google-play-console

在使用 flutter 更新我的应用程序版本后,我从 google play 收到了这封电子邮件:

\n
\n

经过最近的审核,我们发现您的应用不符合我们的一项或多项开发者计划政策。请参阅下文,了解有关应用程序状态以及如何纠正问题的更多信息。

\n

状态:已批准,但存在问题 - 需要采取进一步行动

\n

我们发现您的应用存在问题。您需要按照如下所述进行检查并采取措施,以便您的应用将来不会受到影响。

\n

发现问题:权限的使用与应用的核心用途没有直接关系。我们发现您的应用不符合 REQUEST_INSTALL_PACKAGES 权限的使用方式。具体来说,权限的使用与应用程序的核心用途没有直接关系。

\n

此外,请按照以下步骤使您的应用程序合规:

\n

请从您的应用中删除 REQUEST_INSTALL_PACKAGES 权限的使用。

\n

关于请求安装包权限

\n

从 2022 年 9 月 29 日开始,您的应用必须符合 REQUEST_INSTALL_PACKAGES 权限,否则您的应用可能会面临额外的强制措施。REQUEST_INSTALL_PACKAGES 权限允许应用程序请求安装应用程序包。要使用此权限,您的 app\xe2\x80\x99s 核心功能必须包括:

\n

发送或接收应用程序包,并且\n启用用户启动的应用程序包安装。\n允许的功能包括以下任意功能:

\n

Web 浏览或搜索\n支持附件的通信服务\n文件共享、传输或管理\n企业设备管理\nREQUEST_INSTALL_PACKAGES 权限不得用于执行自我更新、修改或捆绑资产文件中的其他 APK,除非设备管理目的。所有更新或软件包安装都必须遵守 Google Play\xe2\x80\x99s 设备和网络滥用政策,并且必须由用户启动和驱动。

\n
\n

谷歌解释了使其合法化的步骤,但我的清单中没有此权限,而且我也不使用功能来安装文件,我不知道此消息的真正原因,我担心我的应用程序如果我不采取必要的措施,将会被从商店中删除。

\n

有谁有更多这方面的信息或者知道谷歌实际上可能在我的应用程序中检测到什么?

\n

这些是清单中的权限:

\n
<uses-permission android:name="android.permission.INTERNET" />\n<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />\n<uses-permission android:name="android.permission.WAKE_LOCK"/>\n<uses-feature android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:required="false" />\n
Run Code Online (Sandbox Code Playgroud)\n

MAN*_*ISH 47

就我而言,这与 Flutter 中的open_file有关。此包在清单中使用 REQUEST_INSTALL_PACKAGES 权限。

我通过使用(open_file_safe)修复:https://pub.dev/packages/open_file_safe

或者您也可以使用open_filex: https: //pub.dev/packages/open_filex

这两个包与 open_file 相同,但不支持 .apk 文件类型。因此,不需要 android.permission.REQUEST_INSTALL_PACKAGES 权限。

如果您没有使用open_file插件,请检查是否在 build/app/intermediates/merged_manifest/ 的合并清单中声明了权限 REQUEST_INSTALL_PACKAGES 如果正在使用该权限,则删除该权限,或者删除该插件并找到任何其他替代方案插入。

注意:如果您在本机 Android 项目中遇到此问题,您可能会使用包管理器查询所有包,但自 Android 8.0 起不再允许这样做。要解决此问题,请在 android studio 中打开应用程序的 android 项目,然后检查 AndroidManifest.xml 的合并清单部分,看看是否发现您的应用程序正在使用该权限(如果正在使用,请删除该权限)。

如果您仍然无法找到该插件或在合并的清单文件中找到解决方法,您可以尝试添加:

<uses-permission
    android:name="android.permission.REQUEST_INSTALL_PACKAGES"
    tools:node="remove" />
Run Code Online (Sandbox Code Playgroud)

在您的主清单文件中。尝试在 Play 商店中再次提交应用程序希望它会有所帮助。

在这里查看更多信息。https://support.google.com/googleplay/android-developer/answer/12085295?hl=en

Github 问题: https: //github.com/crazecoder/open_file/issues/204


Abd*_*rek 9

  1. 执行任何安全插件,例如:open_file_safe 或 open_filex

如果你仍然有像我这样的问题:

  1. 由于某种原因,如果您在其他轨道(内部、alpha 等)中使用此权限,Play 控制台将拒绝最新版本。REQUEST_INSTALL_PACKAGES 检测可能引用其他轨道中的现有构建而不是最新构建。评论反馈消息令人困惑且没有帮助。

在 Play 控制台(您受影响的应用)中,单击“策略”下的“应用内容”

查找敏感权限和 API,然后单击开始。

选择 APK 和捆绑包,列表将显示包含敏感权限/API 的构建和跟踪。

导航到每个受影响的轨道,创建一个新版本,上传一个干净的版本(带有之前的更改)以替换现有版本,提交以供审核。

导航到发布概述并检查评论是否正在等待提交,如果有,请发送评论。

然后就被接受了

来源: https: //github.com/crazecoder/open_file/issues/204

  • 你节省了我很多时间,谢谢你!“检测可能指的是其他轨道中的现有版本,而不是最新版本。审查反馈消息令人困惑且没有帮助。” (2认同)

小智 5

REQUEST_INSTALL_PACKAGES权限添加tools:node="remove"到您的清单中:

<manifest ... xmlns:tools="http://schemas.android.com/tools">
   ...
   <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" tools:node="remove" />
   ...
</manifest>
Run Code Online (Sandbox Code Playgroud)

不要忘记将tools命名空间添加到清单的根元素中。