photoAccessHelper仅提供开发者对收藏夹、视频相册、截屏和录屏相册进行相关操作。
说明:
在进行功能开发前,请开发者查阅开发准备,了解如何获取相册管理模块实例和如何申请相册管理模块功能开发相关权限。
文档中使用到PhotoAccessHelper的地方默认为使用开发准备中获取的对象,如未添加此段代码报PhotoAccessHelper未定义的错误请自行添加。
为了保证应用的运行效率,大部分photoAccessHelper的接口调用都是异步的。以下异步调用的API示例均采用Promise函数,更多方式可以查阅API参考。 如无特别说明,文档中涉及的待获取的资源均视为已经预置且在数据库中存在相应数据。如出现按照示例代码执行出现获取资源为空的情况请确认文件是否已预置,数据库中是否存在该文件的数据。
收藏夹
收藏夹属于系统相册,对图片或视频设置收藏时会自动将其加入到收藏夹中,取消收藏则会从收藏夹中移除。
获取收藏夹对象
通过PhotoAccessHelper.getAlbums接口获取收藏夹对象。
前提条件
- 获取相册管理模块photoAccessHelper实例。
- 申请相册管理模块权限’ohos.permission.READ_IMAGEVIDEO’。
开发步骤
- 设置获取收藏夹的参数为photoAccessHelper.AlbumType.SYSTEM和photoAccessHelper.AlbumSubtype.FAVORITE。
- 调用PhotoAccessHelper.getAlbums接口获取收藏夹对象。
import photoAccessHelper from '@ohos.file.photoAccessHelper';
const context = getContext(this);
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
async function example() {
try {
let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.FAVORITE);
let album: photoAccessHelper.Album = await fetchResult.getFirstObject();
console.info('get favorite album successfully, albumUri: ' + album.albumUri);
fetchResult.close();
} catch (err) {
console.error('get favorite album failed with err: ' + err);
}
}
收藏图片和视频(仅向系统应用开放)
通过MediaAssetChangeRequest.setFavorite和PhotoAccessHelper.applyChanges接口将图片或视频设置为收藏。
前提条件
- 获取相册管理模块photoAccessHelper实例。
- 申请相册管理模块权限’ohos.permission.READ_IMAGEVIDEO’和’ohos.permission.WRITE_IMAGEVIDEO’。
下面将以收藏一张图片为例。
开发步骤
- 获取指定媒体资源。
- 调用MediaAssetChangeRequest.setFavorite接口将图片设置为收藏。
- 调用PhotoAccessHelper.applyChanges接口提交收藏图片的变更请求。
import dataSharePredicates from '@ohos.data.dataSharePredicates';
import photoAccessHelper from '@ohos.file.photoAccessHelper';
const context = getContext(this);
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
async function example() {
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
predicates.equalTo(photoAccessHelper.PhotoKeys.DISPLAY_NAME, 'test.jpg');
let fetchOptions: photoAccessHelper.FetchOptions = {
fetchColumns: [],
predicates: predicates
};
try {
let photoFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
let photoAsset: photoAccessHelper.PhotoAsset = await photoFetchResult.getFirstObject();
let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(photoAsset);
let favoriteState = true;
assetChangeRequest.setFavorite(favoriteState);
await phAccessHelper.applyChanges(assetChangeRequest);
} catch (err) {
console.error('setFavorite failed with err: ' + err);
}
}
获取收藏夹中的图片和视频
先获取收藏夹对象。然后调用Album.getAssets接口获取收藏夹中的资源。
前提条件
- 获取相册管理模块photoAccessHelper实例。
- 申请相册管理模块权限’ohos.permission.READ_IMAGEVIDEO’。
下面以获取收藏夹中的一张图片为例。
开发步骤
- 获取收藏夹对象。
- 建立图片检索条件,用于获取图片。
- 调用Album.getAssets接口获取图片资源。
- 调用FetchResult.getFirstObject接口获取第一张图片。
import dataSharePredicates from '@ohos.data.dataSharePredicates';
import photoAccessHelper from '@ohos.file.photoAccessHelper';
const context = getContext(this);
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
async function example() {
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
let fetchOptions: photoAccessHelper.FetchOptions = {
fetchColumns: [],
predicates: predicates
};
try {
let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.FAVORITE);
let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
console.info('get favorite album successfully, albumUri: ' + album.albumUri);
let photoFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOptions);
let photoAsset: photoAccessHelper.PhotoAsset = await photoFetchResult.getFirstObject();
console.info('favorite album getAssets successfully, photoAsset displayName: ' + photoAsset.displayName);
photoFetchResult.close();
albumFetchResult.close();
} catch (err) {
console.error('favorite failed with err: ' + err);
}
}
取消收藏图片或视频(仅向系统应用开放)
通过MediaAssetChangeRequest.setFavorite和PhotoAccessHelper.applyChanges接口将图片或视频取消收藏。
前提条件
- 获取相册管理模块photoAccessHelper实例。
- 申请相册管理模块权限’ohos.permission.READ_IMAGEVIDEO’和’ohos.permission.WRITE_IMAGEVIDEO’。
下面以将一张图片取消收藏为例。
开发步骤
- 获取收藏夹中的图片和视频。
- 调用MediaAssetChangeRequest.setFavorite接口将图片设置为取消收藏。
- 调用PhotoAccessHelper.applyChanges接口提交取消收藏图片的变更请求。
import dataSharePredicates from '@ohos.data.dataSharePredicates';
import photoAccessHelper from '@ohos.file.photoAccessHelper';
const context = getContext(this);
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
async function example() {
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
let fetchOptions: photoAccessHelper.FetchOptions = {
fetchColumns: [],
predicates: predicates
};
try {
let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.FAVORITE);
let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
console.info('get favorite album successfully, albumUri: ' + album.albumUri);
let photoFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOptions);
let photoAsset: photoAccessHelper.PhotoAsset = await photoFetchResult.getFirstObject();
console.info('favorite album getAssets successfully, photoAsset displayName: ' + photoAsset.displayName);
let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(photoAsset);
let favoriteState = false;
assetChangeRequest.setFavorite(favoriteState);
await phAccessHelper.applyChanges(assetChangeRequest);
photoFetchResult.close();
albumFetchResult.close();
} catch (err) {
console.error('setFavorite failed with err: ' + err);
}
}
视频相册
视频相册属于系统相册,用户文件中属于视频类型的媒体文件会自动加入到视频相册中。
获取视频相册对象
通过PhotoAccessHelper.getAlbums接口获取视频相册对象。
前提条件
- 获取相册管理模块photoAccessHelper实例。
- 申请相册管理模块权限’ohos.permission.READ_IMAGEVIDEO’。
开发步骤
- 设置获取视频相册的参数为photoAccessHelper.AlbumType.SYSTEM和photoAccessHelper.AlbumSubtype.VIDEO。
- 调用PhotoAccessHelper.getAlbums接口获取视频相册。
import photoAccessHelper from '@ohos.file.photoAccessHelper';
const context = getContext(this);
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
async function example() {
try {
let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.VIDEO);
let album: photoAccessHelper.Album = await fetchResult.getFirstObject();
console.info('get video album successfully, albumUri: ' + album.albumUri);
fetchResult.close();
} catch (err) {
console.error('get video album failed with err: ' + err);
}
}
获取视频相册中的视频
先获取视频相册对象。然后调用Album.getAssets接口获取视频相册对象中的视频资源。
前提条件
- 获取相册管理模块photoAccessHelper实例。
- 申请相册管理模块权限’ohos.permission.READ_IMAGEVIDEO’。
下面以获取视频相册中的一个视频为例。
开发步骤
- 先获取视频相册对象。
- 建立视频检索条件,用于获取视频。
- 调用Album.getAssets接口获取视频资源。
- 调用FetchResult.getFirstObject接口获取第一个视频。
import dataSharePredicates from '@ohos.data.dataSharePredicates';
import photoAccessHelper from '@ohos.file.photoAccessHelper';
const context = getContext(this);
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
async function example() {
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
let fetchOptions: photoAccessHelper.FetchOptions = {
fetchColumns: [],
predicates: predicates
};
try {
let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.VIDEO);
let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
console.info('get video album successfully, albumUri: ' + album.albumUri);
let videoFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOptions);
let photoAsset: photoAccessHelper.PhotoAsset = await videoFetchResult.getFirstObject();
console.info('video album getAssets successfully, photoAsset displayName: ' + photoAsset.displayName);
videoFetchResult.close();
albumFetchResult.close();
} catch (err) {
console.error('video failed with err: ' + err);
}
}
截屏和录屏相册(仅向系统应用开放)
截屏和录屏相册属于系统相册,用户文件中属于截屏和录屏的媒体文件会自动加入到截屏和录屏相册中。
获取截屏和录屏相册对象
通过PhotoAccessHelper.getAlbums接口获取截屏和录屏相册对象。
前提条件
- 获取相册管理模块photoAccessHelper实例。
- 申请相册管理模块权限’ohos.permission.READ_IMAGEVIDEO’。
开发步骤
- 设置获取截屏和录屏相册的参数为photoAccessHelper.AlbumType.SYSTEM和photoAccessHelper.AlbumSubtype.SCREENSHOT。
- 调用PhotoAccessHelper.getAlbums接口获取截屏和录屏相册。
import photoAccessHelper from '@ohos.file.photoAccessHelper';
const context = getContext(this);
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
async function example() {
try {
let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.SCREENSHOT);
let album: photoAccessHelper.Album = await fetchResult.getFirstObject();
console.info('get screenshot album successfully, albumUri: ' + album.albumUri);
fetchResult.close();
} catch (err) {
console.error('get screenshot album failed with err: ' + err);
}
}
获取截屏和录屏相册中的媒体资源
先获取截屏和录屏相册对象。然后调用Album.getAssets接口获取截屏和录屏相册对象中的媒体资源。
前提条件
- 获取相册管理模块photoAccessHelper实例。
- 申请相册管理模块权限’ohos.permission.READ_IMAGEVIDEO’。
下面以获取截屏和录屏相册中的一个媒体资源为例。
开发步骤
- 先获取截屏和录屏相册对象。
- 建立检索条件,用于获取媒体资源。
- 调用Album.getAssets接口获取媒体资源。
- 调用FetchResult.getFirstObject接口获取第一个媒体资源。
import dataSharePredicates from '@ohos.data.dataSharePredicates';
import photoAccessHelper from '@ohos.file.photoAccessHelper';
const context = getContext(this);
let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
async function example() {
let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
let fetchOptions: photoAccessHelper.FetchOptions = {
fetchColumns: [],
predicates: predicates
};
try {
let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.SCREENSHOT);
let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
console.info('get screenshot album successfully, albumUri: ' + album.albumUri);
let screenshotFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOptions);
let photoAsset: photoAccessHelper.PhotoAsset = await screenshotFetchResult.getFirstObject();
console.info('screenshot album getAssets successfully, photoAsset displayName: ' + photoAsset.displayName);
screenshotFetchResult.close();
albumFetchResult.close();
} catch (err) {
console.error('screenshot album failed with err: ' + err);
}
}
如果大家还没有掌握鸿蒙,现在想要在最短的时间里吃透它,我这边特意整理了《鸿蒙语法ArkTS、TypeScript、ArkUI、教学视频》以及《鸿蒙生态应用开发白皮书V2.0PDF》《鸿蒙开发学习手册》(共计890页)鸿蒙开发资料等…希望对大家有所帮助:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3
鸿蒙语法ArkTS、TypeScript、ArkUI等…视频教程:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3
OpenHarmony APP开发教程步骤:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3
鸿蒙生态应用开发白皮书V2.0PDF:https://docs.qq.com/doc/DZVVkRGRUd3pHSnFG
南北双向高工技能基础:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3
应用开发中高级就业技术:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3
全网首发-工业级 南向设备开发就业技术:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3
《鸿蒙开发学习手册》:
如何快速入门:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3
1.基本概念
2.构建第一个ArkTS应用
3.……
开发基础知识:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3
1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……
基于ArkTS 开发:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3
1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……