HarmonyOS 鸿蒙Next 沙盒中的图片和视频移动/拷贝到系统相册中

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

HarmonyOS 鸿蒙Next 沙盒中的图片和视频移动/拷贝到系统相册中

需求是将沙盒中的图片和视频移动/拷贝到系统相册中
应用中生成了一张图片/视频文件,需要在系统相册中能看到这图片和视频,fs.moveFile只支持沙盒内文件路径的移动,是否有其他方案,是否有相关代码demo
 

2 回复

操作相册(读取或写入)需要用户授权,首先要配置权限 ,然后弹窗向用户申请权限 ,再复制图片进去

cke_1420.png

简短示例代码如下,可以参考一下

//2.创建imagePacker
         let imagePacker = image.createImagePacker()
         //3.packing一下,得到一个arrayBuffer
         let arrayBuffer = await imagePacker.packing(pixelMap, {
             quality: 100,
             format: "image/png"
         });
         //4.得到相册的helper实例
         let helper = photoAccessHelper.getPhotoAccessHelper(this.context);
         //5.创建图片的临时地址
         let destPath = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, "png");
         //6.得到这个临时的fd
         let destPathFile = fs.openSync(destPath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE);
         //7.定入到文件
         fs.writeSync(destPathFile.fd, arrayBuffer);
         //8.关闭文件
         fs.closeSync(destPathFile);
         //9.释放这个资源
         await helper.release();
     promptAction.showDialog({
         message: <span class="hljs-string">"保存成功"</span>
     })

更多关于HarmonyOS 鸿蒙Next 沙盒中的图片和视频移动/拷贝到系统相册中的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next沙盒环境中,将图片和视频移动或拷贝到系统相册涉及访问系统相册的权限和数据传输机制。以下是实现该功能的基本步骤:

  1. 权限申请:首先,确保应用已声明并获得了访问存储和相册的必要权限。这包括读写外部存储权限和访问媒体库的权限。

  2. 获取沙盒路径:通过应用沙盒接口获取图片和视频文件的存储路径。

  3. 构建MediaStore URI:HarmonyOS提供了MediaStore API用于管理媒体文件。通过MediaStore API,可以构建目标相册的URI。

  4. 数据迁移:使用文件流或ContentResolver将沙盒中的图片和视频文件复制到MediaStore指定的URI中。这一步涉及读取沙盒文件并写入MediaStore管理的媒体文件。

  5. 通知媒体扫描:复制完成后,通知系统媒体扫描器扫描新添加的媒体文件,确保它们能够立即显示在相册中。

请注意,实际操作中需确保文件路径、权限管理、URI构建和数据传输过程的正确性。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部