相册备份功能,如何获取图库所有图片视频信息?(HarmonyOS 鸿蒙Next)
相册备份功能,如何获取图库所有图片视频信息?(HarmonyOS 鸿蒙Next) 相册备份功能,如何获取图库所有图片视频信息?
2 回复
开发者您好,NEXT版本中系统图库中的【图片】相册不是一个物理意思上的相册文件,它是系统图库中图片的合集。
系统相册资源包括:收藏夹、视频相册、截屏和录屏相册;其中截屏和录屏相册仅向系统应用开放。
这个截屏和录屏指的是相册,截屏和录屏相册对象仅系统应用可以获取。
系统截屏生成的图片是可以在图片相册中获取到,可以使用phAccessHelper.getAssets获取到;系统录屏生成的视频文件可以在视频相册中获取。
您可参考以下demo获取相册中的图片信息:
function getPhoto(context:Context){
let atManager = abilityAccessCtrl.createAtManager();
const permissions: Array<Permissions> = ['ohos.permission.READ_MEDIA',"ohos.permission.WRITE_MEDIA"];
atManager.requestPermissionsFromUser(context, permissions).then(async (data) => { //需要用户允许授权图库权限
let grantStatus: Array<number> = data.authResults;
let length: number = grantStatus.length;
for (let i = 0; i < length; i++) {
if (grantStatus[i] === 0) { //用户同意权限之后进行的操作
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); //context为getContext获取
console.info('albumGetAssetsDemoPromise');
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); //筛选条件
let predicates1: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); //筛选条件
let albumName: photoAccessHelper.AlbumKeys = photoAccessHelper.AlbumKeys.ALBUM_NAME;
let title: photoAccessHelper.PhotoKeys = photoAccessHelper.PhotoKeys.TITLE;
// predicates.equalTo(albumName, 'test2');
let albumFetchOptions: photoAccessHelper.FetchOptions = {
fetchColumns: [],
predicates: predicates
};
let fetchOption: photoAccessHelper.FetchOptions = {
fetchColumns: ['title'],
predicates: predicates1
};
const albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.
getAlbums(photoAccessHelper.AlbumType.USER , photoAccessHelper.AlbumSubtype.ANY, albumFetchOptions); //获取满足条件的相册列表,如果没加筛选条件就是所有相册
while(await albumList.isAfterLast()!=null){
console.info('photoAsset displayName: 数量',albumList.getCount());
let album: photoAccessHelper.Album = await albumList.getNextObject(); //获取下一个
console.info('photoAsset displayName: ', album.albumName); //名字
console.info('photoAsset displayName: ', album.albumSubtype); //名字
console.info('photoAsset displayName:------------------------------------------------------- ')
album.getAssets(fetchOption).then(async (albumFetchResult) => {
while (!albumFetchResult.isAfterLast()) { //循环打印相册中的图片
let photoAsset: photoAccessHelper.PhotoAsset = await albumFetchResult.getNextObject();
let photoTitle = photoAsset.get(title);
console.info(`xxxwidth is ${JSON.stringify(photoTitle)}`);
// console.info('photoAsset displayName: ', photoAsset.uri); //图片视频资源uri
// if (photoAsset === undefined) {
// console.error('asset not exist');
// return;
// }
// phAccessHelper.createDeleteRequest([photoAsset.uri]);
// console.info('createDeleteRequest successfully');
}
console.info('photoAsset displayName:------------------------------------------------------- ')
}).catch((err: BusinessError) => {
console.error('album getPhotoAssets failed with error: ' + err);
});
}
}
else {
// 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
return;
}
}
// 授权成功
}).catch((err:BusinessError) => {
console.error(`requestPermissionsFromUser failed, code is ${err.code}, message is ${err.message}`);
})
}
更多关于相册备份功能,如何获取图库所有图片视频信息?(HarmonyOS 鸿蒙Next)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙Next)中,获取图库中所有图片和视频信息可以通过PhotoAccessHelper
模块实现。首先,使用PhotoAccessHelper
的openPhotoPicker
方法打开图库选择器,获取用户选择的媒体文件。然后,通过PhotoAccessHelper
的getAssets
方法获取所有媒体文件的元数据,包括文件名、路径、创建时间等。具体步骤如下:
- 引入
PhotoAccessHelper
模块:
import photoAccessHelper from '@ohos.file.photoAccessHelper';
- 打开图库选择器并获取用户选择的媒体文件:
let photoPicker = new photoAccessHelper.PhotoViewPicker();
photoPicker.select().then((photoSelectResult) => {
// 处理用户选择的媒体文件
});
- 获取所有媒体文件的元数据:
let photoAccessHelper = photoAccessHelper.getPhotoAccessHelper();
photoAccessHelper.getAssets().then((assets) => {
// 处理获取到的媒体文件元数据
});
通过以上步骤,可以获取图库中所有图片和视频的信息。