跳至内容
WebViewGold 从 Vibe Coding 到 App Store
中文
获取 WebViewGold

Google Play 审核被拒

照片和视频权限被拒:移除 READ_MEDIA_IMAGES,让系统选择器处理上传

Google 只允许核心用途需要访问整个媒体库的应用(例如图库应用)获得广泛的照片和视频访问权限。一个让用户上传头像或收据的 Web 应用不符合条件,而且也不需要:系统选择器无需任何媒体权限,就能把用户选中的文件交给您的 WebView。从所有轨道中移除这些权限,然后重新提交。

每个平台一次性 $109 起,或由我们的团队全程代劳,$698 起。

  • 审核通过保证 – 否则 14 天内退款
  • 无需编程
  • 一次性付费,免费更新
  • 7×24 小时人工支持
  • 2014 年起德国出品 · ISO 27001

照片和视频权限政策怎么说

从 Android 13 开始,对用户图片和视频的广泛访问被拆分为两项权限:READ_MEDIA_IMAGES 和 READ_MEDIA_VIDEO。Google Play 把两者都视为受限权限:只有当系统选择器(例如 Android 照片选择器)无法满足应用的核心功能时,应用才可以请求它们。只需一次性或偶尔访问媒体的应用(头像、收据、附在支持工单或商品信息上的照片)应当使用选择器,并从清单中移除这些权限。保留这些权限的应用必须在 Play Console 的声明中说明原因。

Google 的政策详情把管理用户全部媒体的图库类应用列为需要广泛访问的典型情形。自 2025 年起已强制要求完全合规;不合规的应用可能被阻止更新或被移除。选择器也是更好的体验:用户可以准确选择要分享哪些图片,而不必向您的应用开放整个图库。

拒审通知怎么写

开发者通常会看到一条照片和视频权限政策下的问题,指出该权限的使用与应用的核心用途没有直接关系,因为应用只需要一次性或偶尔访问媒体文件。通知会要求您从提交中的每个版本代码(正式版和测试轨道都包括在内)移除 READ_MEDIA_IMAGES 和 READ_MEDIA_VIDEO,或者在核心功能确实需要广泛访问时提交声明。对于 Web 应用,改写声明很少有用,移除权限才有用。

没有媒体权限时,WebView 应用中的上传如何工作

当您的 Web 应用显示 <input type="file" accept="image/*"> 时,Android WebView 会请原生应用打开一个文件选择器。WebViewGold 会根据 Config.java 中的 filePickerMode 提供相机、图库或两者:0 表示相机和图库,1 表示仅相机,2 表示仅图库。用户选中的文件会交回页面,像在网页上一样上传。

通过系统选择器选择文件,只会让应用获得这一个文件的访问权,而且是通过用户自己的点按授予的。这就是普通上传流程不需要 READ_MEDIA_IMAGES 的原因。拍一张新照片则属于相机功能,使用的是相机权限(requireCamera),这是另一个话题,详见权限指南。文档扫描器也接入同一个选择器,并以同样的方式返回 PDF。

把 Web 应用转换成原生应用的绝佳方式!周转速度快,无需开发完整的原生应用就能把应用上架到应用商店!

Kevin Joling · FlightConnections & TrainConnections · Trustpilot

逐项功能:真正需要哪项权限

Web 应用中的功能所需权限WebViewGold 设置
上传已有的照片或文件无需媒体权限;选择器只分享选中的文件filePickerMode 设为 0 或 2
拍一张新照片用于上传相机requireCamera 为 true,filePickerMode 设为 0 或 1
扫描二维码或条形码相机requireCamera;参见二维码扫描器文档
把图片保存到图库(savethisimage://)在当前 Android 版本上,添加新图片不需要对媒体库的读取权限requireStorage 用于下载和上传;参见下载器文档
在应用内显示用户的整个照片库READ_MEDIA_IMAGES 和 READ_MEDIA_VIDEO,外加声明很少适合 Web 应用;图库管理器是原生应用

移除权限,同时保持上传正常

在 Android Studio 中大约三十分钟,外加在手机上测试一轮。

  1. 找出它们的来源

    在 Play Console 中,打开被拒版本的 App Bundle 浏览器,查看其权限列表。在 Android Studio 中,打开 AndroidManifest.xml 并切换到 Merged Manifest 标签页;它会显示某个条目来自您自己的清单还是来自某个库。

  2. 让设置与功能相匹配

    把 filePickerMode 设置为上传所需的模式;如果没有任何功能拍照或扫码,就把 requireCamera 设为 false;只有当应用需要上传或下载文件时,才让 requireStorage 保持 true,具体见Config.java 参考文档。

  3. 去掉媒体权限

    从清单中删除 READ_MEDIA_IMAGES 和 READ_MEDIA_VIDEO 这两行;如果是某个库添加的,就加上下面的移除规则。如果同时出现了 READ_MEDIA_VISUAL_USER_SELECTED,除非您确切知道它为什么存在,否则一并移除。

  4. 在较新的 Android 版本上测试每个媒体流程

    在一台 Android 14 或更新版本的设备上,从内部测试轨道安装新构建,依次尝试:从图库上传、用相机拍照上传、文档扫描器(如果您使用)、用 savethisimage:// 保存图片,以及下载 PDF。如果有任何一项失败,请在提交之前把您的模板版本和失败的流程发给 WebViewGold 支持团队。

  5. 替换所有轨道上的 bundle

    上传版本代码更高的新 bundle,并替换内部测试、封闭测试和开放测试轨道上的旧 bundle。Google 会检查提交中的每一个版本代码。

  6. 清理声明

    如果 Play Console 仍然显示照片和视频权限声明,请说明应用已不再请求这些权限,然后提交更改以供审核。

AndroidManifest.xml 的移除规则

当 Merged Manifest 显示这些权限来自某个依赖项时使用。如果 manifest 元素中缺少 tools 命名空间,请先添加。

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

    <!-- 上传使用系统选择器;不需要广泛的媒体访问权限 -->
    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" tools:node="remove" />
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" tools:node="remove" />
    <uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" tools:node="remove" />

</manifest>

模板:移除权限后的回复

简短且可验证。写明修复问题的版本代码,以及审核人员可以测试上传的确切路径。模板保留英文,因为 Google 审核人员阅读的是英文。

用于“政策状态”或版本说明(请修改方括号中的内容)
App: [App name], package name [com.example.app]. Rejected version code [123], new version code [124].

The app needs only occasional access to photos: users attach a single image to [their profile / a support request / a listing]. We removed READ_MEDIA_IMAGES and READ_MEDIA_VIDEO from version code [124] and from every active track, including internal and closed testing. Uploads now go through the Android system picker, which shares only the image the user selects.

To verify: log in with the account in Sign-in details, open [Profile > Edit profile], tap [Change photo] and choose an image.

Thank you for reviewing version code [124].

常见问题

移除 READ_MEDIA_IMAGES 后,用户还能上传照片吗?

能。文件输入框会打开系统选择器,它无需任何广泛的媒体权限就能分享选中的文件。修改后,请在 Android 13 或更新版本上测试一次这个流程。

这项政策也涵盖视频吗?

是的,READ_MEDIA_VIDEO 适用同样的规则。选中的视频可以像照片一样通过选择器分享;如果您的应用接受视频上传,请把它也纳入测试。

我的应用是一个照片社区。我符合广泛访问的条件吗?

可能不符合。发布选中的照片正是选择器的用途。广泛访问是为选择器无法满足其核心功能的应用(例如图库管理器)准备的,而且声明必须解释为什么选择器在技术上不够用。

我的应用没有变化,为什么 Google 现在才标记?

Google 会根据现行政策检查您提交的每个 bundle 中的权限,而新版本的库可能会添加清单条目。Merged Manifest 标签页会显示每项权限来自哪个文件。

相机权限会受影响吗?

不会。CAMERA 是一项单独的权限,有其自己的使用理由。只有当某项功能需要拍照或扫码时才保留它,否则就移除。

让您的应用上架商店的三种方式

结果相同,只是您需要投入的工作量不同。三种方式都附带审核通过保证和 7×24 小时人工支持。

自己动手

$109 每个平台,一次性付费

WebViewGold 许可证:一个现成的 Xcode 或 Android Studio 项目。粘贴您的 URL,设置名称和图标,开启所需功能,构建并提交。永久免费更新。

在主页查看方案

Cloud Builder

$349 每个许可证,一次性附加购买

无需 Mac、Xcode 或 Android Studio:在浏览器中完成配置,我们在云端构建两个应用,并将其交付到 App Store Connect 和 Play Console。

Cloud Builder 如何运作 试用免费演示

Full Service

$698 每个平台 $798

把您的 URL 和图标发给我们。我们的团队在 72 小时内完成配置、构建并交付您的应用,白标,附源码项目。两个平台共 $1,158。

Full Service 详情 服务提供方: WeSetupYourWebViewApp

冬季特惠价格有效期至 2026年12月31日。

准备好发布您的应用了吗?

App Store & Google Play 审核通过保证 – 否则 14 天内退款

想直接交给我们?Full Service:我们在 72 小时内完成配置、构建并交付,每个平台 $698 起。有疑问?通过 7×24 小时在线聊天联系我们。

退款依据我们 FAQ 中列出的条件:应用因非内容原因被 Apple 和/或 Google 拒审,并在购买后 14 天内提出申请。