uni-app vivo x24、vivo 7s打包h5运行项目中 uni.chooseImage(OBJECT) 无任何回调
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("图片已选择");
}
})
操作步骤
- 用下面apk和账号登录
- 在我的里面点击气瓶回购
- 点击有下面的添加图片
- 在添加图片点击图片,进行上传,拍照片无任何反应 执行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方法都接收不到回调,其他手机能正常回调。
提供一个简单地示例,我找一下相关手机试一下。
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 社区寻求帮助。