uni-app uni.chooseImage报错 {"errMsg":"chooseImage:fail No Permission","code":12}

uni-app uni.chooseImage报错 {“errMsg”:“chooseImage:fail No Permission”,“code”:12}

示例代码:

let upimg = async () => {  
    try {  
        console.log('上传');  
        let res = await uni.chooseImage({  
            count: 1, //默认9  
            sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有  
            sourceType: ['album'], //从相册选  
        });  
        console.log(res);  
    } catch (e) {  
        console.log(e, '错误');  
        //TODO handle the exception  
    }  
}  

操作步骤:

  1. targetSdkVersion 设为33 调用 uni.chooseImage
  2. 项目引用原生插件和uts插件,不引用任何第三方插件则不会出现 调用 uni.chooseImage {“errMsg”:“chooseImage:fail No Permission”,“code”:12}

预期结果:

首次点击弹出授权窗口,授权通过后,允许选择相册

实际结果:

{"errMsg":"chooseImage:fail No Permission","code":12}

bug描述:

targetSdkVersion 设为33 调用 uni.chooseImage {“errMsg”:“chooseImage:fail No Permission”,“code”:12} , 错误

信息 描述
产品分类 uniapp/App
PC开发环境 Windows
PC操作系统版本 10
HBuilderX类型 Alpha
HBuilderX版本 3.99
手机系统 Android
手机系统版本 Android 12
手机厂商 华为
手机机型 mate50
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

image


更多关于uni-app uni.chooseImage报错 {"errMsg":"chooseImage:fail No Permission","code":12}的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

提供一个安装包

更多关于uni-app uni.chooseImage报错 {"errMsg":"chooseImage:fail No Permission","code":12}的实战教程也可以访问 https://www.itying.com/category-93-b0.html


回复 检藏: 抱歉这个失效了,重新提交一个吧

回复 检藏: 兄弟你解决了么?我也遇到了

回复 DCloud_Android_zl: 您好,这个问题后续有解决方案么?

回复 7***@qq.com: 我这边现在验证是正常的,提供一个包我这边试一下

在使用 uni.chooseImage 时,如果遇到 {"errMsg":"chooseImage:fail No Permission","code":12} 错误,通常是因为应用没有获取到相应的权限。以下是一些可能的原因和解决方法:

1. 检查权限配置

  • H5 端:在 H5 端,uni.chooseImage 依赖于浏览器的文件选择功能,通常不需要额外的权限配置。如果出现权限问题,可能是浏览器设置或安全策略导致的。

  • App 端:在 App 端,uni.chooseImage 需要访问设备的相机和相册权限。你需要在 manifest.json 中配置相应的权限。

    {
      "app-plus": {
        "permissions": [
          "camera",
          "photos"
        ]
      }
    }
    
  • 微信小程序:在微信小程序中,uni.chooseImage 需要用户授权访问相册和相机。你可以在小程序中调用 wx.authorize 来请求权限。

    wx.authorize({
      scope: 'scope.album',
      success() {
        // 用户已经同意授权
      },
      fail() {
        // 用户拒绝授权
      }
    });
    

2. 动态请求权限

在 App 端,即使你在 manifest.json 中配置了权限,用户也可能在运行时拒绝了权限请求。你可以在代码中动态请求权限:

uni.authorize({
  scope: 'scope.camera',
  success() {
    // 用户已经同意授权
  },
  fail() {
    // 用户拒绝授权
  }
});

3. 检查运行环境

  • 确保你是在支持 uni.chooseImage 的环境中运行代码。例如,某些浏览器可能不支持文件选择功能。
  • 如果你在模拟器或真机上测试,确保模拟器或真机的权限设置允许应用访问相机和相册。

4. 检查代码逻辑

确保你在调用 uni.chooseImage 之前没有其他逻辑错误,例如在未获取到权限的情况下直接调用 uni.chooseImage

5. 调试和日志

  • 使用 console.loguni.showModal 来调试代码,查看在调用 uni.chooseImage 之前是否已经获取了权限。
  • 检查控制台日志,查看是否有其他错误信息。

6. 更新 uni-app 版本

如果你使用的是较旧的 uni-app 版本,尝试更新到最新版本,以确保你使用的是最新的 API 和修复了已知的 bug。

7. 检查设备设置

  • 在真机上,检查设备的设置,确保应用有访问相机和相册的权限。
  • 在 Android 设备上,你可以在 设置 -> 应用 -> 权限 中查看和修改应用的权限。

8. 处理用户拒绝授权的情况

如果用户拒绝了授权,你可以提示用户手动开启权限,或者提供其他替代方案。

uni.showModal({
  title: '提示',
  content: '请开启相机和相册权限以继续使用该功能',
  success(res) {
    if (res.confirm) {
      // 引导用户去设置页面开启权限
      uni.openSetting();
    }
  }
});
回到顶部