HarmonyOS 鸿蒙Next系统相册权限访问问题
HarmonyOS 鸿蒙Next系统相册权限访问问题
在打开PhotoViewPicker前已申请了“ohos.permission.READ_MEDIA”权限,当打开PhotoViewPicker后,再点击拍照功能时没有自动申请“ohos.permission.CAMERA”权限就直接打开的相机。存在合规风险
2 回复
使用PhotoViewPicker,打开的是图库基础应用,实际是使用了系统预置的文件选择器的能力,此时无需申请对应的权限即可使用。
比如通过PhotoAccessHelper的PhotoViewPicker选择文件可以使用如下代码:
参考文档:选择用户文件-选择与保存用户文件-用户文件-Core File Kit(文件基础服务)-应用框架 - 华为HarmonyOS开发者 (huawei.com)
比如通过PhotoAccessHelper的PhotoViewPicker选择文件可以使用如下代码:
savePhoto() {
let selectUris: Array<string> = []
// 从图库中选择一张图片
let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions()
PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE
PhotoSelectOptions.maxSelectNumber = 1
let photoPicker = new photoAccessHelper.PhotoViewPicker()
photoPicker.select(PhotoSelectOptions).then(async (PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => {
selectUris = PhotoSelectResult.photoUris
console.info(`------>PhotoViewPicker.select uri:` + JSON.stringify(PhotoSelectResult))
}).catch((err: BusinessError) => {
console.error(`------>PhotoViewPicker.select failed with error:${err.code},${err.message}`)
})
}
参考文档:选择用户文件-选择与保存用户文件-用户文件-Core File Kit(文件基础服务)-应用框架 - 华为HarmonyOS开发者 (huawei.com)
更多关于HarmonyOS 鸿蒙Next系统相册权限访问问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对HarmonyOS 鸿蒙Next系统相册权限访问问题,以下是一些可能的解决方案:
-
检查权限声明:
- 确保应用在
manifest.json
文件中已声明访问相册的权限,如ohos.permission.READ_MEDIA
和ohos.permission.WRITE_MEDIA
。
- 确保应用在
-
动态请求权限:
- 从鸿蒙系统的某个版本开始,除了声明权限外,还需在代码中动态请求权限。使用
requestPermissionsFromUser
方法请求权限,并在尝试访问相册前检查用户是否已授予权限。
- 从鸿蒙系统的某个版本开始,除了声明权限外,还需在代码中动态请求权限。使用
-
使用系统Picker:
- 应用可拉起系统Picker组件(如照片选择器),由用户在Picker上选择照片等资源。由于此过程由用户操作且可感知,因此无需再申请权限。但注意,此时应用获取到的读取资源权限是临时的。
-
检查系统更新:
- 确保鸿蒙Next系统为最新版本,因为系统更新可能修复了与相册权限相关的bug。
-
清除缓存和重启设备:
- 清除相机及相册应用的缓存,并重启设备,以解决可能由系统缓存或临时错误导致的权限问题。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。