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底层实现机制导致的。
解决方案:
- 可以单独处理权限请求,在调用chooseImage前先检查权限:
uni.authorize({
scope: 'scope.camera',
success() {
uni.chooseImage({
// 参数配置
});
},
fail() {
// 处理权限被拒绝的情况
}
});
- 或者将sourceType分开处理,先检查相机权限,失败后再调用相册:
uni.chooseImage({
sourceType: ['camera'],
fail() {
uni.chooseImage({
sourceType: ['album']
});
}
});
- 也可以监听权限变化事件:
uni.onNeedPrivacyAuthorization(resolve => {
// 处理权限请求
});