HarmonyOS鸿蒙Next中photoAccessHelper如何获取所有相册的信息
HarmonyOS鸿蒙Next中photoAccessHelper如何获取所有相册的信息
在NEXT鸿蒙系统只能拿到photoAccessHelper.AlbumType.USER
的相册信息,无法拿到系统自动分类的相册信息,而且数目也不正确。
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)
}
更多关于HarmonyOS鸿蒙Next中photoAccessHelper如何获取所有相册的信息的实战教程也可以访问 https://www.itying.com/category-93-b0.html
-
phAccessHelper.getAlbums只能获取用户创建的相册和系统预置相册。而系统预置相册,只有两个,根据类型分别是FAVORITE和VIDEO。
-
NEXT版本中系统图库中的【图片】相册并不是一个物理意思上的相册文件,它是系统图库中图片的合集,所以通过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获取到;系统录屏生成的视频文件可以在视频相册中获取。
更多关于HarmonyOS鸿蒙Next中photoAccessHelper如何获取所有相册的信息的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,使用photoAccessHelper
获取所有相册信息可以通过以下步骤实现:
-
获取PhotoAccessHelper实例: 首先,需要获取
PhotoAccessHelper
的实例,用于后续操作。const photoAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
-
获取相册列表: 使用
PhotoAccessHelper
的getAlbums
方法获取所有相册的列表。该方法返回一个Promise
,解析后可以得到相册的数组。photoAccessHelper.getAlbums().then((albums) => { // albums是一个包含所有相册信息的数组 }).catch((error) => { console.error("获取相册列表失败: ", error); });
-
遍历相册信息: 获取到相册数组后,可以遍历每个相册对象,获取相册的详细信息,如相册名称、相册ID、相册中的照片数量等。
albums.forEach((album) => { console.log("相册名称: ", album.albumName); console.log("相册ID: ", album.albumId); console.log("照片数量: ", album.count); });
在HarmonyOS鸿蒙Next中,使用photoAccessHelper
获取所有相册信息,首先需要获取PhotoAccessHelper
实例,然后通过getAlbums
方法查询相册。示例如下:
import photoAccessHelper from '@ohos.file.photoAccessHelper';
async function getAllAlbums() {
const photoHelper = photoAccessHelper.getPhotoAccessHelper(context);
const albums = await photoHelper.getAlbums(photoAccessHelper.AlbumType.USER);
return albums;
}
此代码会返回用户相册的列表,每个相册包含名称、ID等信息。