uni-app 安卓targetVersion为33保存图片提示没有权限

uni-app 安卓targetVersion为33保存图片提示没有权限

项目信息 详情
产品分类 uniapp/App
PC开发环境 Mac
PC开发环境版本 macOS13
HBuilderX类型 正式
HBuilderX版本 3.8.12
手机系统 Android
手机系统版本 Android 13
手机厂商 vivo
手机机型 X70
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

  • 正常执行下载

预期结果:

  • 图片保存成功

实际结果:

  • 报错:saveImageToPhotosAlbum:fail No Permission

bug描述:

Google play上架要求targetVersion为33,将targetVersion改为33后,保存图片报错saveImageToPhotosAlbum:fail No Permission。但是将targetVersion更改为31后,保存图片正常。


更多关于uni-app 安卓targetVersion为33保存图片提示没有权限的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

您好。这个问题解决了吗?我在Android 14的手机上,也遇到了这个问题。。。

更多关于uni-app 安卓targetVersion为33保存图片提示没有权限的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个Android 13权限适配问题。在targetSdkVersion 33中,Google引入了新的图片权限机制:

  1. 对于Android 13+设备,现在需要明确申请以下权限:
  • READ_MEDIA_IMAGES(读取图片)
  • READ_MEDIA_VIDEO(读取视频)
  • READ_MEDIA_AUDIO(读取音频)
  1. 解决方案: 在manifest.json中添加以下配置:
"permission": {
    "android.permission.READ_MEDIA_IMAGES": {
        "request": "once",
        "prompt": "需要访问相册权限以保存图片"
    }
}
  1. 代码中需要动态申请权限:
// 保存前检查权限
uni.getSetting({
    success(res) {
        if(!res.authSetting['scope.writePhotosAlbum']){
            uni.authorize({
                scope: 'scope.writePhotosAlbum',
                success() {
                    saveImage();
                }
            })
        } else {
            saveImage();
        }
    }
})
  1. 如果仍然有问题,可以尝试添加传统存储权限作为兼容:
"android.permission.WRITE_EXTERNAL_STORAGE"
回到顶部