HarmonyOS 应用如何创建一个归属于应用的相册呢

应用需要创建并管理一个归属于应用的相册,用于管理应用创建的图片和视频文件。是否有相应的接口可以实现创建指定的相册呢?

HarmonyOS
2024-12-19 15:37:51
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

相册管理中可以通过createAsset创建图片或视频资源。

import photoAccessHelper from '@ohos.file.photoAccessHelper';
import { fileIo } from '@kit.CoreFileKit';

private context = getContext(this);
private phAccessHelper = photoAccessHelper.getPhotoAccessHelper(this.context);

//创建相册图片文件
async create() {
  try {
    let fileName = new Date().getTime().toString();
    let options: photoAccessHelper.CreateOptions = {
      title: fileName
    };
    // createAsset的调用需要ohos.permission.READ_IMAGEVIDEO和ohos.permission.WRITE_IMAGEVIDEO的权限
    let photoUri: string = await this.phAccessHelper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'png', options);
    console.info(TAG, 'createAsset successfully, photoUri: ' + photoUri);
    let filePath = this.resourcesFile2SandboxFile($r('app.media.test'));
    // let filePath = getContext(this).filesDir + '/test.png';
    let destFile: fileIo.File = fileIo.openSync(photoUri, fileIo.OpenMode.READ_WRITE);
    fileIo.copyFileSync(filePath, destFile.fd);
    fileIo.closeSync(destFile);
    console.info(TAG, 'write successfully, photoUri: ' + photoUri);
    promptAction.showToast({ message: '创建成功' })
  } catch (err) {
    console.error(TAG, 'addAssets failed with err: ' + err);
    promptAction.showToast({ message: `创建失败:${JSON.stringify(err)}` })
  }
}

resourcesFile2SandboxFile(resourcesPath: Resource) {
  // 1、读取文件
  let uint8Array: Uint8Array = getContext().resourceManager.getMediaContentSync(resourcesPath);
  let fileName = new Date().getTime().toString() + '.png'
  // 2、创建沙箱文件
  let filePath = getContext(this).filesDir + `/${fileName}`;
  if (fileIo.accessSync(filePath)) {
    fileIo.unlinkSync(filePath);
  }
  let file: fileIo.File = fileIo.openSync(filePath, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
  // 3、resources下文件写入沙箱文件
  fileIo.writeSync(file.fd, uint8Array.buffer as ArrayBuffer);
  // 4、关闭文件
  fileIo.closeSync(file);
  return filePath;
}
分享
微博
QQ
微信
回复
2024-12-19 18:51:28
相关问题
如何创建一个ArkTS应用项目?
1737浏览 • 1回复 待解决
如何创建一个window?
1332浏览 • 1回复 待解决
如何开发一个纯后台应用
3367浏览 • 1回复 待解决
如何创建一个worker线程
1964浏览 • 1回复 待解决
HarmonyOS 如何创建一个单线程?
1126浏览 • 1回复 待解决
求告知如何创建一个地图
1448浏览 • 1回复 待解决
如何创建一个pgsql只读账户?
3389浏览 • 2回复 待解决
HarmonyOS 怎么清除掉一个应用数据
3160浏览 • 1回复 待解决
HarmonyOS 如何创建一个完全透明页面
1088浏览 • 1回复 待解决