uniapp 打包遇到read_media_images权限问题如何解决?
在uniapp打包Android应用时,遇到需要申请READ_MEDIA_IMAGES权限的问题,该如何处理?具体表现为:即使已在manifest.json中配置了权限,但应用在部分Android设备上仍无法访问相册图片。请问正确的权限配置方式是什么?是否需要额外处理Android 13以上的版本适配?
2 回复
在manifest.json中检查权限配置,确保已声明READ_EXTERNAL_STORAGE权限。若使用HBuilderX,勾选对应权限后重新打包即可。
在UniApp打包时遇到read_media_images权限问题,通常是由于Android系统权限配置或HBuilderX设置不当导致的。以下是具体解决方案:
解决方案
-
配置AndroidManifest.xml
在项目manifest.json的"app-plus" -> "distribute" -> "android"节点下添加权限声明:{ "permissions": [ "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>" ] }- 注意:Android 10+ 系统需用
READ_EXTERNAL_STORAGE替代read_media_images。
- 注意:Android 10+ 系统需用
-
动态申请权限(适用于App)
在需要访问相册的页面中,通过以下代码动态申请权限:// 检查权限 uni.authorize({ scope: 'scope.writePhotosAlbum', success: () => { // 用户已授权,执行相册操作 }, fail: () => { // 引导用户手动开启权限 uni.showModal({ content: '需要相册权限,请前往设置开启', confirmText: '去设置', success: (res) => { if (res.confirm) uni.openSetting(); } }); } }); -
检查HBuilderX配置
- 确保使用最新HBuilderX版本(旧版本可能存在权限适配问题)。
- 云端打包时,在 项目根目录 检查
nativeplugins中第三方插件是否包含冗余权限声明。
-
Android适配说明
- 若目标设备为Android 11+,需在
manifest.json中补充<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>,但此权限需上架时向应用市场特殊申报。
- 若目标设备为Android 11+,需在
注意事项
- 权限分组:
READ_EXTERNAL_STORAGE已涵盖媒体文件读取权限,无需单独申请read_media_images。 - 上架提示:若涉及敏感权限,需在应用商店提交时补充隐私协议说明。
按以上步骤操作后重新打包即可解决。如问题持续,请检查控制台报错详情或更换真机测试环境。

