HarmonyOS鸿蒙Next中使用安全控件保存图片或视频失败

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS鸿蒙Next中使用安全控件保存图片或视频失败

  • 问题:视频长按,在弹出保存弹框点击保存按钮不生效,或者调用 showAssetsCreationDialog 报错

  • 背景:安全控件用于保护应用的数据和操作安全,但保存功能的失败会影响用户对数据的保存和管理,需要解决此问题以确保应用的安全和功能完整性。

3 回复

需先下载到沙箱,再保存视频/图片到图库相册。

如下是图片保存到图库的demo,可以参考使用,保存视频需在调用createAsset方法时需将参数修改为视频类型,创建好视频资源后,将沙箱中下载好的视频资源通过文件写入的方式,写到创建好的视频资源里。

SaveButton(this.saveButtonOptions)// 创建安全控件按钮 .onClick(async (event, result: SaveButtonOnClickResult) => { if (result == SaveButtonOnClickResult.SUCCESS) { if (this.finalPixelMap) { try { // 1、使用安全控件创建文件 let phAccessHelper: photoAccessHelper.PhotoAccessHelper = photoAccessHelper.getPhotoAccessHelper(this.context); let options: photoAccessHelper.CreateOptions = { title: Date.now().toString() }; // createAsset的调用需要ohos.permission.READ_IMAGEVIDEO和ohos.permission.WRITE_IMAGEVIDEO的权限 let photoUri: string = await phAccessHelper.createAsset(photoAccessHelper.PhotoType.IMAGE, ‘png’, options); console.info('CameraDemo createAsset successfully, photoUri: ’ + photoUri); // 2.1、方式一:通过文件管理写入文件 let file: fileIo.File = fileIo.openSync(photoUri, fileIo.OpenMode.WRITE_ONLY); fileIo.writeSync(file.fd, this.buffer); fileIo.closeSync(file); promptAction.showToast({message: 保存成功}) } catch (error) { let err = error as BusinessError; console.error(CameraDemo savePicture error: ${JSON.stringify(err)}); promptAction.showToast({ message: 保存失败 }) } } } else { console.error(‘CameraDemo SaveButtonOnClickResult createAsset failed.’); promptAction.showToast({ message: 保存失败 }) } setTimeout(() => { this.hasPicture = false; this.finalPixelMap = undefined; }, 1000) })


在安全控件里调用createAsset ,会获取10秒的临时权限

[https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/savebutton-V5](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/savebutton-V5)

更多关于HarmonyOS鸿蒙Next中使用安全控件保存图片或视频失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,使用安全控件保存图片或视频失败可能与以下原因有关:

  1. 权限问题:确保应用已获取必要的存储权限,如ohos.permission.READ_MEDIAohos.permission.WRITE_MEDIA

  2. 路径问题:检查保存路径是否正确,路径中不能包含非法字符或特殊符号。

  3. 文件系统限制:鸿蒙系统对文件系统有特定限制,确保保存的文件类型和大小符合系统要求。

  4. 安全控件配置:检查安全控件的配置是否正确,如加密方式、文件格式等是否与系统兼容。

  5. 资源冲突:确保保存操作没有与其他应用或系统进程发生资源冲突。

  6. 系统版本兼容性:检查使用的鸿蒙Next版本是否与安全控件的要求一致,可能存在版本不兼容的问题。

  7. 日志分析:查看系统日志或应用日志,查找具体的错误信息,以便进一步定位问题。

  8. 存储空间:确保设备有足够的存储空间来保存图片或视频。

  9. 文件权限:确保保存的文件权限设置正确,避免因权限不足导致保存失败。

通过以上步骤,可以初步排查并解决在HarmonyOS鸿蒙Next中使用安全控件保存图片或视频失败的问题。

在HarmonyOS鸿蒙Next中,使用安全控件保存图片或视频失败,可能由于以下原因:

  • 权限问题:确保应用已获取ohos.permission.WRITE_MEDIA权限,并在config.json中声明。
  • 存储路径:检查保存路径是否正确,建议使用getExternalStorageDir()获取外部存储路径。
  • 文件格式:确认文件格式支持,如.jpg.png.mp4
  • 控件配置:确保安全控件已正确初始化,并调用相关API如saveMedia()
  • 日志排查:查看Logcat输出,定位具体错误信息。

如问题仍未解决,建议参考官方文档或联系技术支持。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!