uni-app vivo x24、vivo 7s打包h5运行项目中 uni.chooseImage(OBJECT) 无任何回调

发布于 1周前 作者 htzhanglong 来自 Uni-App

uni-app vivo x24、vivo 7s打包h5运行项目中 uni.chooseImage(OBJECT) 无任何回调

产品分类

uniapp/H5

开发环境信息

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

示例代码

uni.chooseImage({  
    count: 1,  
    sourceType: ["camera"],  
    success(res1) {  
        that.$modal.alert("1");  
    },  
    fail(err) {  
        that.$modal.alert("图片上传失败,请重试! 错误信息:" + err);  
    },  
    complete() {  
        that.$modal.alert("图片已选择");  
    }  
})

操作步骤

  1. 用下面apk和账号登录
  2. 在我的里面点击气瓶回购
  3. 点击有下面的添加图片
  4. 在添加图片点击图片,进行上传,拍照片无任何反应 执行uni.chooseImage没有对三个回调方法进行回调,

预期结果

在vivo s7 x24 y32t手机app中嵌套的h5 he执行uni.chooseImage方法有回调

实际结果

无回调

bug描述

uni.chooseImage(OBJECT) 方法打包h5之后, 运行在vivo x24、vivo 7s 、vivo y32t手机的app内调用api之后,可以打开相机拍照, 拍完照片之后没有任何回调, success,fail,complete方法都接收不到回调,其他手机能正常回调。

图片


7 回复

提供一个简单地示例,我找一下相关手机试一下。


uploadImg(index) { uni.chooseImage({ success(res) { alert(“success”) }, fail(err) { alert(“fail”) }, complete() { alert(“complete”) }, }) }

很基础的代码就能验证, vivo s7 vivo x27型号的都是这样, andorid系统是10

比较着急,等回复,谢谢

chooseImage弹出从相机拍照或者从相册选择, vivo s7和x27机型从相机拍完照片之后没有任何反应, 相册拍完照之后能正常回调

针对您提到的在 uni-app 中,特别是在 vivo X24 和 vivo 7s 设备上打包 H5 运行项目时,uni.chooseImage(OBJECT) 方法无任何回调的问题,这里提供一些可能的解决方案和代码示例,以帮助您定位并解决问题。请注意,由于无法直接访问您的项目环境和设备,以下代码和思路仅供参考。

1. 检查权限配置

首先,确保在 manifest.json 中已正确配置必要的权限,特别是相册访问权限。

"mp-weixin": { // 示例,针对微信小程序,其他平台类似
    "requiredPrivateInfos": ["chooseImage"]
},
"app-plus": {
    "distribute": {
        "android": {
            "permissions": [
                "android.permission.READ_EXTERNAL_STORAGE",
                "android.permission.WRITE_EXTERNAL_STORAGE"
            ]
        }
    }
}

2. 使用 Promise 封装 uni.chooseImage

为了确保回调能够被正确处理,可以尝试使用 Promise 封装 uni.chooseImage 调用,以便更好地管理异步流程和错误处理。

function chooseImage() {
    return new Promise((resolve, reject) => {
        uni.chooseImage({
            count: 1, // 允许选择图片的数量
            sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机
            success: (res) => {
                resolve(res.tempFilePaths);
            },
            fail: (err) => {
                reject(err);
            }
        });
    });
}

// 使用
chooseImage()
    .then(imagePaths => {
        console.log('Selected images:', imagePaths);
    })
    .catch(error => {
        console.error('Failed to choose image:', error);
    });

3. 调试和日志

在调用 uni.chooseImage 前后添加日志输出,以帮助定位问题是否出在调用前后的逻辑上。

console.log('About to call chooseImage');
chooseImage()
    .then(imagePaths => {
        console.log('Selected images:', imagePaths);
    })
    .catch(error => {
        console.error('Failed to choose image:', error);
    })
    .finally(() => {
        console.log('chooseImage call completed');
    });

4. 设备兼容性检查

考虑到可能是特定设备的兼容性问题,尝试在其他品牌或型号的设备上运行相同代码,以排除设备特定的 bug。

5. 更新 uni-app 和依赖

确保您的 uni-app 框架和相关依赖库都是最新版本,有时候问题可能由旧版本的 bug 导致。

如果以上方法仍然无法解决问题,建议进一步查看 vivo 设备的开发者文档或联系 uni-app 社区寻求帮助。

回到顶部