HarmonyOS photoAccessHelper如何获取所有相册的信息

目前在实现一个自定义媒体相册,想拿到所有相册的名称,但是能拿到的相册信息不完整。非HarmonyOS是能正常拿到所有相册信测的,HarmonyOS的只能拿到photoAccessHelper.AlbumType.USER的相册信息,无法拿到系统自动分类的相册信息,而且数目也不正确。这个是什么原因引起的呢?HarmonyOS的视频的查询规则:

async aboutToAppear(): Promise<void> { 
  const context = getContext(this); 
  const phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); 
  const predicates = new dataSharePredicates.DataSharePredicates(); 
  const fetchOptions: photoAccessHelper.FetchOptions = { 
    fetchColumns: [], 
    predicates 
  } 
  const sysFetchResult = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.ANY, fetchOptions); 
  const userFetchResult = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.ANY, fetchOptions); 
  console.info('fetchResult', sysFetchResult.getCount()) 
  console.info('fetchResult', userFetchResult.getCount()) 
  const sysAlbum = await this.fetchResultIterator(sysFetchResult); 
  const userAlbum = await this.fetchResultIterator(userFetchResult); 
  sysAlbum.forEach(album => { 
  console.info('sysAlbumName', album.albumName); 
}) 
userAlbum.forEach(album => { 
  console.info('userAlbumName', album.albumName); 
}) 
} 
async fetchResultIterator(fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album>, albumList: photoAccessHelper.Album[] = []): Promise<photoAccessHelper.Album[]> { 
  if (fetchResult.isAfterLast()) return albumList; 
  const getPhotoObject = !albumList.length ? fetchResult.getFirstObject() : fetchResult.getNextObject(); 
  const album = await getPhotoObject; 
  albumList.push(album); 
  return this.fetchResultIterator(fetchResult, albumList) 
 
}
  • 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.
  • 29.
HarmonyOS
2024-08-22 20:24:32
1280浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
zxjiu

phAccessHelper.getAlbums只能获取用户创建的相册和系统预置相册。而系统预置相册,只有两个,根据类型分别是FAVORITE和Video。系统图库中的【图片】相册并不是一个物理意思上的相册文件,它是系统图库中图片的合集,所以通过phAccessHelper.getAlbums获取相册对象是无法获取到该合集的。系统相册资源包括:收藏夹、视频相册、截屏和录屏相册。可参考文档:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/media/medialibrary/photoAccessHelper-systemAlbum-guidelines.md#%E7%B3%BB%E7%BB%9F%E7%9B%B8%E5%86%8C%E8%B5%84%E6%BA%90%E4%BD%BF%E7%94%A8%E6%8C%87%E5%AF%BC

系统截屏生成的图片是可以在图片相册中获取到,可以使用phAccessHelper.getAssets获取到;系统录屏生成的视频文件可以在视频相册中获取。

分享
微博
QQ
微信
回复
2024-08-23 14:09:19
相关问题
HarmonyOS如何获取用户相册所有目录?
3054浏览 • 1回复 待解决
HarmonyOS 如何获取所有路由栈里信息
1734浏览 • 1回复 待解决
如何获取router push所有page?
1030浏览 • 0回复 待解决
HarmonyOS 如何获取系统相册数据
576浏览 • 1回复 待解决
如何获取对象所有方法
1330浏览 • 1回复 待解决
HarmonyOS 如何遍历获取page中所有view
487浏览 • 1回复 待解决
HarmonyOS 如何获取应用信息
1073浏览 • 1回复 待解决
HarmonyOS 如何获取对应设备信息
520浏览 • 1回复 待解决