# @ohos.file.photoAccessHelper (相册管理模块) 该模块提供相册管理模块能力,包括创建相册以及访问、修改相册中的媒体数据信息等。 > **说明:** > > 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 ## 导入模块 ```ts import { photoAccessHelper } from '@kit.MediaLibraryKit'; ``` ## photoAccessHelper.getPhotoAccessHelper getPhotoAccessHelper(context: Context): PhotoAccessHelper 获取相册管理模块的实例,用于访问和修改相册中的媒体文件。 **模型约束**: 此接口仅可在Stage模型下使用。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------- | ---- | -------------------------- | | context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | **返回值:** | 类型 | 说明 | | ----------------------------- | :---- | | [PhotoAccessHelper](#photoaccesshelper) | 相册管理模块的实例。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | **示例:** ```ts //此处获取的phAccessHelper实例为全局对象,后续使用到phAccessHelper的地方默认为使用此处获取的对象,如未添加此段代码报phAccessHelper未定义的错误请自行添加 let context = getContext(this); let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); ``` ## PhotoAccessHelper ### getAssets getAssets(options: FetchOptions, callback: AsyncCallback<FetchResult<PhotoAsset>>): void 获取图片和视频资源,使用callback方式返回结果。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.READ_IMAGEVIDEO 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来查询指定uri对应的图片或视频资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------ | ---- | ------------------------- | | options | [FetchOptions](#fetchoptions) | 是 | 图片和视频检索选项。 | | callback | AsyncCallback<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | 是 | callback返回图片和视频检索结果集。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('getAssets'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => { if (fetchResult !== undefined) { console.info('fetchResult success'); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); if (photoAsset !== undefined) { console.info('photoAsset.displayName : ' + photoAsset.displayName); } } else { console.error(`fetchResult fail with error: ${err.code}, ${err.message}`); } }); } ``` ### getAssets getAssets(options: FetchOptions): Promise<FetchResult<PhotoAsset>> 获取图片和视频资源,使用Promise方式返回结果。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.READ_IMAGEVIDEO 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来查询指定uri对应的图片或视频资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------------------- | ---- | ---------------- | | options | [FetchOptions](#fetchoptions) | 是 | 图片和视频检索选项。 | **返回值:** | 类型 | 说明 | | --------------------------- | -------------- | | Promise<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | Promise对象,返回图片和视频数据结果集。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('getAssets'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; try { let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); if (fetchResult !== undefined) { console.info('fetchResult success'); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); if (photoAsset !== undefined) { console.info('photoAsset.displayName :' + photoAsset.displayName); } } } catch (err) { console.error(`getAssets failed, error: ${err.code}, ${err.message}`); } } ``` ### getBurstAssets12+ getBurstAssets(burstKey: string, options: FetchOptions): Promise<FetchResult<PhotoAsset>> 获取连拍照片资源,使用Promise方式返回结果。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.READ_IMAGEVIDEO **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------------------- | ---- | ---------------- | | burstKey | string | 是 | 一组连拍照片的唯一标识:uuid(可传入[PhotoKeys](#photokeys)的BURST_KEY) | | options | [FetchOptions](#fetchoptions) | 是 | 连拍照片检索选项。 | **返回值:** | 类型 | 说明 | | --------------------------- | -------------- | | Promise<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | Promise对象,返回连拍照片数据结果集。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 201 | Permission denied. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | Internal system error. | **示例:** ```ts import { photoAccessHelper } form '@kit.MediaLibraryKit'; import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('getBurstAssets'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; // burstKey为36位的uuid,可以根据photoAccessHelper.PhotoKeys获取。 let burstKey: string = "e719d696-09fa-44f8-ec3f215aa62a"; try { let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getBurstAssets(burstKey, fetchOptions); if (fetchResult !== undefined) { console.info('fetchResult success'); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); if (photoAsset !== undefined) { console.info('photoAsset.displayName :' + photoAsset.displayName); } } } catch (err) { console.error(`getBurstAssets failed, error: ${err.code}, ${err.message}`); } } ``` ### createAsset createAsset(photoType: PhotoType, extension: string, options: CreateOptions, callback: AsyncCallback<string>): void 指定待创建的文件类型、后缀和创建选项,创建图片或视频资源,使用callback方式返回结果。 此接口在未申请相册管理模块权限'ohos.permission.WRITE_IMAGEVIDEO'时,可以使用安全控件创建媒体资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-savebutton.md)。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------ | ---- | ------------------------- | | photoType | [PhotoType](#phototype) | 是 | 创建的文件类型,IMAGE或者VIDEO类型。 | | extension | string | 是 | 文件名后缀参数,例如:'jpg'。 | | options | [CreateOptions](#createoptions) | 是 | 创建选项,例如{title: 'testPhoto'}。 | | callback | AsyncCallback<string> | 是 | callback返回创建的图片和视频的uri。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts async function example() { console.info('createAssetDemo'); let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; let extension:string = 'jpg'; let options: photoAccessHelper.CreateOptions = { title: 'testPhoto' } phAccessHelper.createAsset(photoType, extension, options, (err, uri) => { if (uri !== undefined) { console.info('createAsset uri' + uri); console.info('createAsset successfully'); } else { console.error(`createAsset failed, error: ${err.code}, ${err.message}`); } }); } ``` ### createAsset createAsset(photoType: PhotoType, extension: string, callback: AsyncCallback<string>): void 指定待创建的文件类型和后缀,创建图片或视频资源,使用callback方式返回结果。 此接口在未申请相册管理模块权限'ohos.permission.WRITE_IMAGEVIDEO'时,可以使用安全控件创建媒体资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-savebutton.md)。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------ | ---- | ------------------------- | | photoType | [PhotoType](#phototype) | 是 | 创建的文件类型,IMAGE或者VIDEO类型。 | | extension | string | 是 | 文件名后缀参数,例如:'jpg'。 | | callback | AsyncCallback<string> | 是 | callback返回创建的图片和视频的uri。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts async function example() { console.info('createAssetDemo'); let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; let extension: string = 'jpg'; phAccessHelper.createAsset(photoType, extension, (err, uri) => { if (uri !== undefined) { console.info('createAsset uri' + uri); console.info('createAsset successfully'); } else { console.error(`createAsset failed, error: ${err.code}, ${err.message}`); } }); } ``` ### createAsset createAsset(photoType: PhotoType, extension: string, options?: CreateOptions): Promise<string> 指定待创建的文件类型、后缀和创建选项,创建图片或视频资源,使用Promise方式返回结果。 此接口在未申请相册管理模块权限'ohos.permission.WRITE_IMAGEVIDEO'时,可以使用安全控件创建媒体资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-savebutton.md)。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------ | ---- | ------------------------- | | photoType | [PhotoType](#phototype) | 是 | 创建的文件类型,IMAGE或者VIDEO类型。 | | extension | string | 是 | 文件名后缀参数,例如:'jpg'。 | | options | [CreateOptions](#createoptions) | 否 | 创建选项,例如{title: 'testPhoto'}。 | **返回值:** | 类型 | 说明 | | --------------------------- | -------------- | | Promise<string> | Promise对象,返回创建的图片和视频的uri。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts async function example() { console.info('createAssetDemo'); try { let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; let extension: string = 'jpg'; let options: photoAccessHelper.CreateOptions = { title: 'testPhoto' } let uri: string = await phAccessHelper.createAsset(photoType, extension, options); console.info('createAsset uri' + uri); console.info('createAsset successfully'); } catch (err) { console.error(`createAsset failed, error: ${err.code}, ${err.message}`); } } ``` ### getAlbums getAlbums(type: AlbumType, subtype: AlbumSubtype, options: FetchOptions, callback: AsyncCallback<FetchResult<Album>>): void 根据检索选项和相册类型获取相册,使用callback方式返回结果。 获取相册前需先保证相册存在。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.READ_IMAGEVIDEO **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------ | ---- | ------------------------- | | type | [AlbumType](#albumtype) | 是 | 相册类型。 | | subtype | [AlbumSubtype](#albumsubtype) | 是 | 相册子类型。 | | options | [FetchOptions](#fetchoptions) | 是 | 检索选项。 | | callback | AsyncCallback<[FetchResult](#fetchresult)<[Album](#album)>> | 是 | callback返回获取相册的结果集。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { // 示例代码中为获取相册名为newAlbumName的相册。 console.info('getAlbumsDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); predicates.equalTo('album_name', 'newAlbumName'); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions, async (err, fetchResult) => { if (err) { console.error(`getAlbumsCallback failed with err: ${err.code}, ${err.message}`); return; } if (fetchResult === undefined) { console.error('getAlbumsCallback fetchResult is undefined'); return; } let album = await fetchResult.getFirstObject(); console.info('getAlbumsCallback successfully, albumName: ' + album.albumName); fetchResult.close(); }); } ``` ### getAlbums getAlbums(type: AlbumType, subtype: AlbumSubtype, callback: AsyncCallback<FetchResult<Album>>): void 根据相册类型获取相册,使用callback方式返回结果。 获取相册前需先保证相册存在。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.READ_IMAGEVIDEO **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------ | ---- | ------------------------- | | type | [AlbumType](#albumtype) | 是 | 相册类型。 | | subtype | [AlbumSubtype](#albumsubtype) | 是 | 相册子类型。 | | callback | AsyncCallback<[FetchResult](#fetchresult)<[Album](#album)>> | 是 | callback返回获取相册的结果集。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts async function example() { // 示例代码中为获取统相册VIDEO,默认已预置。 console.info('getAlbumsDemo'); phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.VIDEO, async (err, fetchResult) => { if (err) { console.error(`getAlbumsCallback failed with err: ${err.code}, ${err.message}`); return; } if (fetchResult === undefined) { console.error('getAlbumsCallback fetchResult is undefined'); return; } let album: photoAccessHelper.Album = await fetchResult.getFirstObject(); console.info('getAlbumsCallback successfully, albumUri: ' + album.albumUri); fetchResult.close(); }); } ``` ### getAlbums getAlbums(type: AlbumType, subtype: AlbumSubtype, options?: FetchOptions): Promise<FetchResult<Album>> 根据检索选项和相册类型获取相册,使用Promise方式返回结果。 获取相册前需先保证相册存在。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.READ_IMAGEVIDEO **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------ | ---- | ------------------------- | | type | [AlbumType](#albumtype) | 是 | 相册类型。 | | subtype | [AlbumSubtype](#albumsubtype) | 是 | 相册子类型。 | | options | [FetchOptions](#fetchoptions) | 否 | 检索选项,不填时默认根据相册类型检索。 | **返回值:** | 类型 | 说明 | | --------------------------- | -------------- | | Promise<[FetchResult](#fetchresult)<[Album](#album)>> | Promise对象,返回获取相册的结果集。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; import { BusinessError } from '@kit.BasicServicesKit'; async function example() { // 示例代码中为获取相册名为newAlbumName的相册。 console.info('getAlbumsDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); predicates.equalTo('album_name', 'newAlbumName'); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions).then( async (fetchResult) => { if (fetchResult === undefined) { console.error('getAlbumsPromise fetchResult is undefined'); return; } let album: photoAccessHelper.Album = await fetchResult.getFirstObject(); console.info('getAlbumsPromise successfully, albumName: ' + album.albumName); fetchResult.close(); }).catch((err: BusinessError) => { console.error(`getAlbumsPromise failed with err: ${err.code}, ${err.message}`); }); } ``` ### registerChange registerChange(uri: string, forChildUris: boolean, callback: Callback<ChangeData>) : void 注册对指定uri的监听,使用callback方式返回异步结果。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ------------------------------------------- | ---- | ------------------------------------------------------------ | | uri | string | 是 | PhotoAsset的uri, Album的uri或[DefaultChangeUri](#defaultchangeuri)的值。 | | forChildUris | boolean | 是 | 是否模糊监听,uri为相册uri时,forChildUris为true能监听到相册中文件的变化,如果是false只能监听相册本身变化。uri为photoAsset时,forChildUris为true、false没有区别,uri为DefaultChangeUri时,forChildUris必须为true,如果为false将找不到该uri,收不到任何消息。 | | callback | Callback<[ChangeData](#changedata)> | 是 | 返回要监听的[ChangeData](#changedata)。注:uri可以注册多个不同的callback监听,[unRegisterChange](#unregisterchange)可以关闭该uri所有监听,也可以关闭指定callback的监听。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('registerChangeDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); if (photoAsset !== undefined) { console.info('photoAsset.displayName : ' + photoAsset.displayName); } let onCallback1 = (changeData: photoAccessHelper.ChangeData) => { console.info('onCallback1 success, changData: ' + JSON.stringify(changeData)); //file had changed, do something } let onCallback2 = (changeData: photoAccessHelper.ChangeData) => { console.info('onCallback2 success, changData: ' + JSON.stringify(changeData)); //file had changed, do something } // 注册onCallback1监听 phAccessHelper.registerChange(photoAsset.uri, false, onCallback1); // 注册onCallback2监听 phAccessHelper.registerChange(photoAsset.uri, false, onCallback2); await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [photoAsset]); } ``` ### unRegisterChange unRegisterChange(uri: string, callback?: Callback<ChangeData>): void 取消指定uri的监听,一个uri可以注册多个监听,存在多个callback监听时,可以取消指定注册的callback的监听;不指定callback时取消该uri的所有监听。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------------------------- | ---- | ------------------------------------------------------------ | | uri | string | 是 | PhotoAsset的uri, Album的uri或[DefaultChangeUri](#defaultchangeuri)的值。 | | callback | Callback<[ChangeData](#changedata)> | 否 | 取消[registerChange](#registerchange)注册时的callback的监听,不填时,取消该uri的所有监听。注:off指定注册的callback后不会进入此回调。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('offDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); if (photoAsset !== undefined) { console.info('photoAsset.displayName : ' + photoAsset.displayName); } let onCallback1 = (changeData: photoAccessHelper.ChangeData) => { console.info('onCallback1 on'); } let onCallback2 = (changeData: photoAccessHelper.ChangeData) => { console.info('onCallback2 on'); } // 注册onCallback1监听 phAccessHelper.registerChange(photoAsset.uri, false, onCallback1); // 注册onCallback2监听 phAccessHelper.registerChange(photoAsset.uri, false, onCallback2); // 关闭onCallback1监听,onCallback2 继续监听 phAccessHelper.unRegisterChange(photoAsset.uri, onCallback1); await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [photoAsset]); } ``` ### createDeleteRequest(deprecated) createDeleteRequest(uriList: Array<string>, callback: AsyncCallback<void>): void 创建一个弹出框来删除照片,删除的文件进入到回收站,使用callback方式返回结果。 > **说明:** > > 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAssetChangeRequest.deleteAssets](#deleteassets11-1)替代。 **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ---------- | | uriList | Array<string> | 是 | 待删除的媒体文件uri数组,最大删除数量300。 | | callback | AsyncCallback<void> | 是 | callback返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('createDeleteRequestDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; try { let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); if (asset === undefined) { console.error('asset not exist'); return; } phAccessHelper.createDeleteRequest([asset.uri], (err) => { if (err === undefined) { console.info('createDeleteRequest successfully'); } else { console.error(`createDeleteRequest failed with error: ${err.code}, ${err.message}`); } }); } catch (err) { console.error(`fetch failed, error: ${err.code}, ${err.message}`); } } ``` ### createDeleteRequest(deprecated) createDeleteRequest(uriList: Array<string>): Promise<void> 创建一个弹出框来删除照片,删除的文件进入到回收站,使用Promise方式返回结果。 > **说明:** > > 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAssetChangeRequest.deleteAssets](#deleteassets11-1)替代。 **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ---------- | | uriList | Array<string> | 是 | 待删除的媒体文件uri数组,最大删除数量300。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise<void>| Promise对象,返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('createDeleteRequestDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; try { let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); if (asset === undefined) { console.error('asset not exist'); return; } await phAccessHelper.createDeleteRequest([asset.uri]); console.info('createDeleteRequest successfully'); } catch (err) { console.error(`createDeleteRequest failed with error: ${err.code}, ${err.message}`); } } ``` ### applyChanges11+ applyChanges(mediaChangeRequest: MediaChangeRequest): Promise<void> 提交媒体变更请求,使用Promise方式返回结果。 **需要权限**:ohos.permission.WRITE_IMAGEVIDEO 在提交创建资产的变更请求时,对于未申请'ohos.permission.WRITE_IMAGEVIDEO'权限的应用,可以用安全控件的方式调用该接口来创建媒体资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-savebutton.md)。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------ | ---- | ------------------------- | | mediaChangeRequest | [MediaChangeRequest](#mediachangerequest11) | 是 | 媒体变更请求,支持资产变更请求和相册变更请求。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise<void>| Promise对象,返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 201 | Permission denied. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail. | **示例:** 该接口依赖于[MediaChangeRequest](#mediachangerequest11)对象,详细代码示例请参见[MediaAssetChangeRequest](#mediaassetchangerequest11)和[MediaAlbumChangeRequest](#mediaalbumchangerequest11)中的接口示例。 ### release release(callback: AsyncCallback<void>): void 释放PhotoAccessHelper实例,使用callback方式返回结果。 当后续不需要使用PhotoAccessHelper实例中的方法时调用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | -------------------- | | callback | AsyncCallback<void> | 是 | 回调表示成功还是失败。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts async function example() { console.info('releaseDemo'); phAccessHelper.release((err) => { if (err !== undefined) { console.error(`release failed. error: ${err.code}, ${err.message}`); } else { console.info('release ok.'); } }); } ``` ### release release(): Promise<void> 释放PhotoAccessHelper实例,使用Promise方式返回结果。 当后续不需要使用PhotoAccessHelper 实例中的方法时调用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **返回值:** | 类型 | 说明 | | ------------------- | --------------------------------- | | Promise<void> | Promise对象,返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts async function example() { console.info('releaseDemo'); try { await phAccessHelper.release(); console.info('release ok.'); } catch (err) { console.error(`release failed. error: ${err.code}, ${err.message}`); } } ``` ### showAssetsCreationDialog12+ showAssetsCreationDialog(srcFileUris: Array<string>, photoCreationConfigs: Array<PhotoCreationConfig>): Promise<Array<string>> 调用接口拉起保存确认弹窗。用户同意保存后,返回已创建并授予保存权限的uri列表,该列表永久生效,应用可使用该uri写入图片/视频。如果用户拒绝保存,将返回空列表。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- |----------------------------------------------------------------------| ---- | ------------------------- | | srcFileUris | Array<string> | 是 | 需保存到媒体库中的图片/视频文件对应的[媒体库uri](../../file-management/user-file-uri-intro.md#媒体文件uri)。
**注意:**
- 仅支持处理图片、视频uri。
- 不支持手动拼接的uri,需调用接口获取,获取方式参考[媒体文件uri获取方式](../../file-management/user-file-uri-intro.md#媒体文件uri获取方式)。 | | photoCreationConfigs | Array<[PhotoCreationConfig](#photocreationconfig12)> | 是 | 保存图片/视频到媒体库的配置,包括保存的文件名等,与srcFileUris保持一一对应。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise<Array<string>> | Promise对象,返回给应用的媒体库文件uri列表。Uri已对应用授权,支持应用写入数据。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | Internal system error | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; import { photoAccessHelper } from '@kit.MediaLibraryKit'; async function example() { console.info('ShowAssetsCreationDialogDemo.'); try { // 获取需要保存到媒体库的位于应用沙箱的图片/视频uri let srcFileUris: Array = [ 'file://fileUriDemo1' // 实际场景请使用真实的uri ]; let photoCreationConfigs: Array = [ { title: 'test2', // 可选 fileNameExtension: 'jpg', photoType: photoAccessHelper.PhotoType.IMAGE, subtype: photoAccessHelper.PhotoSubtype.DEFAULT, // 可选 } ]; let desFileUris: Array = await phAccessHelper.showAssetsCreationDialog(srcFileUris, photoCreationConfigs); console.info('showAssetsCreationDialog success, data is ' + desFileUris); } catch (err) { console.error('showAssetsCreationDialog failed, errCode is ' + err.code + ', errMsg is ' + err.message); } } ``` ### createAssetWithShortTermPermission12+ createAssetWithShortTermPermission(photoCreationConfig: PhotoCreationConfig): Promise<string> 接口提供给应用调用,支持首次调用后拉起保存确认弹框。在用户同意保存后返回已创建并授予保存权限的uri,支持应用使用uri写入图片/视频; 在用户"同意"后的5min之内,同一个应用再次调用接口,支持无需弹框确认自动返回已授权的uri给应用,支持应用保存图片/视频。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限:** ohos.permission.SHORT_TERM_WRITE_IMAGEVIDEO **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- |----------------------------------------------------------------------| ---- | ------------------------- | | photoCreationConfig | [PhotoCreationConfig](#photocreationconfig12); | 是 | 保存图片/视频到媒体库的配置,包括保存的文件名等。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise<string> | Promise对象,返回给应用的媒体库文件uri。Uri已对应用授权,支持应用写入数据。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 201 | Permission denied | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | Internal system error | **示例:** ```ts import { fileIo } from '@kit.CoreFileKit'; async function example() { console.info('createAssetWithShortTermPermissionDemo.'); try { let photoCreationConfig: photoAccessHelper.PhotoCreationConfig = { title: '123456', fileNameExtension: 'jpg', photoType: photoAccessHelper.PhotoType.IMAGE, subtype: photoAccessHelper.PhotoSubtype.DEFAULT, }; let resultUri: string = await phAccessHelper.createAssetWithShortTermPermission(photoCreationConfig); let resultFile: fileIo.File = fileIo.openSync(resultUri, fileIo.OpenMode.READ_WRITE); // 实际场景请使用真实的uri和文件大小 let srcFile: fileIo.File = fileIo.openSync("file://test.jpg", fileIo.OpenMode.READ_ONLY); let bufSize: number = 2000000; let readSize: number = 0; let buf = new ArrayBuffer(bufSize); let readLen = fileIo.readSync(srcFile.fd, buf, { offset: readSize, length: bufSize }); if (readLen > 0) { readSize += readLen; fileIo.writeSync(resultFile.fd, buf, { length: readLen }); } fileIo.closeSync(srcFile); fileIo.closeSync(resultFile); } catch (err) { console.error('createAssetWithShortTermPermission failed, errCode is ' + err.code + ', errMsg is ' + err.message); } } ``` ### requestPhotoUrisReadPermission14+ requestPhotoUrisReadPermission(srcFileUris: Array<string>): Promise<Array<string>> 调用接口给未授权的uri进行授权,返回已创建并授予保存权限的uri列表。 **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- |----------------------------------------------------------------------| ---- | ------------------------- | | srcFileUris | Array<string> | 是 | 需进行授权的图片/视频文件对应的[媒体库uri](../../file-management/user-file-uri-intro.md#媒体文件uri)。
**注意:** 仅支持处理图片、视频uri。| **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise<Array<string>> | Promise对象,返回已授权的uri列表。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | Internal system error | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; import { photoAccessHelper } from '@kit.MediaLibraryKit'; async function example() { console.info('requestPhotoUrisReadPermissionDemo.'); try { let phAccessHelper: photoAccessHelper.PhotoAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); // 获取需要进行授权的图片/视频uri let srcFileUris: Array = [ 'file://fileUriDemo1' // 实际场景请使用真实的uri ]; let desFileUris: Array = await phAccessHelper.requestPhotoUrisReadPermission(srcFileUris); console.info('requestPhotoUrisReadPermission success, data is ' + desFileUris); } catch (err) { console.error('requestPhotoUrisReadPermission failed, errCode is ' + err.code + ', errMsg is ' + err.message); } } ``` ## PhotoAsset 提供封装文件属性的方法。 ### 属性 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 类型 | 可读 | 可写 | 说明 | | ------------------------- | ------------------------ | ---- | ---- | ------------------------------------------------------ | | uri | string | 是 | 否 | 媒体文件资源uri(如:file://media/Photo/1/IMG_datetime_0001/displayName.jpg),详情参见用户文件uri介绍中的[媒体文件uri](../../file-management/user-file-uri-intro.md#媒体文件uri)
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | | photoType | [PhotoType](#phototype) | 是 | 否 | 媒体文件类型 | | displayName | string | 是 | 否 | 显示文件名,包含后缀名。 | ### get get(member: string): MemberType 获取PhotoAsset成员参数。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ----- | | member | string | 是 | 成员参数名称,在get时,除了'uri'、'media_type'、'subtype'和'display_name'四个属性之外,其他的属性都需要在fetchColumns中填入需要get的[PhotoKeys](#photokeys),例如:get title属性fetchColumns: ['title']。 | **返回值:** | 类型 | 说明 | | ------------------- | --------------------------------- | | [MemberType](#membertype) | 获取PhotoAsset成员参数的值。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900020 | Invalid argument. | | 14000014 | Member is not a valid PhotoKey. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('photoAssetGetDemo'); try { let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: ['title'], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); let title: photoAccessHelper.PhotoKeys = photoAccessHelper.PhotoKeys.TITLE; let photoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title.toString()); console.info('photoAsset Get photoAssetTitle = ', photoAssetTitle); } catch (err) { console.error(`release failed. error: ${err.code}, ${err.message}`); } } ``` ### set set(member: string, value: string): void 设置PhotoAsset成员参数。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ----- | | member | string | 是 | 成员参数名称例如:[PhotoKeys](#photokeys).TITLE。 | | value | string | 是 | 设置成员参数名称,只能修改[PhotoKeys](#photokeys).TITLE的值。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900020 | Invalid argument. | | 14000014 | Member is not a valid PhotoKey. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('photoAssetSetDemo'); try { let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: ['title'], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); let title: string = photoAccessHelper.PhotoKeys.TITLE.toString(); photoAsset.set(title, 'newTitle'); } catch (err) { console.error(`release failed. error: ${err.code}, ${err.message}`); } } ``` ### commitModify commitModify(callback: AsyncCallback<void>): void 修改文件的元数据,使用callback方式返回异步结果。 **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ----- | | callback | AsyncCallback<void> | 是 | callback返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000001 | Invalid display name. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('commitModifyDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: ['title'], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); let title: string = photoAccessHelper.PhotoKeys.TITLE.toString(); let photoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title); console.info('photoAsset get photoAssetTitle = ', photoAssetTitle); photoAsset.set(title, 'newTitle2'); photoAsset.commitModify((err) => { if (err === undefined) { let newPhotoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title); console.info('photoAsset get newPhotoAssetTitle = ', newPhotoAssetTitle); } else { console.error(`commitModify failed, error: ${err.code}, ${err.message}`); } }); } ``` ### commitModify commitModify(): Promise<void> 修改文件的元数据,使用promise方式返回异步结果。 **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **返回值:** | 类型 | 说明 | | ------------------- | ---------- | | Promise<void> | Promise对象,返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000001 | Invalid display name. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('commitModifyDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: ['title'], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); let title: string = photoAccessHelper.PhotoKeys.TITLE.toString(); let photoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title); console.info('photoAsset get photoAssetTitle = ', photoAssetTitle); photoAsset.set(title, 'newTitle3'); try { await photoAsset.commitModify(); let newPhotoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title); console.info('photoAsset get newPhotoAssetTitle = ', newPhotoAssetTitle); } catch (err) { console.error(`release failed. error: ${err.code}, ${err.message}`); } } ``` ### getReadOnlyFd(deprecated) getReadOnlyFd(callback: AsyncCallback<number>): void 以只读方式打开当前文件,使用callback方式返回异步结果。 > **说明:** > > 从API version 10开始支持,从API version 11开始废弃。出于安全考量,不再提供获取正式媒体文件句柄的接口。 **注意**:返回的文件描述符在使用完毕后需要调用close进行释放。 **需要权限**:ohos.permission.READ_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------------- | ---- | ----------------------------------- | | callback | AsyncCallback<number> | 是 | callback返回文件描述符。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts async function example() { console.info('getReadOnlyFdDemo'); // 需要保证设备中存在可读取图片视频文件 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let assetResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let photoAsset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); photoAsset.getReadOnlyFd((err, fd) => { if (fd !== undefined) { console.info('File fd' + fd); photoAsset.close(fd); } else { console.error(`getReadOnlyFd err: ${err.code}, ${err.message}`); } }); } ``` ### getReadOnlyFd(deprecated) getReadOnlyFd(): Promise<number> 以只读方式打开当前文件,使用promise方式返回异步结果。 > **说明:** > > 从API version 10开始支持,从API version 11开始废弃。出于安全考量,不再提供获取正式媒体文件句柄的接口。 **注意**:返回的文件描述符在使用完毕后需要调用close进行释放。 **需要权限**:ohos.permission.READ_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **返回值:** | 类型 | 说明 | | --------------------- | ------------- | | Promise<number> | Promise对象,返回文件描述符。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts async function example() { console.info('getReadOnlyFdDemo'); try { // 需要保证设备中存在可读取图片视频文件 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let assetResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let photoAsset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); let fd: number = await photoAsset.getReadOnlyFd(); if (fd !== undefined) { console.info('File fd' + fd); photoAsset.close(fd); } else { console.error('getReadOnlyFd fail'); } } catch (err) { console.error(`getReadOnlyFd demo err: ${err.code}, ${err.message}`); } } ``` ### close(deprecated) close(fd: number, callback: AsyncCallback<void>): void 关闭当前文件,使用callback方式返回异步结果。 > **说明:** > > 从API version 10开始支持,从API version 11开始废弃。出于安全考量,不再提供获取正式媒体文件句柄的接口。对应的close接口一并废弃。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ----- | | fd | number | 是 | 文件描述符。 | | callback | AsyncCallback<void> | 是 | callback返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('closeDemo'); try { let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); let fd: number = await photoAsset.open('rw'); console.info('file fd', fd); photoAsset.close(fd, (err) => { if (err === undefined) { console.info('asset close succeed.'); } else { console.error(`close failed, error: ${err.code}, ${err.message}`); } }); } catch (err) { console.error(`close failed, error: ${err.code}, ${err.message}`); } } ``` ### close(deprecated) close(fd: number): Promise<void> 关闭当前文件,使用promise方式返回异步结果。 > **说明:** > > 从API version 10开始支持,从API version 11开始废弃。出于安全考量,不再提供获取正式媒体文件句柄的接口。对应的close接口一并废弃。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ---- | ------ | ---- | ----- | | fd | number | 是 | 文件描述符。 | **返回值:** | 类型 | 说明 | | ------------------- | ---------- | | Promise<void> | Promise对象,返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('closeDemo'); try { let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); let fd = await asset.open('rw'); console.info('file fd', fd); await asset.close(fd); console.info('asset close succeed.'); } catch (err) { console.error(`close failed, error: ${err.code}, ${err.message}`); } } ``` ### getThumbnail getThumbnail(callback: AsyncCallback<image.PixelMap>): void 获取文件的缩略图,使用callback方式返回异步结果。 **需要权限**:ohos.permission.READ_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ----------------------------------- | ---- | ---------------- | | callback | AsyncCallback<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | 是 | callback返回缩略图的PixelMap。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('getThumbnailDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); console.info('asset displayName = ', asset.displayName); asset.getThumbnail((err, pixelMap) => { if (err === undefined) { console.info('getThumbnail successful ' + pixelMap); } else { console.error(`getThumbnail fail with error: ${err.code}, ${err.message}`); } }); } ``` ### getThumbnail getThumbnail(size: image.Size, callback: AsyncCallback<image.PixelMap>): void 获取文件的缩略图,传入缩略图尺寸,使用callback方式返回异步结果。 **需要权限**:ohos.permission.READ_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ----------------------------------- | ---- | ---------------- | | size | [image.Size](../apis-image-kit/js-apis-image.md#size) | 是 | 缩略图尺寸。 | | callback | AsyncCallback<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | 是 | callback返回缩略图的PixelMap。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; import { image } from '@kit.ImageKit'; async function example() { console.info('getThumbnailDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let size: image.Size = { width: 720, height: 720 }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let asset = await fetchResult.getFirstObject(); console.info('asset displayName = ', asset.displayName); asset.getThumbnail(size, (err, pixelMap) => { if (err === undefined) { console.info('getThumbnail successful ' + pixelMap); } else { console.error(`getThumbnail fail with error: ${err.code}, ${err.message}`); } }); } ``` ### getThumbnail getThumbnail(size?: image.Size): Promise<image.PixelMap> 获取文件的缩略图,传入缩略图尺寸,使用promise方式返回异步结果。 **需要权限**:ohos.permission.READ_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ---- | -------------- | ---- | ----- | | size | [image.Size](../apis-image-kit/js-apis-image.md#size) | 否 | 缩略图尺寸。 | **返回值:** | 类型 | 说明 | | ----------------------------- | --------------------- | | Promise<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | Promise对象,返回缩略图的PixelMap。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; import { image } from '@kit.ImageKit'; import { BusinessError } from '@kit.BasicServicesKit'; async function example() { console.info('getThumbnailDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let size: image.Size = { width: 720, height: 720 }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let asset = await fetchResult.getFirstObject(); console.info('asset displayName = ', asset.displayName); asset.getThumbnail(size).then((pixelMap) => { console.info('getThumbnail successful ' + pixelMap); }).catch((err: BusinessError) => { console.error(`getThumbnail fail with error: ${err.code}, ${err.message}`); }); } ``` ### clone14+ clone(title: string): Promise<PhotoAsset> 将一个资产进行克隆,支持设置文件名,不支持修改文件类型。 **需要权限**:ohos.permission.WRITE\_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ---------- | ------- | ---- | ---------------------------------- | | title| string | 是 | 克隆后资产的标题。参数规格为:
- 不应包含扩展名。
- 文件名字符串长度为1~255(资产文件名为标题+扩展名)。
- 不允许出现非法字符,包括:. \ / : * ? " ' ` < > \| { } [ ] | **返回值:** | 类型 | 说明 | | ------------------- | ----------------------- | | Promise<PhotoAsset> | Promise对象,返回[PhotoAsset](#photoasset)。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | :------- | :-------------------------------- | | 201 | Permission denied. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | Internal system error. It is recommended to retry and check the logs.Possible causes: 1. Database corrupted; 2. The file system is abnormal; 3. The IPC request timed out. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; import { systemDateTime } from '@kit.BasicServicesKit'; async function example() { let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; try { let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); let title: string = systemDateTime.getTime().toString(); let newAsset: photoAccessHelper.PhotoAsset = await photoAsset.clone(title); console.info('get new asset successfully'); } catch (error) { console.error(`failed to get new asset. message = ${error.code}, ${error.message}`); } } ``` ## PhotoViewPicker 图库选择器对象,用来支撑选择图片/视频等用户场景。在使用前,需要先创建PhotoViewPicker实例。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **示例:** ```ts let photoPicker = new photoAccessHelper.PhotoViewPicker(); ``` ### select select(option?: PhotoSelectOptions) : Promise<PhotoSelectResult> 通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用promise异步返回形式,传入可选参数PhotoSelectOptions对象,返回PhotoSelectResult对象。 **注意**:此接口返回的PhotoSelectResult对象中的photoUris只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------- | ---- | -------------------------- | | option | [PhotoSelectOptions](#photoselectoptions) | 否 | photoPicker选择选项,若无此参数,则默认选择媒体文件类型为图片和视频类型,默认选择媒体文件数量的最大值为50 | **返回值:** | 类型 | 说明 | | ----------------------------- | :---- | | Promise<[PhotoSelectResult](#photoselectresult)> | Promise对象。返回photoPicker选择后的结果集 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900042 | Unknown error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; async function example01() { try { let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions(); PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; PhotoSelectOptions.maxSelectNumber = 5; let photoPicker = new photoAccessHelper.PhotoViewPicker(); photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); }).catch((err: BusinessError) => { console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`); }); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`); } } ``` ### select select(option: PhotoSelectOptions, callback: AsyncCallback<PhotoSelectResult>) : void 通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用callback异步返回形式,传入参数PhotoSelectOptions对象,返回PhotoSelectResult对象。 **注意**:此接口返回的PhotoSelectResult对象中的photoUris只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------- | ---- | -------------------------- | | option | [PhotoSelectOptions](#photoselectoptions) | 是 | photoPicker选择选项 | | callback | AsyncCallback<[PhotoSelectResult](#photoselectresult)> | 是 | callback 返回photoPicker选择后的结果集 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900042 | Unknown error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; async function example02() { try { let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions(); PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; PhotoSelectOptions.maxSelectNumber = 5; let photoPicker = new photoAccessHelper.PhotoViewPicker(); photoPicker.select(PhotoSelectOptions, (err: BusinessError, PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { if (err) { console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`); return; } console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); }); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`); } } ``` ### select select(callback: AsyncCallback<PhotoSelectResult>) : void 通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用callback异步返回形式,返回PhotoSelectResult对象。 **注意**:此接口返回的PhotoSelectResult对象中的photoUris只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------- | ---- | -------------------------- | | callback | AsyncCallback<[PhotoSelectResult](#photoselectresult)> | 是 | callback 返回photoPicker选择后的结果集 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900042 | Unknown error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; async function example03() { try { let photoPicker = new photoAccessHelper.PhotoViewPicker(); photoPicker.select((err: BusinessError, PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { if (err) { console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`); return; } console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); }); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`); } } ``` ## FetchResult 文件检索结果集。 ### getCount getCount(): number 获取文件检索结果中的文件总数。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **返回值:** | 类型 | 说明 | | ------ | -------- | | number | 检索到的文件总数。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('getCountDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let fetchCount = fetchResult.getCount(); console.info('fetchCount = ', fetchCount); } ``` ### isAfterLast isAfterLast(): boolean 检查结果集是否指向最后一行。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **返回值:** | 类型 | 说明 | | ------- | ---------------------------------- | | boolean | 当读到最后一条记录后,后续没有记录返回true,否则返回false。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let fetchCount = fetchResult.getCount(); console.info('count:' + fetchCount); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getLastObject(); if (fetchResult.isAfterLast()) { console.info('photoAsset isAfterLast displayName = ', photoAsset.displayName); } else { console.info('photoAsset not isAfterLast.'); } } ``` ### close close(): void 释放FetchResult实例并使其失效。无法调用其他方法。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('fetchResultCloseDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; try { let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); fetchResult.close(); console.info('close succeed.'); } catch (err) { console.error(`close fail. error: ${err.code}, ${err.message}`); } } ``` ### getFirstObject getFirstObject(callback: AsyncCallback<T>): void 获取文件检索结果中的第一个文件资产。此方法使用callback形式返回结果。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------------------------------- | ---- | ------------------------------------------- | | callback | AsyncCallback<T> | 是 | 异步获取结果集中的第一个完成后的回调。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('getFirstObjectDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); fetchResult.getFirstObject((err, photoAsset) => { if (photoAsset !== undefined) { console.info('photoAsset displayName: ', photoAsset.displayName); } else { console.error(`photoAsset failed with err:${err.code}, ${err.message}`); } }); } ``` ### getFirstObject getFirstObject(): Promise<T> 获取文件检索结果中的第一个文件资产。此方法使用promise方式来异步返回。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **返回值:** | 类型 | 说明 | | --------------------------------------- | -------------------------- | | Promise<T> | Promise对象,返回结果集中第一个对象。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('getFirstObjectDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); console.info('photoAsset displayName: ', photoAsset.displayName); } ``` ### getNextObject getNextObject(callback: AsyncCallback<T>): void 获取文件检索结果中的下一个文件资产。此方法使用callback形式返回结果。 在调用此方法之前,必须使用[isAfterLast()](#isafterlast)来检查当前位置是否为最后一行。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | --------------------------------------------- | ---- | ----------------------------------------- | | callback | AsyncCallback<T> | 是 | 异步返回结果集中下一个之后的回调。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('getNextObjectDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); await fetchResult.getFirstObject(); if (!fetchResult.isAfterLast()) { fetchResult.getNextObject((err, photoAsset) => { if (photoAsset !== undefined) { console.info('photoAsset displayName: ', photoAsset.displayName); } else { console.error(`photoAsset failed with err: ${err.code}, ${err.message}`); } }); } } ``` ### getNextObject getNextObject(): Promise<T> 获取文件检索结果中的下一个文件资产。此方法使用promise方式来异步返回。 在调用此方法之前,必须使用[isAfterLast()](#isafterlast)来检查当前位置是否为最后一行。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise<T> | Promise对象,返回结果集中下一个对象。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('getNextObjectDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); await fetchResult.getFirstObject(); if (!fetchResult.isAfterLast()) { let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getNextObject(); console.info('photoAsset displayName: ', photoAsset.displayName); } } ``` ### getLastObject getLastObject(callback: AsyncCallback<T>): void 获取文件检索结果中的最后一个文件资产。此方法使用callback回调来返回。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------------------------------- | ---- | --------------------------- | | callback | AsyncCallback<T> | 是 | 异步返回结果集中最后一个的回调。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('getLastObjectDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); fetchResult.getLastObject((err, photoAsset) => { if (photoAsset !== undefined) { console.info('photoAsset displayName: ', photoAsset.displayName); } else { console.error(`photoAsset failed with err: ${err.code}, ${err.message}`); } }); } ``` ### getLastObject getLastObject(): Promise<T> 获取文件检索结果中的最后一个文件资产。此方法使用Promise方式来返回。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise<T> | Promise对象,返回结果集中最后一个对象。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('getLastObjectDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getLastObject(); console.info('photoAsset displayName: ', photoAsset.displayName); } ``` ### getObjectByPosition getObjectByPosition(index: number, callback: AsyncCallback<T>): void 获取文件检索结果中具有指定索引的文件资产。此方法使用callback来返回。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ---------------------------------------- | ---- | ------------------ | | index | number | 是 | 要获取的文件的索引,从0开始。 | | callback | AsyncCallback<T> | 是 | 异步返回指定索引的文件资产的回调。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('getObjectByPositionDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); fetchResult.getObjectByPosition(0, (err, photoAsset) => { if (photoAsset !== undefined) { console.info('photoAsset displayName: ', photoAsset.displayName); } else { console.error(`photoAsset failed with err: ${err.code}, ${err.message}`); } }); } ``` ### getObjectByPosition getObjectByPosition(index: number): Promise<T> 获取文件检索结果中具有指定索引的文件资产。此方法使用Promise形式返回文件Asset。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ----- | ------ | ---- | -------------- | | index | number | 是 | 要获取的文件的索引,从0开始。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise<T> | Promise对象,返回结果集中指定索引的一个对象。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('getObjectByPositionDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getObjectByPosition(0); console.info('photoAsset displayName: ', photoAsset.displayName); } ``` ### getAllObjects getAllObjects(callback: AsyncCallback<Array<T>>): void 获取文件检索结果中的所有文件资产。此方法使用callback形式返回结果。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------------------------------- | ---- | ------------------------------------------- | | callback | AsyncCallback<Array<T>> | 是 | 异步获取结果集中的所有文件资产完成后的回调。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('getAllObjectDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); fetchResult.getAllObjects((err, photoAssetList) => { if (photoAssetList !== undefined) { console.info('photoAssetList length: ', photoAssetList.length); } else { console.error(`photoAssetList failed with err:${err.code}, ${err.message}`); } }); } ``` ### getAllObjects getAllObjects(): Promise<Array<T>> 获取文件检索结果中的所有文件资产。此方法使用promise方式来异步返回。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **返回值:** | 类型 | 说明 | | --------------------------------------- | -------------------------- | | Promise<Array<T>> | Promise对象,返回结果集中所有文件资产数组。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('getAllObjectDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let photoAssetList: Array = await fetchResult.getAllObjects(); console.info('photoAssetList length: ', photoAssetList.length); } ``` ## Album 实体相册 ### 属性 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 类型 | 可读 | 可写 | 说明 | | ------------ | ------ | ---- | ---- | ------- | | albumType | [AlbumType](#albumtype) | 是 | 否 | 相册类型。 | | albumSubtype | [AlbumSubtype](#albumsubtype) | 是 | 否 | 相册子类型。 | | albumName | string | 是 | 用户相册可写,预置相册不可写 | 相册名称。 | | albumUri | string | 是 | 否 | 相册Uri。 | | count | number | 是 | 否 | 相册中文件数量。 | | coverUri | string | 是 | 否 | 封面文件Uri。 | | imageCount11+ | number | 是 | 否 | 相册中图片数量。| | videoCount11+ | number | 是 | 否 | 相册中视频数量。| ### getAssets getAssets(options: FetchOptions, callback: AsyncCallback<FetchResult<PhotoAsset>>): void 获取相册中的文件。该方法使用callback形式来返回文件。 **需要权限**:ohos.permission.READ_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ---------- | | options | [FetchOptions](#fetchoptions) | 是 | 检索选项。 | | callback | AsyncCallback<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | 是 | callback返回图片和视频数据结果集。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('albumGetAssetsDemoCallback'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let albumFetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let albumList: photoAccessHelper.FetchResult = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions); let album: photoAccessHelper.Album = await albumList.getFirstObject(); album.getAssets(fetchOption, (err, albumFetchResult) => { if (albumFetchResult !== undefined) { console.info('album getAssets successfully, getCount: ' + albumFetchResult.getCount()); } else { console.error(`album getAssets failed with error: ${err.code}, ${err.message}`); } }); } ``` ### getAssets getAssets(options: FetchOptions): Promise<FetchResult<PhotoAsset>> 获取相册中的文件。该方法使用Promise来返回文件。 **需要权限**:ohos.permission.READ_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ---------- | | options | [FetchOptions](#fetchoptions) | 是 | 检索选项。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | Promise对象,返回图片和视频数据结果集。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; import { BusinessError } from '@kit.BasicServicesKit'; async function example() { console.info('albumGetAssetsDemoPromise'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let albumFetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let albumList: photoAccessHelper.FetchResult = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions); let album: photoAccessHelper.Album = await albumList.getFirstObject(); album.getAssets(fetchOption).then((albumFetchResult) => { console.info('album getAssets successfully, getCount: ' + albumFetchResult.getCount()); }).catch((err: BusinessError) => { console.error(`album getAssets failed with error: ${err.code}, ${err.message}`); }); } ``` ### commitModify commitModify(callback: AsyncCallback<void>): void 更新相册属性修改到数据库中。该方法使用callback形式来返回结果。 **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ---------- | | callback | AsyncCallback<void> | 是 | callback返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('albumCommitModifyDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let albumFetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let albumList: photoAccessHelper.FetchResult = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions); let album: photoAccessHelper.Album = await albumList.getFirstObject(); album.albumName = 'hello'; album.commitModify((err) => { if (err !== undefined) { console.error(`commitModify failed with error: ${err.code}, ${err.message}`); } else { console.info('commitModify successfully'); } }); } ``` ### commitModify commitModify(): Promise<void> 更新相册属性修改到数据库中。该方法使用Promise来返回结果。 **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **返回值:** | 类型 | 说明 | | ------------------- | ------------ | | Promise<void> | Promise对象,返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; import { BusinessError } from '@kit.BasicServicesKit'; async function example() { console.info('albumCommitModifyDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let albumFetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let albumList: photoAccessHelper.FetchResult = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions); let album: photoAccessHelper.Album = await albumList.getFirstObject(); album.albumName = 'hello'; album.commitModify().then(() => { console.info('commitModify successfully'); }).catch((err: BusinessError) => { console.error(`commitModify failed with error: ${err.code}, ${err.message}`); }); } ``` ### addAssets(deprecated) addAssets(assets: Array<PhotoAsset>, callback: AsyncCallback<void>): void 往相册中添加图片或者视频,需要先预置相册和文件资源。该方法使用callback形式来返回结果。 > **说明:** > > 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAlbumChangeRequest.addAssets](#addassets11)替代。 **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ---------- | | assets | Array<[PhotoAsset](#photoasset)> | 是 | 待添加到相册中的图片或视频数组。 | | callback | AsyncCallback<void> | 是 | callback返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { try { console.info('addAssetsDemoCallback'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let albumFetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); album.addAssets([asset], (err) => { if (err === undefined) { console.info('album addAssets successfully'); } else { console.error(`album addAssets failed with error: ${err.code}, ${err.message}`); } }); } catch (err) { console.error(`addAssetsDemoCallback failed with error: ${err.code}, ${err.message}`); } } ``` ### addAssets(deprecated) addAssets(assets: Array<PhotoAsset>): Promise<void> 往相册中添加图片或者视频,需要先预置相册和文件资源。该方法使用Promise来返回结果。 > **说明:** > > 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAlbumChangeRequest.addAssets](#addassets11)替代。 **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ---------- | | assets | Array<[PhotoAsset](#photoasset)> | 是 | 待添加到相册中的图片或视频数组。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | |Promise<void> | Promise对象,返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; import { BusinessError } from '@kit.BasicServicesKit'; async function example() { try { console.info('addAssetsDemoPromise'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let albumFetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); album.addAssets([asset]).then(() => { console.info('album addAssets successfully'); }).catch((err: BusinessError) => { console.error(`album addAssets failed with error: ${err.code}, ${err.message}`); }); } catch (err) { console.error(`addAssetsDemoPromise failed with error: ${err.code}, ${err.message}`); } } ``` ### removeAssets(deprecated) removeAssets(assets: Array<PhotoAsset>, callback: AsyncCallback<void>): void 从相册中移除图片或者视频,需要先预置相册和文件资源。该方法使用callback形式来返回结果。 > **说明:** > > 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAlbumChangeRequest.removeAssets](#removeassets11)替代。 **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ---------- | | assets | Array<[PhotoAsset](#photoasset)> | 是 | 相册中待移除的图片或视频数组。 | | callback | AsyncCallback<void> | 是 | callback返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { try { console.info('removeAssetsDemoCallback'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let albumFetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); let fetchResult: photoAccessHelper.FetchResult = await album.getAssets(fetchOption); let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); album.removeAssets([asset], (err) => { if (err === undefined) { console.info('album removeAssets successfully'); } else { console.error(`album removeAssets failed with error: ${err.code}, ${err.message}`); } }); } catch (err) { console.error(`removeAssetsDemoCallback failed with error: ${err.code}, ${err.message}`); } } ``` ### removeAssets(deprecated) removeAssets(assets: Array<PhotoAsset>): Promise<void> 从相册中移除图片或者视频,需要先预置相册和文件资源。该方法使用Promise来返回结果。 > **说明:** > > 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAlbumChangeRequest.removeAssets](#removeassets11)替代。 **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ---------- | | assets | Array<[PhotoAsset](#photoasset)> | 是 | 相册中待移除的图片或视频数组。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | |Promise<void> | Promise对象,返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900012 | Permission denied. | | 13900020 | Invalid argument. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; import { BusinessError } from '@kit.BasicServicesKit'; async function example() { try { console.info('removeAssetsDemoPromise'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let albumFetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); let fetchResult: photoAccessHelper.FetchResult = await album.getAssets(fetchOption); let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); album.removeAssets([asset]).then(() => { console.info('album removeAssets successfully'); }).catch((err: BusinessError) => { console.error(`album removeAssets failed with error: ${err.code}, ${err.message}`); }); } catch (err) { console.error(`removeAssetsDemoPromise failed with error: ${err.code}, ${err.message}`); } } ``` ## MediaAssetChangeRequest11+ 资产变更请求。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core ### constructor11+ constructor(asset: PhotoAsset) 构造函数。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ---------- | | asset | [PhotoAsset](#photoasset) | 是 | 需要变更的资产。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('MediaAssetChangeRequest constructorDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(photoAsset); } ``` ### createImageAssetRequest11+ static createImageAssetRequest(context: Context, fileUri: string): MediaAssetChangeRequest 创建图片资产变更请求。 通过fileUri指定待创建资产的数据来源,可参考[FileUri](../apis-core-file-kit/js-apis-file-fileuri.md)。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------- | ---- | -------------------------- | | context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | | fileUri | string | 是 | 图片资产的数据来源,在应用沙箱下的uri。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | [MediaAssetChangeRequest](#mediaassetchangerequest11) | 返回创建资产的变更请求。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900002 | No such file. | | 14000011 | System inner fail. | **示例:** ```ts async function example() { console.info('createImageAssetRequestDemo'); try { // 需要确保fileUri对应的资源存在 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createImageAssetRequest(context, fileUri); await phAccessHelper.applyChanges(assetChangeRequest); console.info('apply createImageAssetRequest successfully'); } catch (err) { console.error(`createImageAssetRequestDemo failed with error: ${err.code}, ${err.message}`); } } ``` ### createVideoAssetRequest11+ static createVideoAssetRequest(context: Context, fileUri: string): MediaAssetChangeRequest 创建视频资产变更请求。 通过fileUri指定待创建资产的数据来源,可参考[FileUri](../apis-core-file-kit/js-apis-file-fileuri.md)。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------- | ---- | -------------------------- | | context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | | fileUri | string | 是 | 视频资产的数据来源,在应用沙箱下的uri。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | [MediaAssetChangeRequest](#mediaassetchangerequest11) | 返回创建资产的变更请求。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900002 | No such file. | | 14000011 | System inner fail. | **示例:** ```ts async function example() { console.info('createVideoAssetRequestDemo'); try { // 需要确保fileUri对应的资源存在 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.mp4'; let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createVideoAssetRequest(context, fileUri); await phAccessHelper.applyChanges(assetChangeRequest); console.info('apply createVideoAssetRequest successfully'); } catch (err) { console.error(`createVideoAssetRequestDemo failed with error: ${err.code}, ${err.message}`); } } ``` ### createAssetRequest11+ static createAssetRequest(context: Context, photoType: PhotoType, extension: string, options?: CreateOptions): MediaAssetChangeRequest 指定待创建的文件类型和扩展名,创建资产变更请求。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------- | ---- | -------------------------- | | context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | | photoType | [PhotoType](#phototype) | 是 | 待创建的文件类型,IMAGE或者VIDEO类型。 | | extension | string | 是 | 文件扩展名,例如:'jpg'。 | | options | [CreateOptions](#createoptions) | 否 | 创建选项,例如:{title: 'testPhoto'}。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | [MediaAssetChangeRequest](#mediaassetchangerequest11) | 返回创建资产的变更请求。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail. | **示例:** ```ts async function example() { console.info('createAssetRequestDemo'); try { let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; let extension: string = 'jpg'; let options: photoAccessHelper.CreateOptions = { title: 'testPhoto' } let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension, options); // 需要确保fileUri对应的资源存在 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, fileUri); await phAccessHelper.applyChanges(assetChangeRequest); console.info('apply createAssetRequest successfully'); } catch (err) { console.error(`createAssetRequestDemo failed with error: ${err.code}, ${err.message}`); } } ``` ### deleteAssets11+ static deleteAssets(context: Context, assets: Array<PhotoAsset>): Promise<void> 删除媒体文件,删除的文件进入到回收站,使用Promise方式返回结果。 **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------- | ---- | -------------------------- | | context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | | assets | Array<[PhotoAsset](#photoasset)> | 是 | 待删除的媒体文件数组。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise<void>| Promise对象,返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 201 | Permission denied. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('deleteAssetsDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; try { let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let photoAssetList: Array = await fetchResult.getAllObjects(); await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, photoAssetList); console.info('deleteAssets successfully'); } catch (err) { console.error(`deleteAssetsDemo failed with error: ${err.code}, ${err.message}`); } } ``` ### deleteAssets11+ static deleteAssets(context: Context, uriList: Array<string>): Promise<void> 删除媒体文件,删除的文件进入到回收站,使用Promise方式返回结果。 **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------- | ---- | -------------------------- | | context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | | uriList | Array<string> | 是 | 待删除的媒体文件uri数组。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise<void>| Promise对象,返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 201 | Permission denied. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000002 | Invalid asset uri. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('deleteAssetsDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; try { let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [asset.uri]); console.info('deleteAssets successfully'); } catch (err) { console.error(`deleteAssetsDemo failed with error: ${err.code}, ${err.message}`); } } ``` ### getAsset11+ getAsset(): PhotoAsset 获取当前资产变更请求中的资产。 **注意**:对于创建资产的变更请求,在调用[applyChanges](#applychanges11)提交生效之前,该接口返回null。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | [PhotoAsset](#photoasset) | 返回当前资产变更请求中的资产。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 14000011 | System inner fail. | **示例:** ```ts async function example() { console.info('getAssetDemo'); try { // 需要确保fileUri对应的资源存在 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createImageAssetRequest(context, fileUri); await phAccessHelper.applyChanges(assetChangeRequest); let asset: photoAccessHelper.PhotoAsset = assetChangeRequest.getAsset(); console.info('create asset successfully with uri = ' + asset.uri); } catch (err) { console.error(`getAssetDemo failed with error: ${err.code}, ${err.message}`); } } ``` ### setTitle11+ setTitle(title: string): void 修改媒体资产的标题。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ---------- | ------- | ---- | ---------------------------------- | | title | string | 是 | 待修改的资产标题。 | title参数规格为: - 不应包含扩展名。 - 文件名字符串长度为1~255。 - 不允许出现非法字符,包括:
. \ / : * ? " ' ` < > | { } [ ] **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; import { BusinessError } from '@kit.BasicServicesKit'; async function example() { console.info('setTitleDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOption: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOption); let asset = await fetchResult.getFirstObject(); let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); let newTitle: string = 'newTitle'; assetChangeRequest.setTitle(newTitle); phAccessHelper.applyChanges(assetChangeRequest).then(() => { console.info('apply setTitle successfully'); }).catch((err: BusinessError) => { console.error(`apply setTitle failed with error: ${err.code}, ${err.message}`); }); } ``` ### getWriteCacheHandler11+ getWriteCacheHandler(): Promise<number> 获取临时文件写句柄。 **注意**:对于同一个资产变更请求,不支持在成功获取临时文件写句柄后,重复调用该接口。 **需要权限**:ohos.permission.WRITE_IMAGEVIDEO **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise<number> | Promise对象,返回临时文件写句柄。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 201 | Permission denied. | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 14000011 | System inner fail. | | 14000016 | Operation Not Support. | **示例:** ```ts import { fileIo } from '@kit.CoreFileKit'; async function example() { console.info('getWriteCacheHandlerDemo'); try { let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.VIDEO; let extension: string = 'mp4'; let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension); let fd: number = await assetChangeRequest.getWriteCacheHandler(); console.info('getWriteCacheHandler successfully'); // write date into fd await fileIo.close(fd); await phAccessHelper.applyChanges(assetChangeRequest); } catch (err) { console.error(`getWriteCacheHandlerDemo failed with error: ${err.code}, ${err.message}`); } } ``` ### addResource11+ addResource(type: ResourceType, fileUri: string): void 通过fileUri从应用沙箱添加资源。 **注意**:对于同一个资产变更请求,不支持在成功添加资源后,重复调用该接口。对于动态照片,可调用两次该接口分别添加图片和视频资源。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------- | ---- | -------------------------- | | type | [ResourceType](#resourcetype11) | 是 | 待添加资源的类型。 | | fileUri | string | 是 | 待添加资源的数据来源,在应用沙箱下的uri。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 13900002 | No such file. | | 14000011 | System inner fail. | | 14000016 | Operation Not Support. | **示例:** ```ts async function example() { console.info('addResourceByFileUriDemo'); try { let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; let extension: string = 'jpg'; let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension); // 需要确保fileUri对应的资源存在 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, fileUri); await phAccessHelper.applyChanges(assetChangeRequest); console.info('addResourceByFileUri successfully'); } catch (err) { console.error(`addResourceByFileUriDemo failed with error: ${err.code}, ${err.message}`); } } ``` ### addResource11+ addResource(type: ResourceType, data: ArrayBuffer): void 通过ArrayBuffer数据添加资源。 **注意**:对于同一个资产变更请求,不支持在成功添加资源后,重复调用该接口。对于动态照片,可调用两次该接口分别添加图片和视频资源。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------- | ---- | -------------------------- | | type | [ResourceType](#resourcetype11) | 是 | 待添加资源的类型。 | | data | ArrayBuffer | 是 | 待添加资源的数据。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail. | | 14000016 | Operation Not Support. | **示例:** ```ts async function example() { console.info('addResourceByArrayBufferDemo'); try { let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; let extension: string = 'jpg'; let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension); let buffer: ArrayBuffer = new ArrayBuffer(2048); assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, buffer); await phAccessHelper.applyChanges(assetChangeRequest); console.info('addResourceByArrayBuffer successfully'); } catch (err) { console.error(`addResourceByArrayBufferDemo failed with error: ${err.code}, ${err.message}`); } } ``` ### saveCameraPhoto12+ saveCameraPhoto(): void 保存相机拍摄的照片。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **错误码:** 接口抛出错误码的详细介绍请参见[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 14000011 | System inner fail. | | 14000016 | Operation Not Support. | **示例:** ```ts async function example(asset: photoAccessHelper.PhotoAsset) { console.info('saveCameraPhotoDemo'); try { let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); assetChangeRequest.saveCameraPhoto(); await phAccessHelper.applyChanges(assetChangeRequest); console.info('apply saveCameraPhoto successfully'); } catch (err) { console.error(`apply saveCameraPhoto failed with error: ${err.code}, ${err.message}`); } } ``` ### saveCameraPhoto13+ saveCameraPhoto(imageFileType: ImageFileType): void 保存相机拍摄的照片。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ---------- | | imageFileType | [ImageFileType](#imagefiletype13) | 是 | 需要保存的类型。 | **错误码:** 接口抛出错误码的详细介绍请参见[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 14000011 | System inner fail. | | 14000016 | Operation Not Support. | **示例:** ```ts import { photoAccessHelper } from '@kit.MediaLibraryKit'; import { dataSharePredicates } from '@kit.ArkData'; import { image } from '@kit.ImageKit'; async function example(asset: photoAccessHelper.PhotoAsset) { console.info('saveCameraPhotoDemo'); try { let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); assetChangeRequest.saveCameraPhoto(photoAccessHelper.ImageFileType.JPEG); await phAccessHelper.applyChanges(assetChangeRequest); console.info('apply saveCameraPhoto successfully'); } catch (err) { console.error(`apply saveCameraPhoto failed with error: ${err.code}, ${err.message}`); } } ``` ### discardCameraPhoto12+ discardCameraPhoto(): void 丢弃相机拍摄的照片。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **错误码:** 接口抛出错误码的详细介绍请参见[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 14000011 | Internal system error. | | 14000016 | Operation Not Support. | **示例:** ```ts async function example(asset: photoAccessHelper.PhotoAsset) { console.info('discardCameraPhotoDemo'); try { let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); assetChangeRequest.discardCameraPhoto(); await phAccessHelper.applyChanges(assetChangeRequest); console.info('apply discardCameraPhoto successfully'); } catch (err) { console.error(`apply discardCameraPhoto failed with error: ${err.code}, ${err.message}`); } } ``` ## MediaAlbumChangeRequest11+ 相册变更请求。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core ### constructor11+ constructor(album: Album) 构造函数。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ---------- | | album | [Album](#album) | 是 | 需要变更的相册。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('MediaAlbumChangeRequest constructorDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions); let album: photoAccessHelper.Album = await fetchResult.getFirstObject(); let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album); } ``` ### getAlbum11+ getAlbum(): Album 获取当前相册变更请求中的相册。 **注意**:对于创建相册的变更请求,在调用[applyChanges](#applychanges11)提交生效之前,该接口返回null。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | [Album](#album) | 返回当前相册变更请求中的相册。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 14000011 | System inner fail. | **示例:** ```ts async function example() { console.info('getAlbumDemo'); try { // 请确保图库内存在用户相册 let albumFetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album); let changeRequestAlbum: photoAccessHelper.Album = albumChangeRequest.getAlbum(); console.info('change request album uri: ' + changeRequestAlbum.albumUri); } catch (err) { console.error(`getAlbumDemo failed with error: ${err.code}, ${err.message}`); } } ``` ### setAlbumName11+ setAlbumName(name: string): void 设置相册名称。 相册名的参数规格为: - 相册名字符串长度为1~255。 - 不允许出现非法字符,包括:
. \ / : * ? " ' ` < > | { } [ ] - 英文字符大小写不敏感。 - 相册名不允许重名。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ---------- | ------- | ---- | ---------------------------------- | | name | string | 是 | 待设置的相册名称。| **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail. | **示例:** ```ts async function example() { console.info('setAlbumNameDemo'); try { let albumFetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album); let newAlbumName: string = 'newAlbumName' + new Date().getTime(); albumChangeRequest.setAlbumName(newAlbumName); await phAccessHelper.applyChanges(albumChangeRequest); console.info('setAlbumName successfully'); } catch (err) { console.error(`setAlbumNameDemo failed with error: ${err.code}, ${err.message}`); } } ``` ### addAssets11+ addAssets(assets: Array<PhotoAsset>): void 向相册中添加资产。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ---------- | ------- | ---- | ---------------------------------- | | assets | Array<[PhotoAsset](#photoasset)> | 是 | 待添加到相册中的资产数组。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail. | | 14000016 | Operation Not Support. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('addAssetsDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; try { // 请确保图库内存在用户相册和照片 let fetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); let albumFetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album); albumChangeRequest.addAssets([asset]); await phAccessHelper.applyChanges(albumChangeRequest); console.info('addAssets successfully'); } catch (err) { console.error(`addAssetsDemo failed with error: ${err.code}, ${err.message}`); } } ``` ### removeAssets11+ removeAssets(assets: Array<PhotoAsset>): void 从相册中移除资产。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | ---------- | ------- | ---- | ---------------------------------- | | assets | Array<[PhotoAsset](#photoasset)> | 是 | 待从相册中移除的资产数组。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail. | | 14000016 | Operation Not Support. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { console.info('removeAssetsDemo'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; try { let albumFetchResult: photoAccessHelper.FetchResult = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); let fetchResult: photoAccessHelper.FetchResult = await album.getAssets(fetchOptions); let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album); albumChangeRequest.removeAssets([asset]); await phAccessHelper.applyChanges(albumChangeRequest); console.info('removeAssets successfully'); } catch (err) { console.error(`removeAssetsDemo failed with error: ${err.code}, ${err.message}`); } } ``` ## MediaAssetManager11+ 媒体资产管理类,管理各种媒体资源的读取操作。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core ### requestImage11+ static requestImage(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, dataHandler: MediaAssetDataHandler<image.ImageSource>): Promise<string> 根据不同的策略模式,请求图片资源。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.READ_IMAGEVIDEO - 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求图片资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。 - 对于本应用保存到媒体库的图片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。 **参数:** | 参数名 | 类型 | 必填 | 说明 | |----------------|-----------------------------------------------------------------------------------------------------------| ---- | ------------------------- | | context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | | asset | [PhotoAsset](#photoasset) | 是 | 待请求的的媒体文件对象。 | | requestOptions | [RequestOptions](#requestoptions11) | 是 | 图片请求策略模式配置项。| | dataHandler | [MediaAssetDataHandler](#mediaassetdatahandler11)<[image.ImageSource](../apis-image-kit/js-apis-image.md#imagesource)> | 是 | 媒体资源处理器,当所请求的图片资源准备完成时会触发回调。| **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise\ | Promise对象,返回请求id,可用于[cancelRequest](#cancelrequest12)取消请求。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 201 | Permission denied | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; import { image } from '@kit.ImageKit'; class MediaHandler implements photoAccessHelper.MediaAssetDataHandler { onDataPrepared(data: image.ImageSource) { if (data === undefined) { console.error('Error occurred when preparing data'); return; } console.info('on image data prepared'); } } async function example() { console.info('requestImage'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let requestOptions: photoAccessHelper.RequestOptions = { deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE, } const handler = new MediaHandler(); phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => { console.info('fetchResult success'); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); await photoAccessHelper.MediaAssetManager.requestImage(context, photoAsset, requestOptions, handler); console.info('requestImage successfully'); }); } ``` ### requestImageData11+ static requestImageData(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, dataHandler: MediaAssetDataHandler<ArrayBuffer>): Promise<string> 根据不同的策略模式,请求图片资源数据。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.READ_IMAGEVIDEO - 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求图片资源数据,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。 - 对于本应用保存到媒体库的图片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- |----------------------------------------------------------------------| ---- | ------------------------- | | context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | | asset | [PhotoAsset](#photoasset) | 是 | 待请求的的媒体文件对象。 | | requestOptions | [RequestOptions](#requestoptions11) | 是 | 图片请求策略模式配置项。 | | dataHandler | [MediaAssetDataHandler](#mediaassetdatahandler11)<ArrayBuffer> | 是 | 媒体资源处理器,当所请求的图片资源准备完成时会触发回调。| **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise\ | Promise对象,返回请求id,可用于[cancelRequest](#cancelrequest12)取消请求。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 201 | Permission denied | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; class MediaDataHandler implements photoAccessHelper.MediaAssetDataHandler { onDataPrepared(data: ArrayBuffer) { if (data === undefined) { console.error('Error occurred when preparing data'); return; } console.info('on image data prepared'); } } async function example() { console.info('requestImageData'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let requestOptions: photoAccessHelper.RequestOptions = { deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE, } const handler = new MediaDataHandler(); phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => { console.info('fetchResult success'); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); await photoAccessHelper.MediaAssetManager.requestImageData(context, photoAsset, requestOptions, handler); console.info('requestImageData successfully'); }); } ``` ### requestMovingPhoto12+ static requestMovingPhoto(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, dataHandler: MediaAssetDataHandler<MovingPhoto>): Promise<string> 根据不同的策略模式,请求动态照片对象。动态照片对象可用于请求动态照片的资源数据。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.READ_IMAGEVIDEO - 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求动态照片对象,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。 - 对于本应用保存到媒体库的动态照片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- |----------------------------------------------------------------------| ---- | ------------------------- | | context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | | asset | [PhotoAsset](#photoasset) | 是 | 待请求的的媒体文件对象。 | | requestOptions | [RequestOptions](#requestoptions11) | 是 | 图片请求策略模式配置项。| | dataHandler | [MediaAssetDataHandler](#mediaassetdatahandler11)<[MovingPhoto](#movingphoto12)> | 是 | 媒体资源处理器,当所请求的图片资源准备完成时会触发回调。| **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise\ | Promise对象,返回请求id,可用于[cancelRequest](#cancelrequest12)取消请求。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 201 | Permission denied | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler { async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) { if (movingPhoto === undefined) { console.error('Error occurred when preparing data'); return; } console.info("moving photo acquired successfully, uri: " + movingPhoto.getUri()); } } async function example() { let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; // 请确保图库内存在动态照片 let assetResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); let requestOptions: photoAccessHelper.RequestOptions = { deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE, } const handler = new MovingPhotoHandler(); try { let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler); console.info("moving photo requested successfully, requestId: " + requestId); } catch (err) { console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`); } } ``` ### requestVideoFile12+ static requestVideoFile(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, fileUri: string, dataHandler: MediaAssetDataHandler<boolean>): Promise<string> 根据不同的策略模式,请求视频资源数据到沙箱路径。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.READ_IMAGEVIDEO - 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求视频资源数据到应用沙箱,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。 - 对于本应用保存到媒体库的视频资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- |----------------------------------------------------------------------| ---- | ------------------------- | | context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。| | asset | [PhotoAsset](#photoasset) | 是 | 待请求的的媒体文件对象。 | | requestOptions | [RequestOptions](#requestoptions11) | 是 | 视频请求策略模式配置项。| | fileUri| string | 是 | 目标写入沙箱路径Uri。 | | dataHandler | [MediaAssetDataHandler](#mediaassetdatahandler11)<boolean> | 是 | 媒体资源处理器,当所请求的视频资源写入完成时会触发回调。| **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise\ | Promise对象,返回请求id,可用于[cancelRequest](#cancelrequest12)取消请求。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 201 | Permission denied | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; class MediaDataHandler implements photoAccessHelper.MediaAssetDataHandler { onDataPrepared(data: boolean) { console.info('on video request status prepared'); } } async function example() { console.info('requestVideoFile'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let requestOptions: photoAccessHelper.RequestOptions = { deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE, } const handler = new MediaDataHandler(); let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.mp4'; phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => { console.info('fetchResult success'); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); await photoAccessHelper.MediaAssetManager.requestVideoFile(context, photoAsset, requestOptions, fileUri, handler); console.info('requestVideoFile successfully'); }); } ``` ### cancelRequest12+ static cancelRequest(context: Context, requestId: string): Promise\ 取消尚未触发回调的资产内容请求。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.READ_IMAGEVIDEO **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- |----------------------------------------------------------------------| ---- | ------------------------- | | context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | | requestId | string | 是 | 需要取消的请求id。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise\ | Promise对象,返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 201 | Permission denied | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; async function example() { try { let requestId: string = 'xxx-xxx'; // 应用需使用requestImage等接口返回的有效requestId await photoAccessHelper.MediaAssetManager.cancelRequest(context, requestId); console.info("request cancelled successfully"); } catch (err) { console.error(`cancelRequest failed with error: ${err.code}, ${err.message}`); } } ``` ### loadMovingPhoto12+ static loadMovingPhoto(context: Context, imageFileUri: string, videoFileUri: string): Promise\ 加载应用沙箱的动态照片。 **原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- |----------------------------------------------------------------------| ---- | ------------------------- | | context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入AbilityContext或者UIExtensionContext的实例。 | | imageFileUri | string | 是 | 应用沙箱动态照片的图片uri。 | | videoFileUri | string | 是 | 应用沙箱动态照片的视频uri。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise\ | Promise对象,返回[MovingPhoto](#movingphoto12)实例。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | Internal system error. | **示例:** ```ts async function example() { try { let imageFileUri: string = 'file://com.example.temptest/data/storage/el2/base/haps/ImageFile.jpg'; // 应用沙箱动态照片的图片uri let videoFileUri: string = 'file://com.example.temptest/data/storage/el2/base/haps/VideoFile.mp4'; // 应用沙箱动态照片的视频uri let movingPhoto: photoAccessHelper.MovingPhoto = await photoAccessHelper.MediaAssetManager.loadMovingPhoto(context, imageFileUri, videoFileUri); } catch (err) { console.error(`loadMovingPhoto failed with error: ${err.code}, ${err.message}`); } } ``` ### quickRequestImage13+ static quickRequestImage(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, dataHandler: QuickImageDataHandler<image.Picture>): Promise<string> 根据不同的策略模式,快速请求图片资源。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.READ_IMAGEVIDEO 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求图片资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。 **参数:** | 参数名 | 类型 | 必填 | 说明 | |----------------|-----------------------------------------------------------------------------------------------------------| ---- | ------------------------- | | context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是 | 传入Ability实例的Context。 | | asset | [PhotoAsset](#photoasset) | 是 | 待请求的的媒体文件对象。 | | requestOptions | [RequestOptions](#requestoptions11) | 是 | 图片请求策略模式配置项。| | dataHandler | [QuickImageDataHandler](#quickimagedatahandler13)<[image.Picture](../apis-image-kit/js-apis-image.md#picture13)> | 是 | 媒体资源处理器,当所请求的图片资源准备完成时会触发回调。| **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise\ | Promise对象,返回请求id,可用于[cancelRequest](#cancelrequest12)取消请求。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 201 | Permission denied | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | Internal system error. | **示例:** ```ts import { photoAccessHelper } from '@kit.MediaLibraryKit'; import { dataSharePredicates } from '@kit.ArkData'; import { image } from '@kit.ImageKit'; class MediaHandler implements photoAccessHelper.QuickImageDataHandler { onDataPrepared(data: image.Picture, imageSource: image.ImageSource, map: Map) { console.info('on image data prepared'); } } async function example() { console.info('quickRequestImage'); let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; let requestOptions: photoAccessHelper.RequestOptions = { deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE, } const handler = new MediaHandler(); let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => { console.info('fetchResult success'); let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); await photoAccessHelper.MediaAssetManager.quickRequestImage(context, photoAsset, requestOptions, handler); console.info('quickRequestImage successfully'); }); } ``` ## MediaAssetDataHandler11+ 媒体资源处理器,应用在onDataPrepared方法中可自定义媒体资源处理逻辑。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core ### onDataPrepared11+ onDataPrepared(data: T, map?: Map): void 媒体资源就绪通知,当所请求的资源准备就绪时系统会回调此方法。如果资源准备出错,则回调的data为undefined。每个资源请求与回调一一对应。 T支持ArrayBuffer, [ImageSource](../apis-image-kit/js-apis-image.md#imagesource), [MovingPhoto](#movingphoto12)和boolean四种数据类型。其中,ArrayBuffer表示图片/视频资源数据,[ImageSource](../apis-image-kit/js-apis-image.md#imagesource)表示图片源,[MovingPhoto](#movingphoto12)表示动态照片对象,boolean表示图片/视频资源是否成功写入应用沙箱。 map支持返回的信息: | map键名 | 值说明 | |----------|-------| | 'quality' | 图片质量。高质量为'high',低质量为'low'。 | **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | |------|---| ---- |-------------------------------------------------------------------------------| | data | T | 是 | 已就绪的图片资源数据。泛型,支持ArrayBuffer, [ImageSource](../apis-image-kit/js-apis-image.md#imagesource), [MovingPhoto](#movingphoto12)和boolean四种数据类型。 | | map12+ | Map | 否 | 用于获取图片资源的额外信息,如图片质量。 | **示例** ```ts import { image } from '@kit.ImageKit'; class MediaHandler implements photoAccessHelper.MediaAssetDataHandler { onDataPrepared = (data: image.ImageSource, map: Map) => { if (data === undefined) { console.error('Error occurred when preparing data'); return; } // 自定义对ImageSource的处理逻辑 console.info('on image data prepared, photo quality is ' + map['quality']); } } class MediaDataHandler implements photoAccessHelper.MediaAssetDataHandler { onDataPrepared = (data: ArrayBuffer, map: Map) => { if (data === undefined) { console.error('Error occurred when preparing data'); return; } // 自定义对ArrayBuffer的处理逻辑 console.info('on image data prepared, photo quality is ' + map['quality']); } } class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler { onDataPrepared = (data: photoAccessHelper.MovingPhoto, map: Map) => { if (data === undefined) { console.error('Error occurred when preparing data'); return; } // 自定义对MovingPhoto的处理逻辑 console.info('on image data prepared, photo quality is ' + map['quality']); } } ``` ## QuickImageDataHandler13+ 媒体资源处理器,应用在onDataPrepared方法中可自定义媒体资源处理逻辑。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core ### onDataPrepared13+ onDataPrepared(data: T, imageSource: image.ImageSource, map: Map): void 媒体资源就绪通知,当所请求的图片资源准备就绪时系统会回调此方法。如果资源准备出错,则回调的data为undefined。 T支持Picture数据类型。 map支持返回的信息: | map键名 | 值说明 | |----------|-------| | 'quality' | 图片质量。高质量为'high',低质量为'low'。 | **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | |------|---| ---- |-------------------------------------------------------------------------------| | data | T | 是 | 已就绪的图片资源数据。泛型,支持[Picture](../apis-image-kit/js-apis-image.md#picture13)数据类型。 | | imageSource | image.ImageSource | 是 | 已就绪的图片资源数据。 | | map13+ | Map | 是 | 用于获取图片资源的额外信息,如图片质量。 | **示例** ```ts import { image } from '@kit.ImageKit'; class MediaHandler implements photoAccessHelper.QuickImageDataHandler { onDataPrepared(data: image.Picture, imageSource: image.ImageSource, map: Map) { console.info('on image data prepared'); } } ``` ## MovingPhoto12+ 动态照片对象。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core ### getUri12+ getUri(): string 获取动态照片的uri。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | string | 动态照片的uri。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | | 14000011 | System inner fail. | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler { async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) { if (movingPhoto === undefined) { console.error('Error occurred when preparing data'); return; } console.info("moving photo acquired successfully, uri: " + movingPhoto.getUri()); } } async function example() { let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; // 请确保图库内存在动态照片 let assetResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); let requestOptions: photoAccessHelper.RequestOptions = { deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE, } const handler = new MovingPhotoHandler(); try { let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler); console.info("moving photo requested successfully, requestId: " + requestId); } catch (err) { console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`); } } ``` ### requestContent12+ requestContent(imageFileUri: string, videoFileUri: string): Promise\ 同时请求动态照片的图片内容和视频内容,并写入参数指定的对应的uri中。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.READ_IMAGEVIDEO - 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求动态照片对象并读取内容,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-movingphoto.md)。 - 对于本应用保存到媒体库的动态照片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- |----------------------------------------------------------------------| ---- | ------------------------- | | imageFileUri | string | 是 | 待写入动态照片图片内容的uri。 | | videoFileUri | string | 是 | 待写入动态照片视频内容的uri。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise\ | Promise对象,返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 201 | Permission denied | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler { async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) { if (movingPhoto === undefined) { console.error('Error occurred when preparing data'); return; } // 应用需要确保待写入的uri是有效的 let imageFileUri: string = "file://com.example.temptest/data/storage/el2/base/haps/ImageFile.jpg"; let videoFileUri: string = "file://com.example.temptest/data/storage/el2/base/haps/VideoFile.mp4"; try { await movingPhoto.requestContent(imageFileUri, videoFileUri); console.log("moving photo contents retrieved successfully"); } catch (err) { console.error(`failed to retrieve contents of moving photo, error code is ${err.code}, message is ${err.message}`); } } } async function example() { let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; // 请确保图库内存在动态照片 let assetResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); let requestOptions: photoAccessHelper.RequestOptions = { deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE, } const handler = new MovingPhotoHandler(); try { let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler); console.info("moving photo requested successfully, requestId: " + requestId); } catch (err) { console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`); } } ``` ### requestContent12+ requestContent(resourceType: ResourceType, fileUri: string): Promise\ 请求指定资源类型的动态照片内容,并写入参数指定的uri中。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.READ_IMAGEVIDEO - 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求动态照片对象并读取内容,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-movingphoto.md)。 - 对于本应用保存到媒体库的动态照片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- |----------------------------------------------------------------------| ---- | ------------------------- | | resourceType | [ResourceType](#resourcetype11) | 是 | 所请求动态照片内容的资源类型。 | | fileUri | string | 是 |待写入动态照片内容的uri。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise\ | Promise对象,返回void。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 201 | Permission denied | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler { async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) { if (movingPhoto === undefined) { console.error('Error occurred when preparing data'); return; } // 应用需要确保待写入的uri是有效的 let imageFileUri: string = "file://com.example.temptest/data/storage/el2/base/haps/ImageFile.jpg"; try { await movingPhoto.requestContent(photoAccessHelper.ResourceType.IMAGE_RESOURCE, imageFileUri); console.log("moving photo image content retrieved successfully"); } catch (err) { console.error(`failed to retrieve image content of moving photo, error code is ${err.code}, message is ${err.message}`); } } } async function example() { let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; // 请确保图库内存在动态照片 let assetResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); let requestOptions: photoAccessHelper.RequestOptions = { deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE, } const handler = new MovingPhotoHandler(); try { let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler); console.info("moving photo requested successfully, requestId: " + requestId); } catch (err) { console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`); } } ``` ### requestContent12+ requestContent(resourceType: ResourceType): Promise\ 请求指定资源类型的动态照片内容,以ArrayBuffer的形式返回。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core **需要权限**:ohos.permission.READ_IMAGEVIDEO - 对于未申请'ohos.permission.READ_IMAGEVIDEO'权限的应用,可以通过picker的方式调用该接口来请求动态照片对象并读取内容,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-movingphoto.md)。 - 对于本应用保存到媒体库的动态照片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- |----------------------------------------------------------------------| ---- | ------------------------- | | resourceType | [ResourceType](#resourcetype11) | 是 | 所请求动态照片内容的资源类型。 | **返回值:** | 类型 | 说明 | | --------------------------------------- | ----------------- | | Promise\ | Promise对象,返回包含所请求文件内容的ArrayBuffer。 | **错误码:** 接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。 | 错误码ID | 错误信息 | | -------- | ---------------------------------------- | | 201 | Permission denied | | 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | | 14000011 | System inner fail | **示例:** ```ts import { dataSharePredicates } from '@kit.ArkData'; class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler { async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) { if (movingPhoto === undefined) { console.error('Error occurred when preparing data'); return; } try { let buffer: ArrayBuffer = await movingPhoto.requestContent(photoAccessHelper.ResourceType.IMAGE_RESOURCE); console.log("moving photo image content retrieved successfully, buffer length: " + buffer.byteLength); } catch (err) { console.error(`failed to retrieve image content of moving photo, error code is ${err.code}, message is ${err.message}`); } } } async function example() { let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO); let fetchOptions: photoAccessHelper.FetchOptions = { fetchColumns: [], predicates: predicates }; // 请确保图库内存在动态照片 let assetResult: photoAccessHelper.FetchResult = await phAccessHelper.getAssets(fetchOptions); let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); let requestOptions: photoAccessHelper.RequestOptions = { deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE, } const handler = new MovingPhotoHandler(); try { let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler); console.info("moving photo requested successfully, requestId: " + requestId); } catch (err) { console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`); } } ``` ## MemberType type MemberType = number | string | boolean PhotoAsset的成员类型。 成员类型为下表类型中的并集。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 类型 | 说明 | | ---- | ---- | | number | 表示值类型为数字,可取任意值。 | | string | 表示值类型为字符,可取任意值。| | boolean | 表示值类型为布尔类型。 | ## PhotoType 枚举,媒体文件类型。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 值 | 说明 | | ----- | ---- | ---- | | IMAGE | 1 | 图片。 | | VIDEO | 2 | 视频。 | ## PhotoSubtype12+ 枚举,不同[PhotoAsset](#photoasset)的类型。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 值 | 说明 | | ----- | ---- | ---- | | DEFAULT | 0 | 默认照片类型。 | | MOVING_PHOTO | 3 | 动态照片文件类型。 | | BURST | 4 | 连拍照片文件类型。 | ## DynamicRangeType12+ 枚举,媒体文件的动态范围类型。 **系统能力**: SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 值 | 说明 | | ----- | ---- | ---- | | SDR | 0 | 标准动态范围类型。| | HDR | 1 | 高动态范围类型。 | ## AlbumType 枚举,相册类型,表示是用户相册还是系统预置相册。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 值 | 说明 | | ------------------- | ---- | ------------------------- | | USER | 0 | 用户相册。 | | SYSTEM | 1024 | 系统预置相册。 | ## AlbumSubtype 枚举,相册子类型,表示具体的相册类型。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 值 | 说明 | | --------------------------------- | ---------- | ------------------------------- | | USER\_GENERIC | 1 | 用户相册。 | | FAVORITE | 1025 | 收藏夹。 | | VIDEO | 1026 | 视频相册。 | | IMAGE12+ | 1031 | 图片相册。 | | ANY | 2147483647 | 任意相册。 | ## PhotoKeys 枚举,图片和视频文件关键信息。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 值 | 说明 | | ------------- | ------------------- | ---------------------------------------------------------- | | URI | 'uri' | 文件uri。
注意:查询照片时,该字段仅支持使用[DataSharePredicates.equalTo](../apis-arkdata/js-apis-data-dataSharePredicates.md#equalto10)谓词。 | | PHOTO_TYPE | 'media_type' | 媒体文件类型。 | | DISPLAY_NAME | 'display_name' | 显示名字。 | | SIZE | 'size' | 文件大小(单位:字节)。 | | DATE_ADDED | 'date_added' | 添加日期(添加文件时间距1970年1月1日的秒数值)。 | | DATE_MODIFIED | 'date_modified' | 修改日期(修改文件时间距1970年1月1日的秒数值,修改文件名不会改变此值,当文件内容发生修改时才会更新)。 | | DURATION | 'duration' | 持续时间(单位:毫秒)。 | | WIDTH | 'width' | 图片宽度(单位:像素)。 | | HEIGHT | 'height' | 图片高度(单位:像素)。 | | DATE_TAKEN | 'date_taken' | 拍摄日期(文件拍照时间距1970年1月1日的秒数值)。 | | ORIENTATION | 'orientation' | 文件的旋转角度,单位为度。 | | FAVORITE | 'is_favorite' | 收藏。 | | TITLE | 'title' | 文件标题。 | | DATE_ADDED_MS12+ | 'date_added_ms' | 添加日期(添加文件时间距1970年1月1日的毫秒数值)。
注意:查询照片时,不支持基于该字段排序。 | | DATE_MODIFIED_MS12+ | 'date_modified_ms' | 修改日期(修改文件时间距1970年1月1日的毫秒数值,修改文件名不会改变此值,当文件内容发生修改时才会更新)。
注意:查询照片时,不支持基于该字段排序。 | | PHOTO_SUBTYPE12+ | 'subtype' | 媒体文件的子类型。 | | DYNAMIC_RANGE_TYPE12+ | 'dynamic_range_type' | 媒体文件的动态范围类型。 | | COVER_POSITION12+ | 'cover_position' | 动态照片的封面位置,具体表示封面帧所对应的视频时间戳(单位:微秒)。 | | BURST_KEY12+ | 'burst_key' | 一组连拍照片的唯一标识:uuid。 | | LCD_SIZE12+ | 'lcd_size' | LCD图片的宽高,值为width:height拼接而成的字符串。| | THM_SIZE12+ | 'thm_size' | THUMB图片的宽高,值为width:height拼接而成的字符串。| | DETAIL_TIME13+ | 'detail_time' | 大图浏览时间,值为拍摄时对应时区的时间的字符串,不会跟随时区变化。| | DATE_TAKEN_MS13+ | 'date_taken_ms' | 拍摄日期(文件拍照时间距1970年1月1日的毫秒数值)。| ## AlbumKeys 枚举,相册关键信息。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 值 | 说明 | | ------------- | ------------------- | ---------------------------------------------------------- | | URI | 'uri' | 相册uri。 | | ALBUM_NAME | 'album_name' | 相册名字。 | ## CreateOptions 图片或视频的创建选项。 title参数规格为: - 不应包含扩展名。 - 文件名字符串长度为1~255。 - 文件名中不允许出现的非法英文字符,包括:
. .. \ / : * ? " ' ` < > | { } [ ] **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 类型 | 必填 | 说明 | | ---------------------- | ------------------- | ---- | ------------------------------------------------ | | title | string | 否 | 图片或者视频的标题。 | | subtype12+ | [PhotoSubtype](#photosubtype12) | 否 | 图片或者视频的文件子类型。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | ## FetchOptions 检索条件。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 类型 | 可读 | 可写 | 说明 | | ---------------------- | ------------------- | ---- |---- | ------------------------------------------------ | | fetchColumns | Array<string> | 是 | 是 | 检索条件,指定列名查询。
对于照片,如果该参数为空,默认查询'uri'、'media_type'、'subtype'和'display_name',使用[get](#get)接口获取当前对象的其他属性时将会报错。示例:fetchColumns: ['uri', 'title']。
对于相册,如果该参数为空,默认查询'uri'和'album_name'。 | | predicates | [dataSharePredicates.DataSharePredicates](../apis-arkdata/js-apis-data-dataSharePredicates.md#datasharepredicates) | 是 | 是 | 谓词查询,显示过滤条件。 | ## RequestOptions11+ 请求策略。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 类型 | 只读 | 可选 | 说明 | | ---------------------- |----------------------------| ---- | ---- | ------------------------------------------- | | deliveryMode | [DeliveryMode](#deliverymode11) | 否 | 否 | 请求资源分发模式,可以指定对于该资源的请求策略,可被配置为快速模式,高质量模式,均衡模式三种策略。 | ## MediaChangeRequest11+ 媒体变更请求,资产变更请求和相册变更请求的父类型。 **注意**:媒体变更请求需要在调用[applyChanges](#applychanges11)后才会提交生效。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core ## ResourceType11+ 枚举,写入资源的类型。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 值 | 说明 | | ----- | ---- | ---- | | IMAGE_RESOURCE | 1 | 表示图片资源。 | | VIDEO_RESOURCE | 2 | 表示视频资源。 | ## ImageFileType13+ 枚举,图片保存类型。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 值 | 说明 | | ----- | ---- | ---- | | JPEG | 1 | 表示jpeg图片类型。 | | HEIF | 2 | 表示heif图片类型。 | ## ChangeData 监听器回调函数的值。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 类型 | 可读 | 可写 | 说明 | | ------- | --------------------------- | ---- | ---- | ------------------------------------------------------------ | | type | [NotifyType](#notifytype) | 是 | 否 | ChangeData的通知类型。 | | uris | Array<string> | 是 | 否 | 相同[NotifyType](#notifytype)的所有uri,可以是PhotoAsset或Album。 | | extraUris | Array<string> | 是 | 否 | 相册中变动文件的uri数组。 | ## NotifyType 枚举,通知事件的类型。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 值 | 说明 | | ------------------------- | ---- | -------------------------------- | | NOTIFY_ADD | 0 | 添加文件集或相册通知的类型。 | | NOTIFY_UPDATE | 1 | 文件集或相册的更新通知类型。 | | NOTIFY_REMOVE | 2 | 删除文件集或相册的通知类型。 | | NOTIFY_ALBUM_ADD_ASSET | 3 | 在相册中添加的文件集的通知类型。 | | NOTIFY_ALBUM_REMOVE_ASSET | 4 | 在相册中删除的文件集的通知类型。 | ## DefaultChangeUri 枚举,DefaultChangeUri子类型。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 值 | 说明 | | ----------------- | ----------------------- | ------------------------------------------------------------ | | DEFAULT_PHOTO_URI | 'file://media/Photo' | 默认PhotoAsset的Uri,与forSubUri{true}一起使用,将接收所有PhotoAsset的更改通知。 | | DEFAULT_ALBUM_URI | 'file://media/PhotoAlbum' | 默认相册的Uri,与forSubUri{true}一起使用,将接收所有相册的更改通知。 | ## PhotoViewMIMETypes 枚举,可选择的媒体文件类型。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 值 | 说明 | |---------------------------------------| ---- |----------| | IMAGE_TYPE | 'image/*' | 图片类型。 | | VIDEO_TYPE | 'video/*' | 视频类型。 | | IMAGE_VIDEO_TYPE | '\*/*' | 图片和视频类型。 | | MOVING_PHOTO_IMAGE_TYPE12+ | 'image/movingPhoto' | 动态照片类型。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | ## RecommendationType11+ 枚举,推荐的图片类型。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 值 | 说明 | | ----- | ---- | ---- | | QR_OR_BAR_CODE | 1 | 二维码或条码。 | | QR_CODE | 2 | 二维码。 | | BAR_CODE | 3 | 条码。 | | ID_CARD | 4 | 身份证。 | | PROFILE_PICTURE | 5 | 头像。 | | PASSPORT12+ | 6 | 护照。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | | BANK_CARD12+ | 7 | 银行卡。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | | DRIVER_LICENSE12+ | 8 | 驾驶证。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | | DRIVING_LICENSE12+ | 9 | 行驶证。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | | FEATURED_SINGLE_PORTRAIT12+ | 10 | 推荐人像。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; async function example() { try { let recommendOptions: photoAccessHelper.RecommendationOptions = { recommendationType: photoAccessHelper.RecommendationType.ID_CARD } let options: photoAccessHelper.PhotoSelectOptions = { MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE, maxSelectNumber: 1, recommendationOptions: recommendOptions } let photoPicker = new photoAccessHelper.PhotoViewPicker(); photoPicker.select(options).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); }).catch((err: BusinessError) => { console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`); }); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`); } } ``` ## TextContextInfo12+ 文本信息,用于推荐图片的文本信息。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 类型 | 必填 | 说明 | | ----------------------- | ------------------- | ---- | -------------------------------- | | text | string | 否 | 如果需要根据文本(支持250字以内的简体中文)推荐相应的图片,则配置此参数。 | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; async function example() { try { let textInfo: photoAccessHelper.TextContextInfo = { text: '上海野生动物园的大熊猫' } let recommendOptions: photoAccessHelper.RecommendationOptions = { textContextInfo: textInfo } let options: photoAccessHelper.PhotoSelectOptions = { MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE, maxSelectNumber: 1, recommendationOptions: recommendOptions } let photoPicker = new photoAccessHelper.PhotoViewPicker(); photoPicker.select(options).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); }).catch((err: BusinessError) => { console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`); }); } catch (error) { let err: BusinessError = error as BusinessError; console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`); } } ``` ## RecommendationOptions11+ 图片推荐选项(基于图片数据分析结果,依赖设备适配)。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 类型 | 必填 | 说明 | | ----------------------- | ------------------- | ---- | -------------------------------- | | recommendationType | [RecommendationType](#recommendationtype11) | 否 | 如果需要根据枚举值推荐相应的图片,则配置此参数。 | | textContextInfo12+ | [TextContextInfo](#textcontextinfo12) | 否 | 如果需要根据文本信息推荐相应的图片,则配置此参数(如果同时配置了recommendationType,则仅textContextInfo生效)。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | ## BaseSelectOptions12+ 图库选择选项基类。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 类型 | 必填 | 说明 | | ----------------------- | ------------------- | ---- | -------------------------------- | | MIMEType10+ | [PhotoViewMIMETypes](#photoviewmimetypes) | 否 | 可选择的媒体文件类型,若无此参数,则默认为图片和视频类型。
**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | | maxSelectNumber10+ | number | 否 | 选择媒体文件数量的最大值(最大可设置的值为500,若不设置则默认为50)。
**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | | isPhotoTakingSupported11+ | boolean | 否 | 是否支持拍照,true表示支持,false表示不支持,默认为true。
**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | | isSearchSupported11+ | boolean | 否 | 是否支持搜索,true表示支持,false表示不支持,默认为true。
**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | | recommendationOptions11+ | [RecommendationOptions](#recommendationoptions11) | 否 | 图片推荐相关配置参数。
**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | | preselectedUris11+ | Array<string> | 否 | 预选择图片的uri数据。
**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | | isPreviewForSingleSelectionSupported12+ | boolean | 否 | 单选模式下是否需要进大图预览,true表示需要,false表示不需要,默认为true。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | ## PhotoSelectOptions 图库选择选项子类,继承于BaseSelectOptions。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 类型 | 必填 | 说明 | | ----------------------- | ------------------- | ---- | -------------------------------- | | isEditSupported11+ | boolean | 否 | 是否支持编辑照片,true表示支持,false表示不支持,默认为true。 | | isOriginalSupported12+ | boolean | 否 | 是否显示选择原图按钮,true表示显示,false表示不显示,默认为false。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | | subWindowName12+ | string | 否 | 子窗窗口名称。
**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | | completeButtonText14+ | [CompleteButtonText](#completebuttontext14) | 否 | 完成按钮显示的内容。
完成按钮指在界面右下方,用户点击表示图片选择已完成的按钮。
**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 | ## PhotoSelectResult 返回图库选择后的结果集。 **原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 类型 | 可读 | 可写 | 说明 | | ----------------------- | ------------------- | ---- | ---- | ------------------------------ | | photoUris | Array<string> | 是 | 是 | 返回图库选择后的媒体文件的uri数组,此uri数组只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。 | | isOriginalPhoto | boolean | 是 | 是 | 返回图库选择后的媒体文件是否为原图。 | ## DeliveryMode11+ 枚举,资源分发模式。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 值 | 说明 | | ----- | ---- | ---- | | FAST_MODE | 0 | 快速模式。 | | HIGH_QUALITY_MODE | 1 | 高质量模式。 | | BALANCE_MODE | 2 | 均衡模式。 | ## PhotoCreationConfig12+ 保存图片/视频到媒体库的配置,包括保存的文件名等。 **原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 类型 | 必填 | 说明 | | ---------------------- | ------------------- | ---- | ------------------------------------------------ | | title | string | 否 | 图片或者视频的标题。| | fileNameExtension | string | 是 | 文件扩展名,例如'jpg'。| | photoType | [PhotoType](#phototype) | 是 | 创建的文件类型,IMAGE或者VIDEO。| | subtype | [PhotoSubtype](#photosubtype12) | 否 | 图片或者视频的文件子类型,DEFAULT或者MOVING_PHOTO。| ## CompleteButtonText14+ 配置完成按钮显示内容。 **系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core | 名称 | 值 | 说明 | | ----- | ---- | ---- | | TEXT_DONE14+ | 0 | 显示“完成”。 | | TEXT_SEND14+ | 1 | 显示“发送”。 | | TEXT_ADD14+ | 2 | 显示“添加”。 |