HarmonyOS photoAccessHelper如何获取到所有相册的图片?

手机的图库默认叫“图片”,我将系统图库复制了一份“新建相册 1”,使用phAccessHelper.getAssets却只能获取到默认的图库。我需要一个获取所有图库的代码片段。

HarmonyOS
2024-12-27 16:58:03
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
zbw_apple

该问题可以参考官网文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/photoaccesshelper-overview-V5

通过photoAccessHelper,

代码如下:

let context = getContext(this);
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
let albumPredicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
let albumName: photoAccessHelper.AlbumKeys = photoAccessHelper.AlbumKeys.ALBUM_NAME;
albumPredicates.equalTo(albumName, ‘albumName’);
let albumFetchOptions: photoAccessHelper.FetchOptions = {
  fetchColumns: [],
  predicates: albumPredicates
};

let photoPredicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
let photoFetchOptions: photoAccessHelper.FetchOptions = {
  fetchColumns: [],
  predicates: photoPredicates
};

try {
  let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions);
  let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
  console.info('getAlbums successfully, albumName: ’ + album.albumName);
  let photoFetchResult = await album.getAssets(photoFetchOptions);
  let photoAsset = await photoFetchResult.getFirstObject();
  console.info('album getAssets successfully, albumName: ’ + photoAsset.displayName);
  albumFetchResult.close();
  photoFetchResult.close();
} catch (err) {
  console.error('album getAssets failed with err: ’ + JSON.stringify(err));
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.

同时无法获取相机中的图片,添加动态权限后可以解决上面的报错,但是仍然无法获取相机中的图片。主要是因为相机相册是系统接口,无法通过getAlbums获取,只能通过picker获取。如果不想使用picker,想自定义一个页面就只能访问自己的相册,不能访问系统相册。

如果用户保存照片到用户相册中,系统相册并不会新增一份,系统相册不是一个真实的相册,它其实是图库内所有相册图片文件的集合,当前只支持将系统图库中的图片文件添加到用户相册

分享
微博
QQ
微信
回复
2024-12-27 18:00:03
相关问题
HarmonyOS如何获取用户相册所有目录?
3056浏览 • 1回复 待解决
HarmonyOS photoAccessHelper选择图片问题
559浏览 • 1回复 待解决
HarmonyOS App获取相册图片问题
836浏览 • 1回复 待解决
HarmonyOS 获取相册图片和视频ID
586浏览 • 1回复 待解决