uni-app unih5项目部署后嵌在uni-app中, unih5的uni.chooseImage(OBJECT)方法在vivo x24、vivo 7手机上打开相机拍照后无回调怎么处理?

发布于 1周前 作者 yuanlaile 来自 uni-app

uni-app unih5项目部署后嵌在uni-app中, unih5的uni.chooseImage(OBJECT)方法在vivo x24、vivo 7手机上打开相机拍照后无回调怎么处理?

操作步骤:

unih5部署的项目,嵌套在uniapp中, h5项目中的代码执行uni.chooseImage(OBJECT) 打开相机拍照后没有执行回调

预期结果:

unih5部署的项目,嵌套在uniapp中, h5项目中的代码执行uni.chooseImage(OBJECT) 打开相机拍照后能正常回调

实际结果:

unih5部署的项目,嵌套在uniapp中, h5项目中的代码执行uni.chooseImage(OBJECT) 打开相机拍照后没有执行回调

bug描述:

unih5打包发布后运行在uniapp项目中,h5中的uni.chooseImage(OBJECT) 使用相机拍照后无任何回调怎么处理?

开发环境与版本信息

项目创建方式 PC开发环境操作系统 PC开发环境操作系统版本号 HBuilderX类型 HBuilderX版本号 浏览器平台 浏览器版本
HBuilderX Windows 11 正式 4.36 手机系统浏览器 vivo x27 手机系统浏览器

3 回复

用 try catch 包一下是否有报错?fail 和 compolete 是否有值?其他安卓手机正常吗,有没有规律? 是 uniapp 直接运行 h5 报错,还是被 webview 引用后有问题?


success , fail 和 compolete 没有任何回调, 目前发现就vivo s7 x27这两个手机型号有这个问题

针对您提到的在vivo X24和vivo Y7手机上使用uni-app的unih5项目时,uni.chooseImage方法打开相机拍照后无回调的问题,这通常可能是由于设备兼容性、权限问题或者uni-app框架的某些特定bug导致的。以下是一些可能的解决思路和代码示例,供您参考和调试:

1. 检查并请求权限

确保在调用uni.chooseImage之前,应用已经正确请求并获得了相机和存储权限。您可以在调用uni.chooseImage之前添加权限检查的逻辑。

// 检查并请求相机权限(示例代码,具体实现需根据平台API调整)
function checkAndRequestCameraPermission() {
    return new Promise((resolve, reject) => {
        // 这里假设有一个获取权限状态的函数getPermissionStatus
        uni.getSetting({
            success: (res) => {
                if (!res.authSetting['scope.camera']) {
                    uni.authorize({
                        scope: 'scope.camera',
                        success: () => resolve(true),
                        fail: () => reject(new Error('Camera permission denied'))
                    });
                } else {
                    resolve(true);
                }
            },
            fail: (err) => reject(err)
        });
    });
}

// 使用示例
checkAndRequestCameraPermission()
    .then(() => {
        uni.chooseImage({
            count: 1,
            sizeType: ['original', 'compressed'],
            sourceType: ['camera'],
            success: (res) => {
                console.log('Image chosen:', res.tempFilePaths);
            },
            fail: (err) => {
                console.error('Failed to choose image:', err);
            }
        });
    })
    .catch((err) => {
        console.error('Permission error:', err);
    });

2. 监听错误回调

确保uni.chooseImagefail回调被正确处理,以便捕获任何可能的错误。

uni.chooseImage({
    // ...其他参数
    fail: (err) => {
        // 详细记录错误信息,包括设备型号、系统版本等
        console.error(`chooseImage failed on device: ${uni.getSystemInfoSync().model}, OS: ${uni.getSystemInfoSync().version}`, err);
        // 可以考虑在这里添加用户提示或重试逻辑
    }
});

3. 尝试不同的sourceType

尝试修改sourceType参数,从['camera']改为['album', 'camera'],看是否能绕过特定设备的兼容性问题。

sourceType: ['album', 'camera'],

4. 更新uni-app框架

确保您使用的uni-app框架是最新版本,因为开发者社区可能已经修复了相关的bug。

结论

由于问题特定于某些vivo设备,建议在vivo开发者社区或uni-app的GitHub仓库中搜索是否有类似的问题报告和解决方案。如果问题依旧存在,考虑向uni-app官方提交bug报告。

回到顶部