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设置不当导致的。以下是具体解决方案:

解决方案

  1. 配置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
  2. 动态申请权限(适用于App)
    在需要访问相册的页面中,通过以下代码动态申请权限:

    // 检查权限
    uni.authorize({
      scope: 'scope.writePhotosAlbum',
      success: () => {
        // 用户已授权,执行相册操作
      },
      fail: () => {
        // 引导用户手动开启权限
        uni.showModal({
          content: '需要相册权限,请前往设置开启',
          confirmText: '去设置',
          success: (res) => {
            if (res.confirm) uni.openSetting();
          }
        });
      }
    });
    
  3. 检查HBuilderX配置

    • 确保使用最新HBuilderX版本(旧版本可能存在权限适配问题)。
    • 云端打包时,在 项目根目录 检查 nativeplugins 中第三方插件是否包含冗余权限声明。
  4. Android适配说明

    • 若目标设备为Android 11+,需在 manifest.json 中补充 <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>,但此权限需上架时向应用市场特殊申报。

注意事项

  • 权限分组READ_EXTERNAL_STORAGE 已涵盖媒体文件读取权限,无需单独申请 read_media_images
  • 上架提示:若涉及敏感权限,需在应用商店提交时补充隐私协议说明。

按以上步骤操作后重新打包即可解决。如问题持续,请检查控制台报错详情或更换真机测试环境。

回到顶部