uni-app 三星手机选择相册后调用uniCloud.chooseAndUploadFile报错 chooseAndUploadFile:fail No Permission
uni-app 三星手机选择相册后调用uniCloud.chooseAndUploadFile报错 chooseAndUploadFile:fail No Permission
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 10 | HBuilderX |
操作步骤:
【报Bug】三星手机选择相册后调用uniCloud.chooseAndUploadFile报错:chooseAndUploadFile:fail No Permission. (直接相机拍摄是正常的,就是选择相册就报错)
预期结果:
三星手机应该支持相册选择上传
实际结果:
三星手机选择相册后报错,见附件。
bug描述:
【报Bug】三星手机选择相册后调用uniCloud.chooseAndUploadFile报错:chooseAndUploadFile:fail No Permission. (直接相机拍摄是正常的,就是选择相册就报错)
在处理uni-app在三星手机上选择相册后调用uniCloud.chooseAndUploadFile
出现chooseAndUploadFile:fail No Permission
错误时,这通常意味着应用没有获得必要的权限来访问相册或执行文件上传操作。以下是一些可能帮助解决问题的代码示例和步骤,主要关注权限请求和文件上传的实现。
1. 检查并请求权限
在Android设备上,尤其是三星等定制Android系统,可能需要显式请求存储权限。你可以在你的uni-app项目中添加代码来请求这些权限。
在manifest.json
中添加必要的权限
"mp-weixin": {
"appid": "__UNI__XXXXXX",
"permission": {
"scope.userInfo": {
"desc": "你的位置信息将用于小程序相册展示效果"
},
"scope.userLocation": {
"desc": "你的位置信息将用于小程序相册展示效果"
}
// 添加或确认包含以下权限
,"android.permission.READ_EXTERNAL_STORAGE": {
"desc": "需要读取外部存储权限以访问相册"
},
"android.permission.WRITE_EXTERNAL_STORAGE": {
"desc": "需要写入外部存储权限以上传文件"
}
}
}
在代码中动态请求权限(适用于HBuilderX 3.1.0+)
if (uni.getSystemInfoSync().platform === 'android') {
uni.authorize({
scope: 'scope.writePhotosAlbum,scope.readWritePhotosAlbum',
success() {
console.log('权限请求成功');
// 尝试再次调用chooseAndUploadFile
uploadFile();
},
fail() {
console.log('权限请求失败');
}
});
} else {
// 直接调用
uploadFile();
}
function uploadFile() {
uniCloud.chooseAndUploadFile({
fileType: ['image'],
count: 1,
success: function (res) {
console.log('上传成功', res);
},
fail: function (err) {
console.error('上传失败', err);
}
});
}
2. 确认uniCloud配置
确保你的uniCloud配置正确,包括云函数和云存储的设置。特别是云存储的bucket和权限设置,需要允许上传操作。
3. 调试与测试
- 在三星手机上安装应用,并检查是否有权限请求弹窗。
- 如果弹窗出现,确保用户授予了存储权限。
- 如果问题依旧,尝试在真机调试模式下查看更详细的错误日志。
通过上述步骤,你应该能够解决在三星手机上调用uniCloud.chooseAndUploadFile
时遇到的权限问题。如果问题仍然存在,可能需要进一步检查uni-app和uniCloud的文档,或联系DCloud官方支持。