uni-app chooseImage的sourceType设置为['camera', 'album']无权限时不走fail回调

uni-app chooseImage的sourceType设置为[‘camera’, ‘album’]无权限时不走fail回调

开发环境 版本号 项目创建方式
Windows 10 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Windows

PC开发环境操作系统版本号:10

HBuilderX类型:正式

HBuilderX版本号:3.8.4

手机系统:Android

手机系统版本号:Android 13

手机厂商:vivo

手机机型:x50

页面类型:vue

vue版本:vue2

打包方式:云端

项目创建方式:HBuilderX

示例代码:

uni.chooseImage({
count: 1,
sizeType: [‘original’, ‘compressed’]
sourceType: [‘camera’, ‘album’], //选择相机,相册
success: async function(res) {},
fail: function(rerr) {}
});


操作步骤:
chooseImage的sourceType设置为['camera', 'album']点击任意一个,拒绝授权

预期结果:
chooseImage的sourceType设置为['camera', 'album']点击任意一个,拒绝授权后走fail回调,或者两个都没有权限时再走也行

实际结果:
chooseImage的sourceType设置为['camera', 'album']点击任意一个,拒绝授权后无反应,

bug描述:
chooseImage的sourceType设置为['camera', 'album']点击任意一个,拒绝授权时,不走fail回调

更多关于uni-app chooseImage的sourceType设置为['camera', 'album']无权限时不走fail回调的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

自己代码逻辑问题,uni.chooseImage并无此问题

更多关于uni-app chooseImage的sourceType设置为['camera', 'album']无权限时不走fail回调的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个已知的uni-app权限处理问题。当sourceType设置为[‘camera’,‘album’]时,如果用户拒绝相机权限,确实不会触发fail回调。这是因为uni-app底层实现机制导致的。

解决方案:

  1. 可以单独处理权限请求,在调用chooseImage前先检查权限:
uni.authorize({
    scope: 'scope.camera',
    success() {
        uni.chooseImage({
            // 参数配置
        });
    },
    fail() {
        // 处理权限被拒绝的情况
    }
});
  1. 或者将sourceType分开处理,先检查相机权限,失败后再调用相册:
uni.chooseImage({
    sourceType: ['camera'],
    fail() {
        uni.chooseImage({
            sourceType: ['album']
        });
    }
});
  1. 也可以监听权限变化事件:
uni.onNeedPrivacyAuthorization(resolve => {
    // 处理权限请求
});
回到顶部