You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 11作用域存储下WhatsApp状态保存应用适配问题咨询

Android 11+ WhatsApp状态保存应用适配方案

权限显示歧义说明

你观察到的同类应用权限显示差异是系统文案的混淆问题,并非其使用了MANAGE_EXTERNAL_STORAGE权限:

  • Android 11及以上版本,申请READ_EXTERNAL_STORAGE(Android 12+对应READ_MEDIA_IMAGES + READ_MEDIA_VIDEO)时,系统给用户的弹窗提示为「允许访问照片、媒体和文件」,部分ROM的应用权限详情页会将该权限标注为「所有文件管理权限」,属于系统展示文案的歧义,实际并未授予全文件访问权限。
  • 这类应用全程没有触发全文件权限申请弹窗,就是因为没有声明/申请MANAGE_EXTERNAL_STORAGE权限。

无全文件权限的实现方案

不需要全文件权限即可实现状态读取、保存的核心功能,两种合规实现方式:

方案1:MediaStore媒体查询

WhatsApp状态缓存的图片、视频文件会被系统媒体扫描器收录,直接通过MediaStoreAPI查询即可,仅需要媒体访问权限:

  • 权限申请要求:Android 11申请READ_EXTERNAL_STORAGE,Android 12+申请READ_MEDIA_IMAGES、READ_MEDIA_VIDEO即可
  • 查询示例代码:
// Android 11+ 查询WhatsApp状态隐藏目录下的媒体文件
String selection = MediaStore.Files.FileColumns.RELATIVE_PATH + " LIKE ? ";
String[] selectionArgs = new String[]{"%WhatsApp/Media/.Statuses%"};
Uri queryUri = MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL);
Cursor cursor = getContentResolver().query(queryUri, null, selection, selectionArgs, null);

读取到的媒体文件可直接通过MediaStoreAPI写入公共图片、下载目录,也可以存入应用专属沙箱目录,不需要额外权限。

方案2:SAF目录授权适配

如果部分ROM的媒体扫描器不收录.Statuses这类带点前缀的隐藏目录内容,可以引导用户通过系统存储访问框架(SAF)手动授权对应目录访问权限:

  • 调用SAF目录选择器,引导用户跳转到WhatsApp的Media/.Statuses目录授予访问权限,授权后可以持久化该目录的读写权限,后续无需重复申请
  • 若需要将文件保存到根目录等任意公共路径,同样可以引导用户通过SAF授权对应目标目录的访问权限即可实现,全程不需要申请全文件权限。

Google Play提审注意事项

  • 完全移除AndroidManifest.xml中MANAGE_EXTERNAL_STORAGE权限的声明
  • 提审时在权限声明页明确说明媒体权限的用途为「读取用户本地存储中的WhatsApp状态文件,供用户手动保存到公共存储目录」,同时附带功能操作的演示录屏,即可正常通过审核。

内容的提问来源于stack exchange,提问作者inabdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:18:04