1e41f4b71Sopenharmony_ci# @ohos.file.photoAccessHelper (Album Management) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ciThe **photoAccessHelper** module provides APIs for album management, including creating an album and accessing and modifying media data in an album. 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci> **NOTE** 6e41f4b71Sopenharmony_ci> 7e41f4b71Sopenharmony_ci> The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version. 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci## Modules to Import 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci```ts 12e41f4b71Sopenharmony_ciimport { photoAccessHelper } from '@kit.MediaLibraryKit'; 13e41f4b71Sopenharmony_ci``` 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ci## photoAccessHelper.getPhotoAccessHelper 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_cigetPhotoAccessHelper(context: Context): PhotoAccessHelper 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ciObtains a **PhotoAccessHelper** instance for accessing and modifying media files in the album. 20e41f4b71Sopenharmony_ci 21e41f4b71Sopenharmony_ci**Model restriction**: This API can be used only in the stage model. 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ci**Parameters** 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 30e41f4b71Sopenharmony_ci| ------- | ------- | ---- | -------------------------- | 31e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ci**Return value** 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci| Type | Description | 36e41f4b71Sopenharmony_ci| ----------------------------- | :---- | 37e41f4b71Sopenharmony_ci| [PhotoAccessHelper](#photoaccesshelper) | **PhotoAccessHelper** instance obtained.| 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci**Error codes** 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci| ID| Error Message| 44e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 45e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 46e41f4b71Sopenharmony_ci 47e41f4b71Sopenharmony_ci**Example** 48e41f4b71Sopenharmony_ci 49e41f4b71Sopenharmony_ci```ts 50e41f4b71Sopenharmony_ci// The phAccessHelper instance obtained is a global object. It is used by default in subsequent operations. If the code snippet is not added, an error will be reported indicating that phAccessHelper is not defined. 51e41f4b71Sopenharmony_cilet context = getContext(this); 52e41f4b71Sopenharmony_cilet phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); 53e41f4b71Sopenharmony_ci``` 54e41f4b71Sopenharmony_ci 55e41f4b71Sopenharmony_ci## PhotoAccessHelper 56e41f4b71Sopenharmony_ci 57e41f4b71Sopenharmony_ci### getAssets 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_cigetAssets(options: FetchOptions, callback: AsyncCallback<FetchResult<PhotoAsset>>): void 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ciObtains image and video assets. This API uses an asynchronous callback to return the result. 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_ciIf the caller does not have the ohos.permission.READ_IMAGEVIDEO permission, use Picker to access the file and then call this API based on the URI obtained by Picker. For details, see [Obtaining an Image or Video by URI](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#obtaining-an-image-or-video-by-uri). 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ci**Parameters** 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 72e41f4b71Sopenharmony_ci| -------- | ------------------------ | ---- | ------------------------- | 73e41f4b71Sopenharmony_ci| options | [FetchOptions](#fetchoptions) | Yes | Options for fetching the image and video assets. | 74e41f4b71Sopenharmony_ci| callback | AsyncCallback<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | Yes | Callback used to return the image and video assets obtained.| 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci**Error codes** 77e41f4b71Sopenharmony_ci 78e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 79e41f4b71Sopenharmony_ci 80e41f4b71Sopenharmony_ci| ID| Error Message| 81e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 82e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 83e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 84e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 85e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ci**Example** 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ci```ts 90e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_ciasync function example() { 93e41f4b71Sopenharmony_ci console.info('getAssets'); 94e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 95e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 96e41f4b71Sopenharmony_ci fetchColumns: [], 97e41f4b71Sopenharmony_ci predicates: predicates 98e41f4b71Sopenharmony_ci }; 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => { 101e41f4b71Sopenharmony_ci if (fetchResult !== undefined) { 102e41f4b71Sopenharmony_ci console.info('fetchResult success'); 103e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 104e41f4b71Sopenharmony_ci if (photoAsset !== undefined) { 105e41f4b71Sopenharmony_ci console.info('photoAsset.displayName : ' + photoAsset.displayName); 106e41f4b71Sopenharmony_ci } 107e41f4b71Sopenharmony_ci } else { 108e41f4b71Sopenharmony_ci console.error(`fetchResult fail with error: ${err.code}, ${err.message}`); 109e41f4b71Sopenharmony_ci } 110e41f4b71Sopenharmony_ci }); 111e41f4b71Sopenharmony_ci} 112e41f4b71Sopenharmony_ci``` 113e41f4b71Sopenharmony_ci 114e41f4b71Sopenharmony_ci### getAssets 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_cigetAssets(options: FetchOptions): Promise<FetchResult<PhotoAsset>> 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ciObtains image and video assets. This API uses a promise to return the result. 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 121e41f4b71Sopenharmony_ci 122e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 123e41f4b71Sopenharmony_ci 124e41f4b71Sopenharmony_ciIf the caller does not have the ohos.permission.READ_IMAGEVIDEO permission, use Picker to access the file and then call this API based on the URI obtained by Picker. For details, see [Obtaining an Image or Video by URI](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#obtaining-an-image-or-video-by-uri). 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_ci**Parameters** 127e41f4b71Sopenharmony_ci 128e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 129e41f4b71Sopenharmony_ci| ------- | ------------------- | ---- | ---------------- | 130e41f4b71Sopenharmony_ci| options | [FetchOptions](#fetchoptions) | Yes | Options for fetching the image and video assets. | 131e41f4b71Sopenharmony_ci 132e41f4b71Sopenharmony_ci**Return value** 133e41f4b71Sopenharmony_ci 134e41f4b71Sopenharmony_ci| Type | Description | 135e41f4b71Sopenharmony_ci| --------------------------- | -------------- | 136e41f4b71Sopenharmony_ci| Promise<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | Promise used to return the image and video assets obtained.| 137e41f4b71Sopenharmony_ci 138e41f4b71Sopenharmony_ci**Error codes** 139e41f4b71Sopenharmony_ci 140e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 141e41f4b71Sopenharmony_ci 142e41f4b71Sopenharmony_ci| ID| Error Message| 143e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 144e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 145e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 146e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 147e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 148e41f4b71Sopenharmony_ci 149e41f4b71Sopenharmony_ci**Example** 150e41f4b71Sopenharmony_ci 151e41f4b71Sopenharmony_ci```ts 152e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 153e41f4b71Sopenharmony_ci 154e41f4b71Sopenharmony_ciasync function example() { 155e41f4b71Sopenharmony_ci console.info('getAssets'); 156e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 157e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 158e41f4b71Sopenharmony_ci fetchColumns: [], 159e41f4b71Sopenharmony_ci predicates: predicates 160e41f4b71Sopenharmony_ci }; 161e41f4b71Sopenharmony_ci try { 162e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 163e41f4b71Sopenharmony_ci if (fetchResult !== undefined) { 164e41f4b71Sopenharmony_ci console.info('fetchResult success'); 165e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 166e41f4b71Sopenharmony_ci if (photoAsset !== undefined) { 167e41f4b71Sopenharmony_ci console.info('photoAsset.displayName :' + photoAsset.displayName); 168e41f4b71Sopenharmony_ci } 169e41f4b71Sopenharmony_ci } 170e41f4b71Sopenharmony_ci } catch (err) { 171e41f4b71Sopenharmony_ci console.error(`getAssets failed, error: ${err.code}, ${err.message}`); 172e41f4b71Sopenharmony_ci } 173e41f4b71Sopenharmony_ci} 174e41f4b71Sopenharmony_ci``` 175e41f4b71Sopenharmony_ci 176e41f4b71Sopenharmony_ci### getBurstAssets<sup>12+</sup> 177e41f4b71Sopenharmony_ci 178e41f4b71Sopenharmony_cigetBurstAssets(burstKey: string, options: FetchOptions): Promise<FetchResult<PhotoAsset>> 179e41f4b71Sopenharmony_ci 180e41f4b71Sopenharmony_ciObtains burst assets. This API uses a promise to return the result. 181e41f4b71Sopenharmony_ci 182e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 183e41f4b71Sopenharmony_ci 184e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 185e41f4b71Sopenharmony_ci 186e41f4b71Sopenharmony_ci**Parameters** 187e41f4b71Sopenharmony_ci 188e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 189e41f4b71Sopenharmony_ci| ------- | ------------------- | ---- | ---------------- | 190e41f4b71Sopenharmony_ci| burstKey | string | Yes | UUID of a set of burst photos (**BURST_KEY** of [PhotoKeys](#photokeys)). | 191e41f4b71Sopenharmony_ci| options | [FetchOptions](#fetchoptions) | Yes | Options for fetching the burst photos. | 192e41f4b71Sopenharmony_ci 193e41f4b71Sopenharmony_ci**Return value** 194e41f4b71Sopenharmony_ci 195e41f4b71Sopenharmony_ci| Type | Description | 196e41f4b71Sopenharmony_ci| --------------------------- | -------------- | 197e41f4b71Sopenharmony_ci| Promise<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | Promise used to return the result.| 198e41f4b71Sopenharmony_ci 199e41f4b71Sopenharmony_ci**Error codes** 200e41f4b71Sopenharmony_ci 201e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 202e41f4b71Sopenharmony_ci 203e41f4b71Sopenharmony_ci| ID| Error Message| 204e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 205e41f4b71Sopenharmony_ci| 201 | Permission denied. | 206e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 207e41f4b71Sopenharmony_ci| 14000011 | Internal system error. | 208e41f4b71Sopenharmony_ci 209e41f4b71Sopenharmony_ci**Example** 210e41f4b71Sopenharmony_ci 211e41f4b71Sopenharmony_ci```ts 212e41f4b71Sopenharmony_ciimport { photoAccessHelper } form '@kit.MediaLibraryKit'; 213e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 214e41f4b71Sopenharmony_ci 215e41f4b71Sopenharmony_ciasync function example() { 216e41f4b71Sopenharmony_ci console.info('getBurstAssets'); 217e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 218e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 219e41f4b71Sopenharmony_ci fetchColumns: [], 220e41f4b71Sopenharmony_ci predicates: predicates 221e41f4b71Sopenharmony_ci }; 222e41f4b71Sopenharmony_ci // burstKey is a 36-bit UUID, which can be obtained from photoAccessHelper.PhotoKeys. 223e41f4b71Sopenharmony_ci let burstKey: string = "e719d696-09fa-44f8-ec3f215aa62a"; 224e41f4b71Sopenharmony_ci try { 225e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await 226e41f4b71Sopenharmony_ci phAccessHelper.getBurstAssets(burstKey, fetchOptions); 227e41f4b71Sopenharmony_ci if (fetchResult !== undefined) { 228e41f4b71Sopenharmony_ci console.info('fetchResult success'); 229e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 230e41f4b71Sopenharmony_ci if (photoAsset !== undefined) { 231e41f4b71Sopenharmony_ci console.info('photoAsset.displayName :' + photoAsset.displayName); 232e41f4b71Sopenharmony_ci } 233e41f4b71Sopenharmony_ci } 234e41f4b71Sopenharmony_ci } catch (err) { 235e41f4b71Sopenharmony_ci console.error(`getBurstAssets failed, error: ${err.code}, ${err.message}`); 236e41f4b71Sopenharmony_ci } 237e41f4b71Sopenharmony_ci} 238e41f4b71Sopenharmony_ci``` 239e41f4b71Sopenharmony_ci 240e41f4b71Sopenharmony_ci### createAsset 241e41f4b71Sopenharmony_ci 242e41f4b71Sopenharmony_cicreateAsset(photoType: PhotoType, extension: string, options: CreateOptions, callback: AsyncCallback<string>): void 243e41f4b71Sopenharmony_ci 244e41f4b71Sopenharmony_ciCreates an image or video asset with the specified file type, file name extension, and options. This API uses an asynchronous callback to return the result. 245e41f4b71Sopenharmony_ci 246e41f4b71Sopenharmony_ciIf the caller does not have the ohos.permission.WRITE_IMAGEVIDEO permission, you can create a media asset by using a security component. For details, see [Creating a Media Asset Using a Security Component](../../media/medialibrary/photoAccessHelper-savebutton.md). 247e41f4b71Sopenharmony_ci 248e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 249e41f4b71Sopenharmony_ci 250e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 251e41f4b71Sopenharmony_ci 252e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 253e41f4b71Sopenharmony_ci 254e41f4b71Sopenharmony_ci**Parameters** 255e41f4b71Sopenharmony_ci 256e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 257e41f4b71Sopenharmony_ci| -------- | ------------------------ | ---- | ------------------------- | 258e41f4b71Sopenharmony_ci| photoType | [PhotoType](#phototype) | Yes | Type of the file to create, which can be **IMAGE** or **VIDEO**. | 259e41f4b71Sopenharmony_ci| extension | string | Yes | File name extension, for example, **'jpg'**. | 260e41f4b71Sopenharmony_ci| options | [CreateOptions](#createoptions) | Yes | Options for creating the image or video asset, for example, **{title: 'testPhoto'}**. | 261e41f4b71Sopenharmony_ci| callback | AsyncCallback<string> | Yes | Callback used to return the URI of the created image or video.| 262e41f4b71Sopenharmony_ci 263e41f4b71Sopenharmony_ci**Error codes** 264e41f4b71Sopenharmony_ci 265e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 266e41f4b71Sopenharmony_ci 267e41f4b71Sopenharmony_ci| ID| Error Message| 268e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 269e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 270e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 271e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 272e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 273e41f4b71Sopenharmony_ci 274e41f4b71Sopenharmony_ci**Example** 275e41f4b71Sopenharmony_ci 276e41f4b71Sopenharmony_ci```ts 277e41f4b71Sopenharmony_ciasync function example() { 278e41f4b71Sopenharmony_ci console.info('createAssetDemo'); 279e41f4b71Sopenharmony_ci let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; 280e41f4b71Sopenharmony_ci let extension:string = 'jpg'; 281e41f4b71Sopenharmony_ci let options: photoAccessHelper.CreateOptions = { 282e41f4b71Sopenharmony_ci title: 'testPhoto' 283e41f4b71Sopenharmony_ci } 284e41f4b71Sopenharmony_ci phAccessHelper.createAsset(photoType, extension, options, (err, uri) => { 285e41f4b71Sopenharmony_ci if (uri !== undefined) { 286e41f4b71Sopenharmony_ci console.info('createAsset uri' + uri); 287e41f4b71Sopenharmony_ci console.info('createAsset successfully'); 288e41f4b71Sopenharmony_ci } else { 289e41f4b71Sopenharmony_ci console.error(`createAsset failed, error: ${err.code}, ${err.message}`); 290e41f4b71Sopenharmony_ci } 291e41f4b71Sopenharmony_ci }); 292e41f4b71Sopenharmony_ci} 293e41f4b71Sopenharmony_ci``` 294e41f4b71Sopenharmony_ci 295e41f4b71Sopenharmony_ci### createAsset 296e41f4b71Sopenharmony_ci 297e41f4b71Sopenharmony_cicreateAsset(photoType: PhotoType, extension: string, callback: AsyncCallback<string>): void 298e41f4b71Sopenharmony_ci 299e41f4b71Sopenharmony_ciCreates an image or video asset with the specified file type and file name extension. This API uses an asynchronous callback to return the result. 300e41f4b71Sopenharmony_ci 301e41f4b71Sopenharmony_ciIf the caller does not have the ohos.permission.WRITE_IMAGEVIDEO permission, you can create a media asset by using a security component. For details, see [Creating a Media Asset Using a Security Component](../../media/medialibrary/photoAccessHelper-savebutton.md). 302e41f4b71Sopenharmony_ci 303e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 304e41f4b71Sopenharmony_ci 305e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 306e41f4b71Sopenharmony_ci 307e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 308e41f4b71Sopenharmony_ci 309e41f4b71Sopenharmony_ci**Parameters** 310e41f4b71Sopenharmony_ci 311e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 312e41f4b71Sopenharmony_ci| -------- | ------------------------ | ---- | ------------------------- | 313e41f4b71Sopenharmony_ci| photoType | [PhotoType](#phototype) | Yes | Type of the file to create, which can be **IMAGE** or **VIDEO**. | 314e41f4b71Sopenharmony_ci| extension | string | Yes | File name extension, for example, **'jpg'**. | 315e41f4b71Sopenharmony_ci| callback | AsyncCallback<string> | Yes | Callback used to return the URI of the created image or video.| 316e41f4b71Sopenharmony_ci 317e41f4b71Sopenharmony_ci**Error codes** 318e41f4b71Sopenharmony_ci 319e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 320e41f4b71Sopenharmony_ci 321e41f4b71Sopenharmony_ci| ID| Error Message| 322e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 323e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 324e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 325e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 326e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 327e41f4b71Sopenharmony_ci 328e41f4b71Sopenharmony_ci**Example** 329e41f4b71Sopenharmony_ci 330e41f4b71Sopenharmony_ci```ts 331e41f4b71Sopenharmony_ciasync function example() { 332e41f4b71Sopenharmony_ci console.info('createAssetDemo'); 333e41f4b71Sopenharmony_ci let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; 334e41f4b71Sopenharmony_ci let extension: string = 'jpg'; 335e41f4b71Sopenharmony_ci phAccessHelper.createAsset(photoType, extension, (err, uri) => { 336e41f4b71Sopenharmony_ci if (uri !== undefined) { 337e41f4b71Sopenharmony_ci console.info('createAsset uri' + uri); 338e41f4b71Sopenharmony_ci console.info('createAsset successfully'); 339e41f4b71Sopenharmony_ci } else { 340e41f4b71Sopenharmony_ci console.error(`createAsset failed, error: ${err.code}, ${err.message}`); 341e41f4b71Sopenharmony_ci } 342e41f4b71Sopenharmony_ci }); 343e41f4b71Sopenharmony_ci} 344e41f4b71Sopenharmony_ci``` 345e41f4b71Sopenharmony_ci 346e41f4b71Sopenharmony_ci### createAsset 347e41f4b71Sopenharmony_ci 348e41f4b71Sopenharmony_cicreateAsset(photoType: PhotoType, extension: string, options?: CreateOptions): Promise<string> 349e41f4b71Sopenharmony_ci 350e41f4b71Sopenharmony_ciCreates an image or video asset with the specified file type, file name extension, and options. This API uses a promise to return the result. 351e41f4b71Sopenharmony_ci 352e41f4b71Sopenharmony_ciIf the caller does not have the ohos.permission.WRITE_IMAGEVIDEO permission, you can create a media asset by using a security component. For details, see [Creating a Media Asset Using a Security Component](../../media/medialibrary/photoAccessHelper-savebutton.md). 353e41f4b71Sopenharmony_ci 354e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 355e41f4b71Sopenharmony_ci 356e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 357e41f4b71Sopenharmony_ci 358e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 359e41f4b71Sopenharmony_ci 360e41f4b71Sopenharmony_ci**Parameters** 361e41f4b71Sopenharmony_ci 362e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 363e41f4b71Sopenharmony_ci| -------- | ------------------------ | ---- | ------------------------- | 364e41f4b71Sopenharmony_ci| photoType | [PhotoType](#phototype) | Yes | Type of the file to create, which can be **IMAGE** or **VIDEO**. | 365e41f4b71Sopenharmony_ci| extension | string | Yes | File name extension, for example, **'jpg'**. | 366e41f4b71Sopenharmony_ci| options | [CreateOptions](#createoptions) | No | Options for creating the image or video asset, for example, **{title: 'testPhoto'}**. | 367e41f4b71Sopenharmony_ci 368e41f4b71Sopenharmony_ci**Return value** 369e41f4b71Sopenharmony_ci 370e41f4b71Sopenharmony_ci| Type | Description | 371e41f4b71Sopenharmony_ci| --------------------------- | -------------- | 372e41f4b71Sopenharmony_ci| Promise<string> | Promise used to return the URI of the created image or video asset.| 373e41f4b71Sopenharmony_ci 374e41f4b71Sopenharmony_ci**Error codes** 375e41f4b71Sopenharmony_ci 376e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 377e41f4b71Sopenharmony_ci 378e41f4b71Sopenharmony_ci| ID| Error Message| 379e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 380e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 381e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 382e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 383e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 384e41f4b71Sopenharmony_ci 385e41f4b71Sopenharmony_ci**Example** 386e41f4b71Sopenharmony_ci 387e41f4b71Sopenharmony_ci```ts 388e41f4b71Sopenharmony_ciasync function example() { 389e41f4b71Sopenharmony_ci console.info('createAssetDemo'); 390e41f4b71Sopenharmony_ci try { 391e41f4b71Sopenharmony_ci let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; 392e41f4b71Sopenharmony_ci let extension: string = 'jpg'; 393e41f4b71Sopenharmony_ci let options: photoAccessHelper.CreateOptions = { 394e41f4b71Sopenharmony_ci title: 'testPhoto' 395e41f4b71Sopenharmony_ci } 396e41f4b71Sopenharmony_ci let uri: string = await phAccessHelper.createAsset(photoType, extension, options); 397e41f4b71Sopenharmony_ci console.info('createAsset uri' + uri); 398e41f4b71Sopenharmony_ci console.info('createAsset successfully'); 399e41f4b71Sopenharmony_ci } catch (err) { 400e41f4b71Sopenharmony_ci console.error(`createAsset failed, error: ${err.code}, ${err.message}`); 401e41f4b71Sopenharmony_ci } 402e41f4b71Sopenharmony_ci} 403e41f4b71Sopenharmony_ci``` 404e41f4b71Sopenharmony_ci 405e41f4b71Sopenharmony_ci### getAlbums 406e41f4b71Sopenharmony_ci 407e41f4b71Sopenharmony_cigetAlbums(type: AlbumType, subtype: AlbumSubtype, options: FetchOptions, callback: AsyncCallback<FetchResult<Album>>): void 408e41f4b71Sopenharmony_ci 409e41f4b71Sopenharmony_ciObtains albums based on the specified options and album type. This API uses an asynchronous callback to return the result. 410e41f4b71Sopenharmony_ci 411e41f4b71Sopenharmony_ciBefore the operation, ensure that the albums to obtain exist. 412e41f4b71Sopenharmony_ci 413e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 414e41f4b71Sopenharmony_ci 415e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 416e41f4b71Sopenharmony_ci 417e41f4b71Sopenharmony_ci**Parameters** 418e41f4b71Sopenharmony_ci 419e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 420e41f4b71Sopenharmony_ci| -------- | ------------------------ | ---- | ------------------------- | 421e41f4b71Sopenharmony_ci| type | [AlbumType](#albumtype) | Yes | Type of the albums to obtain. | 422e41f4b71Sopenharmony_ci| subtype | [AlbumSubtype](#albumsubtype) | Yes | Subtype of the album. | 423e41f4b71Sopenharmony_ci| options | [FetchOptions](#fetchoptions) | Yes | Options for fetching the albums. | 424e41f4b71Sopenharmony_ci| callback | AsyncCallback<[FetchResult](#fetchresult)<[Album](#album)>> | Yes | Callback used to return the result.| 425e41f4b71Sopenharmony_ci 426e41f4b71Sopenharmony_ci**Error codes** 427e41f4b71Sopenharmony_ci 428e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 429e41f4b71Sopenharmony_ci 430e41f4b71Sopenharmony_ci| ID| Error Message| 431e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 432e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 433e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 434e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 435e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 436e41f4b71Sopenharmony_ci 437e41f4b71Sopenharmony_ci**Example** 438e41f4b71Sopenharmony_ci 439e41f4b71Sopenharmony_ci```ts 440e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 441e41f4b71Sopenharmony_ci 442e41f4b71Sopenharmony_ciasync function example() { 443e41f4b71Sopenharmony_ci // Obtain the album named newAlbumName. 444e41f4b71Sopenharmony_ci console.info('getAlbumsDemo'); 445e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 446e41f4b71Sopenharmony_ci predicates.equalTo('album_name', 'newAlbumName'); 447e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 448e41f4b71Sopenharmony_ci fetchColumns: [], 449e41f4b71Sopenharmony_ci predicates: predicates 450e41f4b71Sopenharmony_ci }; 451e41f4b71Sopenharmony_ci phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions, async (err, fetchResult) => { 452e41f4b71Sopenharmony_ci if (err) { 453e41f4b71Sopenharmony_ci console.error(`getAlbumsCallback failed with err: ${err.code}, ${err.message}`); 454e41f4b71Sopenharmony_ci return; 455e41f4b71Sopenharmony_ci } 456e41f4b71Sopenharmony_ci if (fetchResult === undefined) { 457e41f4b71Sopenharmony_ci console.error('getAlbumsCallback fetchResult is undefined'); 458e41f4b71Sopenharmony_ci return; 459e41f4b71Sopenharmony_ci } 460e41f4b71Sopenharmony_ci let album = await fetchResult.getFirstObject(); 461e41f4b71Sopenharmony_ci console.info('getAlbumsCallback successfully, albumName: ' + album.albumName); 462e41f4b71Sopenharmony_ci fetchResult.close(); 463e41f4b71Sopenharmony_ci }); 464e41f4b71Sopenharmony_ci} 465e41f4b71Sopenharmony_ci``` 466e41f4b71Sopenharmony_ci 467e41f4b71Sopenharmony_ci### getAlbums 468e41f4b71Sopenharmony_ci 469e41f4b71Sopenharmony_cigetAlbums(type: AlbumType, subtype: AlbumSubtype, callback: AsyncCallback<FetchResult<Album>>): void 470e41f4b71Sopenharmony_ci 471e41f4b71Sopenharmony_ciObtains albums by type. This API uses an asynchronous callback to return the result. 472e41f4b71Sopenharmony_ci 473e41f4b71Sopenharmony_ciBefore the operation, ensure that the albums to obtain exist. 474e41f4b71Sopenharmony_ci 475e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 476e41f4b71Sopenharmony_ci 477e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 478e41f4b71Sopenharmony_ci 479e41f4b71Sopenharmony_ci**Parameters** 480e41f4b71Sopenharmony_ci 481e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 482e41f4b71Sopenharmony_ci| -------- | ------------------------ | ---- | ------------------------- | 483e41f4b71Sopenharmony_ci| type | [AlbumType](#albumtype) | Yes | Type of the albums to obtain. | 484e41f4b71Sopenharmony_ci| subtype | [AlbumSubtype](#albumsubtype) | Yes | Subtype of the album. | 485e41f4b71Sopenharmony_ci| callback | AsyncCallback<[FetchResult](#fetchresult)<[Album](#album)>> | Yes | Callback used to return the result.| 486e41f4b71Sopenharmony_ci 487e41f4b71Sopenharmony_ci**Error codes** 488e41f4b71Sopenharmony_ci 489e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 490e41f4b71Sopenharmony_ci 491e41f4b71Sopenharmony_ci| ID| Error Message| 492e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 493e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 494e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 495e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 496e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 497e41f4b71Sopenharmony_ci 498e41f4b71Sopenharmony_ci**Example** 499e41f4b71Sopenharmony_ci 500e41f4b71Sopenharmony_ci```ts 501e41f4b71Sopenharmony_ciasync function example() { 502e41f4b71Sopenharmony_ci // Obtain the system album VIDEO, which is preset by default. 503e41f4b71Sopenharmony_ci console.info('getAlbumsDemo'); 504e41f4b71Sopenharmony_ci phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.VIDEO, async (err, fetchResult) => { 505e41f4b71Sopenharmony_ci if (err) { 506e41f4b71Sopenharmony_ci console.error(`getAlbumsCallback failed with err: ${err.code}, ${err.message}`); 507e41f4b71Sopenharmony_ci return; 508e41f4b71Sopenharmony_ci } 509e41f4b71Sopenharmony_ci if (fetchResult === undefined) { 510e41f4b71Sopenharmony_ci console.error('getAlbumsCallback fetchResult is undefined'); 511e41f4b71Sopenharmony_ci return; 512e41f4b71Sopenharmony_ci } 513e41f4b71Sopenharmony_ci let album: photoAccessHelper.Album = await fetchResult.getFirstObject(); 514e41f4b71Sopenharmony_ci console.info('getAlbumsCallback successfully, albumUri: ' + album.albumUri); 515e41f4b71Sopenharmony_ci fetchResult.close(); 516e41f4b71Sopenharmony_ci }); 517e41f4b71Sopenharmony_ci} 518e41f4b71Sopenharmony_ci``` 519e41f4b71Sopenharmony_ci 520e41f4b71Sopenharmony_ci### getAlbums 521e41f4b71Sopenharmony_ci 522e41f4b71Sopenharmony_cigetAlbums(type: AlbumType, subtype: AlbumSubtype, options?: FetchOptions): Promise<FetchResult<Album>> 523e41f4b71Sopenharmony_ci 524e41f4b71Sopenharmony_ciObtains albums based on the specified options and album type. This API uses a promise to return the result. 525e41f4b71Sopenharmony_ci 526e41f4b71Sopenharmony_ciBefore the operation, ensure that the albums to obtain exist. 527e41f4b71Sopenharmony_ci 528e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 529e41f4b71Sopenharmony_ci 530e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 531e41f4b71Sopenharmony_ci 532e41f4b71Sopenharmony_ci**Parameters** 533e41f4b71Sopenharmony_ci 534e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 535e41f4b71Sopenharmony_ci| -------- | ------------------------ | ---- | ------------------------- | 536e41f4b71Sopenharmony_ci| type | [AlbumType](#albumtype) | Yes | Type of the albums to obtain. | 537e41f4b71Sopenharmony_ci| subtype | [AlbumSubtype](#albumsubtype) | Yes | Subtype of the album. | 538e41f4b71Sopenharmony_ci| options | [FetchOptions](#fetchoptions) | No | Options for fetching the albums. If this parameter is not specified, the albums are obtained based on the album type by default. | 539e41f4b71Sopenharmony_ci 540e41f4b71Sopenharmony_ci**Return value** 541e41f4b71Sopenharmony_ci 542e41f4b71Sopenharmony_ci| Type | Description | 543e41f4b71Sopenharmony_ci| --------------------------- | -------------- | 544e41f4b71Sopenharmony_ci| Promise<[FetchResult](#fetchresult)<[Album](#album)>> | Promise used to return the result.| 545e41f4b71Sopenharmony_ci 546e41f4b71Sopenharmony_ci**Error codes** 547e41f4b71Sopenharmony_ci 548e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 549e41f4b71Sopenharmony_ci 550e41f4b71Sopenharmony_ci| ID| Error Message| 551e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 552e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 553e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 554e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 555e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 556e41f4b71Sopenharmony_ci 557e41f4b71Sopenharmony_ci**Example** 558e41f4b71Sopenharmony_ci 559e41f4b71Sopenharmony_ci```ts 560e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 561e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 562e41f4b71Sopenharmony_ci 563e41f4b71Sopenharmony_ciasync function example() { 564e41f4b71Sopenharmony_ci // Obtain the album named newAlbumName. 565e41f4b71Sopenharmony_ci console.info('getAlbumsDemo'); 566e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 567e41f4b71Sopenharmony_ci predicates.equalTo('album_name', 'newAlbumName'); 568e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 569e41f4b71Sopenharmony_ci fetchColumns: [], 570e41f4b71Sopenharmony_ci predicates: predicates 571e41f4b71Sopenharmony_ci }; 572e41f4b71Sopenharmony_ci phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions).then( async (fetchResult) => { 573e41f4b71Sopenharmony_ci if (fetchResult === undefined) { 574e41f4b71Sopenharmony_ci console.error('getAlbumsPromise fetchResult is undefined'); 575e41f4b71Sopenharmony_ci return; 576e41f4b71Sopenharmony_ci } 577e41f4b71Sopenharmony_ci let album: photoAccessHelper.Album = await fetchResult.getFirstObject(); 578e41f4b71Sopenharmony_ci console.info('getAlbumsPromise successfully, albumName: ' + album.albumName); 579e41f4b71Sopenharmony_ci fetchResult.close(); 580e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 581e41f4b71Sopenharmony_ci console.error(`getAlbumsPromise failed with err: ${err.code}, ${err.message}`); 582e41f4b71Sopenharmony_ci }); 583e41f4b71Sopenharmony_ci} 584e41f4b71Sopenharmony_ci``` 585e41f4b71Sopenharmony_ci 586e41f4b71Sopenharmony_ci### registerChange 587e41f4b71Sopenharmony_ci 588e41f4b71Sopenharmony_ciregisterChange(uri: string, forChildUris: boolean, callback: Callback<ChangeData>) : void 589e41f4b71Sopenharmony_ci 590e41f4b71Sopenharmony_ciRegisters listening for the specified URI. This API uses a callback to return the result. 591e41f4b71Sopenharmony_ci 592e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 593e41f4b71Sopenharmony_ci 594e41f4b71Sopenharmony_ci**Parameters** 595e41f4b71Sopenharmony_ci 596e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 597e41f4b71Sopenharmony_ci| --------- | ------------------------------------------- | ---- | ------------------------------------------------------------ | 598e41f4b71Sopenharmony_ci| uri | string | Yes | URI of the photo asset, URI of the album, or [DefaultChangeUri](#defaultchangeuri).| 599e41f4b71Sopenharmony_ci| forChildUris | boolean | Yes | Whether to perform fuzzy listening.<br>If **uri** is the URI of an album, the value **true** means to listen for the changes of the files in the album; the value **false** means to listen for the changes of the album only. <br>If **uri** is the URI of a **photoAsset**, there is no difference between **true** and **false** for **forChildUris**.<br>If **uri** is **DefaultChangeUri**, **forChildUris** must be set to **true**. If **forChildUris** is **false**, the URI cannot be found and no message can be received.| 600e41f4b71Sopenharmony_ci| callback | Callback<[ChangeData](#changedata)> | Yes | Callback used to return the [ChangeData](#changedata). <br>**NOTE**<br>Multiple callback listeners can be registered for a URI. You can use [unRegisterChange](#unregisterchange) to unregister all listeners for the URI or a specified callback listener.| 601e41f4b71Sopenharmony_ci 602e41f4b71Sopenharmony_ci**Error codes** 603e41f4b71Sopenharmony_ci 604e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 605e41f4b71Sopenharmony_ci 606e41f4b71Sopenharmony_ci| ID| Error Message| 607e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 608e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 609e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 610e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 611e41f4b71Sopenharmony_ci 612e41f4b71Sopenharmony_ci**Example** 613e41f4b71Sopenharmony_ci 614e41f4b71Sopenharmony_ci```ts 615e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 616e41f4b71Sopenharmony_ci 617e41f4b71Sopenharmony_ciasync function example() { 618e41f4b71Sopenharmony_ci console.info('registerChangeDemo'); 619e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 620e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 621e41f4b71Sopenharmony_ci fetchColumns: [], 622e41f4b71Sopenharmony_ci predicates: predicates 623e41f4b71Sopenharmony_ci }; 624e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 625e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 626e41f4b71Sopenharmony_ci if (photoAsset !== undefined) { 627e41f4b71Sopenharmony_ci console.info('photoAsset.displayName : ' + photoAsset.displayName); 628e41f4b71Sopenharmony_ci } 629e41f4b71Sopenharmony_ci let onCallback1 = (changeData: photoAccessHelper.ChangeData) => { 630e41f4b71Sopenharmony_ci console.info('onCallback1 success, changData: ' + JSON.stringify(changeData)); 631e41f4b71Sopenharmony_ci //file had changed, do something 632e41f4b71Sopenharmony_ci } 633e41f4b71Sopenharmony_ci let onCallback2 = (changeData: photoAccessHelper.ChangeData) => { 634e41f4b71Sopenharmony_ci console.info('onCallback2 success, changData: ' + JSON.stringify(changeData)); 635e41f4b71Sopenharmony_ci //file had changed, do something 636e41f4b71Sopenharmony_ci } 637e41f4b71Sopenharmony_ci // Register onCallback1. 638e41f4b71Sopenharmony_ci phAccessHelper.registerChange(photoAsset.uri, false, onCallback1); 639e41f4b71Sopenharmony_ci // Register onCallback2. 640e41f4b71Sopenharmony_ci phAccessHelper.registerChange(photoAsset.uri, false, onCallback2); 641e41f4b71Sopenharmony_ci 642e41f4b71Sopenharmony_ci await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [photoAsset]); 643e41f4b71Sopenharmony_ci} 644e41f4b71Sopenharmony_ci``` 645e41f4b71Sopenharmony_ci 646e41f4b71Sopenharmony_ci### unRegisterChange 647e41f4b71Sopenharmony_ci 648e41f4b71Sopenharmony_ciunRegisterChange(uri: string, callback?: Callback<ChangeData>): void 649e41f4b71Sopenharmony_ci 650e41f4b71Sopenharmony_ciUnregisters listening for the specified URI. Multiple callbacks can be registered for a URI for listening. You can use this API to unregister the listening of the specified callbacks or all callbacks. 651e41f4b71Sopenharmony_ci 652e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 653e41f4b71Sopenharmony_ci 654e41f4b71Sopenharmony_ci**Parameters** 655e41f4b71Sopenharmony_ci 656e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 657e41f4b71Sopenharmony_ci| -------- | ------------------------------------------- | ---- | ------------------------------------------------------------ | 658e41f4b71Sopenharmony_ci| uri | string | Yes | URI of the photo asset, URI of the album, or [DefaultChangeUri](#defaultchangeuri).| 659e41f4b71Sopenharmony_ci| callback | Callback<[ChangeData](#changedata)> | No | Callback to unregister. If this parameter is not specified, all the callbacks for listening for the URI will be canceled. <br>**NOTE**: The specified callback unregistered will not be invoked when the data changes.| 660e41f4b71Sopenharmony_ci 661e41f4b71Sopenharmony_ci**Error codes** 662e41f4b71Sopenharmony_ci 663e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 664e41f4b71Sopenharmony_ci 665e41f4b71Sopenharmony_ci| ID| Error Message| 666e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 667e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 668e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 669e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 670e41f4b71Sopenharmony_ci 671e41f4b71Sopenharmony_ci**Example** 672e41f4b71Sopenharmony_ci 673e41f4b71Sopenharmony_ci```ts 674e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 675e41f4b71Sopenharmony_ci 676e41f4b71Sopenharmony_ciasync function example() { 677e41f4b71Sopenharmony_ci console.info('offDemo'); 678e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 679e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 680e41f4b71Sopenharmony_ci fetchColumns: [], 681e41f4b71Sopenharmony_ci predicates: predicates 682e41f4b71Sopenharmony_ci }; 683e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 684e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 685e41f4b71Sopenharmony_ci if (photoAsset !== undefined) { 686e41f4b71Sopenharmony_ci console.info('photoAsset.displayName : ' + photoAsset.displayName); 687e41f4b71Sopenharmony_ci } 688e41f4b71Sopenharmony_ci let onCallback1 = (changeData: photoAccessHelper.ChangeData) => { 689e41f4b71Sopenharmony_ci console.info('onCallback1 on'); 690e41f4b71Sopenharmony_ci } 691e41f4b71Sopenharmony_ci let onCallback2 = (changeData: photoAccessHelper.ChangeData) => { 692e41f4b71Sopenharmony_ci console.info('onCallback2 on'); 693e41f4b71Sopenharmony_ci } 694e41f4b71Sopenharmony_ci // Register onCallback1. 695e41f4b71Sopenharmony_ci phAccessHelper.registerChange(photoAsset.uri, false, onCallback1); 696e41f4b71Sopenharmony_ci // Register onCallback2. 697e41f4b71Sopenharmony_ci phAccessHelper.registerChange(photoAsset.uri, false, onCallback2); 698e41f4b71Sopenharmony_ci // Unregister the listening of onCallback1. 699e41f4b71Sopenharmony_ci phAccessHelper.unRegisterChange(photoAsset.uri, onCallback1); 700e41f4b71Sopenharmony_ci await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [photoAsset]); 701e41f4b71Sopenharmony_ci} 702e41f4b71Sopenharmony_ci``` 703e41f4b71Sopenharmony_ci 704e41f4b71Sopenharmony_ci### createDeleteRequest<sup>(deprecated)</sup> 705e41f4b71Sopenharmony_ci 706e41f4b71Sopenharmony_cicreateDeleteRequest(uriList: Array<string>, callback: AsyncCallback<void>): void 707e41f4b71Sopenharmony_ci 708e41f4b71Sopenharmony_ciCreates a dialog box for deleting media files. This API uses an asynchronous callback to return the result. The deleted media files are moved to the trash. 709e41f4b71Sopenharmony_ci 710e41f4b71Sopenharmony_ci> **NOTE** 711e41f4b71Sopenharmony_ci> 712e41f4b71Sopenharmony_ci> This API is supported since API version 10 and deprecated since API version 11. Use [MediaAssetChangeRequest.deleteAssets](#deleteassets11-1) instead. 713e41f4b71Sopenharmony_ci 714e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 715e41f4b71Sopenharmony_ci 716e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 717e41f4b71Sopenharmony_ci 718e41f4b71Sopenharmony_ci**Parameters** 719e41f4b71Sopenharmony_ci 720e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 721e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ---------- | 722e41f4b71Sopenharmony_ci| uriList | Array<string> | Yes | URIs of the media files to delete. A maximum of 300 media files can be deleted.| 723e41f4b71Sopenharmony_ci| callback | AsyncCallback<void> | Yes | Callback that returns no value.| 724e41f4b71Sopenharmony_ci 725e41f4b71Sopenharmony_ci**Error codes** 726e41f4b71Sopenharmony_ci 727e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 728e41f4b71Sopenharmony_ci 729e41f4b71Sopenharmony_ci| ID| Error Message| 730e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 731e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 732e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 733e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 734e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 735e41f4b71Sopenharmony_ci 736e41f4b71Sopenharmony_ci**Example** 737e41f4b71Sopenharmony_ci 738e41f4b71Sopenharmony_ci```ts 739e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 740e41f4b71Sopenharmony_ci 741e41f4b71Sopenharmony_ciasync function example() { 742e41f4b71Sopenharmony_ci console.info('createDeleteRequestDemo'); 743e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 744e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 745e41f4b71Sopenharmony_ci fetchColumns: [], 746e41f4b71Sopenharmony_ci predicates: predicates 747e41f4b71Sopenharmony_ci }; 748e41f4b71Sopenharmony_ci try { 749e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 750e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 751e41f4b71Sopenharmony_ci if (asset === undefined) { 752e41f4b71Sopenharmony_ci console.error('asset not exist'); 753e41f4b71Sopenharmony_ci return; 754e41f4b71Sopenharmony_ci } 755e41f4b71Sopenharmony_ci phAccessHelper.createDeleteRequest([asset.uri], (err) => { 756e41f4b71Sopenharmony_ci if (err === undefined) { 757e41f4b71Sopenharmony_ci console.info('createDeleteRequest successfully'); 758e41f4b71Sopenharmony_ci } else { 759e41f4b71Sopenharmony_ci console.error(`createDeleteRequest failed with error: ${err.code}, ${err.message}`); 760e41f4b71Sopenharmony_ci } 761e41f4b71Sopenharmony_ci }); 762e41f4b71Sopenharmony_ci } catch (err) { 763e41f4b71Sopenharmony_ci console.error(`fetch failed, error: ${err.code}, ${err.message}`); 764e41f4b71Sopenharmony_ci } 765e41f4b71Sopenharmony_ci} 766e41f4b71Sopenharmony_ci``` 767e41f4b71Sopenharmony_ci 768e41f4b71Sopenharmony_ci### createDeleteRequest<sup>(deprecated)</sup> 769e41f4b71Sopenharmony_ci 770e41f4b71Sopenharmony_cicreateDeleteRequest(uriList: Array<string>): Promise<void> 771e41f4b71Sopenharmony_ci 772e41f4b71Sopenharmony_ciCreates a dialog box for deleting media files. This API uses a promise to return the result. The deleted media files are moved to the trash. 773e41f4b71Sopenharmony_ci 774e41f4b71Sopenharmony_ci> **NOTE** 775e41f4b71Sopenharmony_ci> 776e41f4b71Sopenharmony_ci> This API is supported since API version 10 and deprecated since API version 11. Use [MediaAssetChangeRequest.deleteAssets](#deleteassets11-1) instead. 777e41f4b71Sopenharmony_ci 778e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 779e41f4b71Sopenharmony_ci 780e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 781e41f4b71Sopenharmony_ci 782e41f4b71Sopenharmony_ci**Parameters** 783e41f4b71Sopenharmony_ci 784e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 785e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ---------- | 786e41f4b71Sopenharmony_ci| uriList | Array<string> | Yes | URIs of the media files to delete. A maximum of 300 media files can be deleted.| 787e41f4b71Sopenharmony_ci 788e41f4b71Sopenharmony_ci**Return value** 789e41f4b71Sopenharmony_ci 790e41f4b71Sopenharmony_ci| Type | Description | 791e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 792e41f4b71Sopenharmony_ci| Promise<void>| Promise that returns no value.| 793e41f4b71Sopenharmony_ci 794e41f4b71Sopenharmony_ci**Error codes** 795e41f4b71Sopenharmony_ci 796e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 797e41f4b71Sopenharmony_ci 798e41f4b71Sopenharmony_ci| ID| Error Message| 799e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 800e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 801e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 802e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 803e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 804e41f4b71Sopenharmony_ci 805e41f4b71Sopenharmony_ci**Example** 806e41f4b71Sopenharmony_ci 807e41f4b71Sopenharmony_ci```ts 808e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 809e41f4b71Sopenharmony_ci 810e41f4b71Sopenharmony_ciasync function example() { 811e41f4b71Sopenharmony_ci console.info('createDeleteRequestDemo'); 812e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 813e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 814e41f4b71Sopenharmony_ci fetchColumns: [], 815e41f4b71Sopenharmony_ci predicates: predicates 816e41f4b71Sopenharmony_ci }; 817e41f4b71Sopenharmony_ci try { 818e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 819e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 820e41f4b71Sopenharmony_ci if (asset === undefined) { 821e41f4b71Sopenharmony_ci console.error('asset not exist'); 822e41f4b71Sopenharmony_ci return; 823e41f4b71Sopenharmony_ci } 824e41f4b71Sopenharmony_ci await phAccessHelper.createDeleteRequest([asset.uri]); 825e41f4b71Sopenharmony_ci console.info('createDeleteRequest successfully'); 826e41f4b71Sopenharmony_ci } catch (err) { 827e41f4b71Sopenharmony_ci console.error(`createDeleteRequest failed with error: ${err.code}, ${err.message}`); 828e41f4b71Sopenharmony_ci } 829e41f4b71Sopenharmony_ci} 830e41f4b71Sopenharmony_ci``` 831e41f4b71Sopenharmony_ci 832e41f4b71Sopenharmony_ci### applyChanges<sup>11+</sup> 833e41f4b71Sopenharmony_ci 834e41f4b71Sopenharmony_ciapplyChanges(mediaChangeRequest: MediaChangeRequest): Promise<void> 835e41f4b71Sopenharmony_ci 836e41f4b71Sopenharmony_ciApplies media changes. This API uses a promise to return the result. 837e41f4b71Sopenharmony_ci 838e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 839e41f4b71Sopenharmony_ci 840e41f4b71Sopenharmony_ciIf the caller does not have the ohos.permission.WRITE_IMAGEVIDEO permission, you can create a media asset by using a security component. For details, see [Creating a Media Asset Using a Security Component](../../media/medialibrary/photoAccessHelper-savebutton.md). 841e41f4b71Sopenharmony_ci 842e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 843e41f4b71Sopenharmony_ci 844e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 845e41f4b71Sopenharmony_ci 846e41f4b71Sopenharmony_ci**Parameters** 847e41f4b71Sopenharmony_ci 848e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 849e41f4b71Sopenharmony_ci| -------- | ------------------------ | ---- | ------------------------- | 850e41f4b71Sopenharmony_ci| mediaChangeRequest | [MediaChangeRequest](#mediachangerequest11) | Yes | Request for asset changes or album changes.| 851e41f4b71Sopenharmony_ci 852e41f4b71Sopenharmony_ci**Return value** 853e41f4b71Sopenharmony_ci 854e41f4b71Sopenharmony_ci| Type | Description | 855e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 856e41f4b71Sopenharmony_ci| Promise<void>| Promise that returns no value.| 857e41f4b71Sopenharmony_ci 858e41f4b71Sopenharmony_ci**Error codes** 859e41f4b71Sopenharmony_ci 860e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 861e41f4b71Sopenharmony_ci 862e41f4b71Sopenharmony_ci| ID| Error Message| 863e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 864e41f4b71Sopenharmony_ci| 201 | Permission denied. | 865e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 866e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 867e41f4b71Sopenharmony_ci 868e41f4b71Sopenharmony_ci**Example** 869e41f4b71Sopenharmony_ci 870e41f4b71Sopenharmony_ciThis API depends on the [MediaChangeRequest](#mediachangerequest11) object. For details about the sample code, see the examples of [MediaAssetChangeRequest](#mediaassetchangerequest11) and [MediaAlbumChangeRequest](#mediaalbumchangerequest11). 871e41f4b71Sopenharmony_ci 872e41f4b71Sopenharmony_ci### release 873e41f4b71Sopenharmony_ci 874e41f4b71Sopenharmony_cirelease(callback: AsyncCallback<void>): void 875e41f4b71Sopenharmony_ci 876e41f4b71Sopenharmony_ciReleases this **PhotoAccessHelper** instance. This API uses an asynchronous callback to return the result. 877e41f4b71Sopenharmony_ciCall this API when the APIs of the **PhotoAccessHelper** instance are no longer used. 878e41f4b71Sopenharmony_ci 879e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 880e41f4b71Sopenharmony_ci 881e41f4b71Sopenharmony_ci**Parameters** 882e41f4b71Sopenharmony_ci 883e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 884e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | -------------------- | 885e41f4b71Sopenharmony_ci| callback | AsyncCallback<void> | Yes | Callback used to return the result.| 886e41f4b71Sopenharmony_ci 887e41f4b71Sopenharmony_ci**Error codes** 888e41f4b71Sopenharmony_ci 889e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 890e41f4b71Sopenharmony_ci 891e41f4b71Sopenharmony_ci| ID| Error Message| 892e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 893e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 894e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 895e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 896e41f4b71Sopenharmony_ci 897e41f4b71Sopenharmony_ci**Example** 898e41f4b71Sopenharmony_ci 899e41f4b71Sopenharmony_ci```ts 900e41f4b71Sopenharmony_ciasync function example() { 901e41f4b71Sopenharmony_ci console.info('releaseDemo'); 902e41f4b71Sopenharmony_ci phAccessHelper.release((err) => { 903e41f4b71Sopenharmony_ci if (err !== undefined) { 904e41f4b71Sopenharmony_ci console.error(`release failed. error: ${err.code}, ${err.message}`); 905e41f4b71Sopenharmony_ci } else { 906e41f4b71Sopenharmony_ci console.info('release ok.'); 907e41f4b71Sopenharmony_ci } 908e41f4b71Sopenharmony_ci }); 909e41f4b71Sopenharmony_ci} 910e41f4b71Sopenharmony_ci``` 911e41f4b71Sopenharmony_ci 912e41f4b71Sopenharmony_ci### release 913e41f4b71Sopenharmony_ci 914e41f4b71Sopenharmony_cirelease(): Promise<void> 915e41f4b71Sopenharmony_ci 916e41f4b71Sopenharmony_ciReleases this **PhotoAccessHelper** instance. This API uses a promise to return the result. 917e41f4b71Sopenharmony_ciCall this API when the APIs of the **PhotoAccessHelper** instance are no longer used. 918e41f4b71Sopenharmony_ci 919e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 920e41f4b71Sopenharmony_ci 921e41f4b71Sopenharmony_ci**Return value** 922e41f4b71Sopenharmony_ci 923e41f4b71Sopenharmony_ci| Type | Description | 924e41f4b71Sopenharmony_ci| ------------------- | --------------------------------- | 925e41f4b71Sopenharmony_ci| Promise<void> | Promise that returns no value.| 926e41f4b71Sopenharmony_ci 927e41f4b71Sopenharmony_ci**Error codes** 928e41f4b71Sopenharmony_ci 929e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 930e41f4b71Sopenharmony_ci 931e41f4b71Sopenharmony_ci| ID| Error Message| 932e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 933e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 934e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 935e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 936e41f4b71Sopenharmony_ci 937e41f4b71Sopenharmony_ci**Example** 938e41f4b71Sopenharmony_ci 939e41f4b71Sopenharmony_ci```ts 940e41f4b71Sopenharmony_ciasync function example() { 941e41f4b71Sopenharmony_ci console.info('releaseDemo'); 942e41f4b71Sopenharmony_ci try { 943e41f4b71Sopenharmony_ci await phAccessHelper.release(); 944e41f4b71Sopenharmony_ci console.info('release ok.'); 945e41f4b71Sopenharmony_ci } catch (err) { 946e41f4b71Sopenharmony_ci console.error(`release failed. error: ${err.code}, ${err.message}`); 947e41f4b71Sopenharmony_ci } 948e41f4b71Sopenharmony_ci} 949e41f4b71Sopenharmony_ci``` 950e41f4b71Sopenharmony_ci 951e41f4b71Sopenharmony_ci### showAssetsCreationDialog<sup>12+</sup> 952e41f4b71Sopenharmony_ci 953e41f4b71Sopenharmony_cishowAssetsCreationDialog(srcFileUris: Array<string>, photoCreationConfigs: Array<PhotoCreationConfig>): Promise<Array<string>> 954e41f4b71Sopenharmony_ci 955e41f4b71Sopenharmony_ciShows the dialog box for the user to confirm whether to save the photos or videos. If the user agrees to save the images or videos, a list of URIs granted with the save permission is returned. The list takes effect permanently, and the application can write the images or videos based on the URIs. If the user refuses to save the images or videos, an empty list is returned. 956e41f4b71Sopenharmony_ci 957e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 958e41f4b71Sopenharmony_ci 959e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 960e41f4b71Sopenharmony_ci 961e41f4b71Sopenharmony_ci**Parameters** 962e41f4b71Sopenharmony_ci 963e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 964e41f4b71Sopenharmony_ci| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 965e41f4b71Sopenharmony_ci| srcFileUris | Array<string> | Yes| Sandbox URIs of the images or videos to be saved to the media library.| 966e41f4b71Sopenharmony_ci| photoCreationConfigs | Array<[PhotoCreationConfig](#photocreationconfig12)> | Yes| Configuration for saving the images or videos, including the names of the files to be saved. The value must be consistent with that of **srcFileUris**.| 967e41f4b71Sopenharmony_ci 968e41f4b71Sopenharmony_ci**Return value** 969e41f4b71Sopenharmony_ci 970e41f4b71Sopenharmony_ci| Type | Description | 971e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 972e41f4b71Sopenharmony_ci| Promise<Array<string>> | Promise used to return a URI list. The URIs are granted with the write permission.| 973e41f4b71Sopenharmony_ci 974e41f4b71Sopenharmony_ci**Error codes** 975e41f4b71Sopenharmony_ci 976e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 977e41f4b71Sopenharmony_ci 978e41f4b71Sopenharmony_ci| ID| Error Message| 979e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 980e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 981e41f4b71Sopenharmony_ci| 14000011 | Internal system error | 982e41f4b71Sopenharmony_ci 983e41f4b71Sopenharmony_ci**Example** 984e41f4b71Sopenharmony_ci 985e41f4b71Sopenharmony_ci```ts 986e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 987e41f4b71Sopenharmony_ciimport { photoAccessHelper } from '@kit.MediaLibraryKit'; 988e41f4b71Sopenharmony_ci 989e41f4b71Sopenharmony_ciasync function example() { 990e41f4b71Sopenharmony_ci console.info('ShowAssetsCreationDialogDemo.'); 991e41f4b71Sopenharmony_ci 992e41f4b71Sopenharmony_ci try { 993e41f4b71Sopenharmony_ci // Obtain the sandbox URIs of the images or videos to be saved to the media library. 994e41f4b71Sopenharmony_ci let srcFileUris: Array<string> = [ 995e41f4b71Sopenharmony_ci 'file://fileUriDemo1' // The URI here is an example only. 996e41f4b71Sopenharmony_ci ]; 997e41f4b71Sopenharmony_ci let photoCreationConfigs: Array<photoAccessHelper.PhotoCreationConfig> = [ 998e41f4b71Sopenharmony_ci { 999e41f4b71Sopenharmony_ci title: 'test2', // Optional. 1000e41f4b71Sopenharmony_ci fileNameExtension: 'jpg', 1001e41f4b71Sopenharmony_ci photoType: photoAccessHelper.PhotoType.IMAGE, 1002e41f4b71Sopenharmony_ci subtype: photoAccessHelper.PhotoSubtype.DEFAULT, // Optional. 1003e41f4b71Sopenharmony_ci } 1004e41f4b71Sopenharmony_ci ]; 1005e41f4b71Sopenharmony_ci let desFileUris: Array<string> = await phAccessHelper.showAssetsCreationDialog(srcFileUris, photoCreationConfigs); 1006e41f4b71Sopenharmony_ci console.info('showAssetsCreationDialog success, data is ' + desFileUris); 1007e41f4b71Sopenharmony_ci } catch (err) { 1008e41f4b71Sopenharmony_ci console.error('showAssetsCreationDialog failed, errCode is ' + err.code + ', errMsg is ' + err.message); 1009e41f4b71Sopenharmony_ci } 1010e41f4b71Sopenharmony_ci} 1011e41f4b71Sopenharmony_ci``` 1012e41f4b71Sopenharmony_ci 1013e41f4b71Sopenharmony_ci### createAssetWithShortTermPermission<sup>12+</sup> 1014e41f4b71Sopenharmony_ci 1015e41f4b71Sopenharmony_cicreateAssetWithShortTermPermission(photoCreationConfig: PhotoCreationConfig): Promise<string> 1016e41f4b71Sopenharmony_ci 1017e41f4b71Sopenharmony_ciCreates an asset with a temporary permission of the given period. When this API is called by an application for the first time, a dialog box will be displayed for the user to confirm whether to save the asset. If the user agrees to save the asset, the asset instance will be created and the file URI granted with the save permission will be returned. The application can write the asset based on the URI 1018e41f4b71Sopenharmony_ciwithin 5 minutes after the user agrees to save the asset. If the same application calls this API again within the 5 minutes, the authorized URI can be automatically returned without the need to display the conformation dialog box. 1019e41f4b71Sopenharmony_ci 1020e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 1021e41f4b71Sopenharmony_ci 1022e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1023e41f4b71Sopenharmony_ci 1024e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.SHORT_TERM_WRITE_IMAGEVIDEO 1025e41f4b71Sopenharmony_ci 1026e41f4b71Sopenharmony_ci**Parameters** 1027e41f4b71Sopenharmony_ci 1028e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1029e41f4b71Sopenharmony_ci| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 1030e41f4b71Sopenharmony_ci| photoCreationConfig | [PhotoCreationConfig](#photocreationconfig12); | Yes| Configuration for saving a media asset (image or video) to the media library, including the file name.| 1031e41f4b71Sopenharmony_ci 1032e41f4b71Sopenharmony_ci**Return value** 1033e41f4b71Sopenharmony_ci 1034e41f4b71Sopenharmony_ci| Type | Description | 1035e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 1036e41f4b71Sopenharmony_ci| Promise<string> | Promise used to return the URI of the asset saved. The URI is granted with a temporary write permission.| 1037e41f4b71Sopenharmony_ci 1038e41f4b71Sopenharmony_ci**Error codes** 1039e41f4b71Sopenharmony_ci 1040e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1041e41f4b71Sopenharmony_ci 1042e41f4b71Sopenharmony_ci| ID| Error Message| 1043e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1044e41f4b71Sopenharmony_ci| 201 | Permission denied | 1045e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1046e41f4b71Sopenharmony_ci| 14000011 | Internal system error | 1047e41f4b71Sopenharmony_ci 1048e41f4b71Sopenharmony_ci**Example** 1049e41f4b71Sopenharmony_ci 1050e41f4b71Sopenharmony_ci```ts 1051e41f4b71Sopenharmony_ciimport fs from '@ohos.file.fs'; 1052e41f4b71Sopenharmony_ciimport { photoAccessHelper } from '@kit.MediaLibraryKit'; 1053e41f4b71Sopenharmony_ci 1054e41f4b71Sopenharmony_ciasync function example() { 1055e41f4b71Sopenharmony_ci console.info('createAssetWithShortTermPermissionDemo.'); 1056e41f4b71Sopenharmony_ci 1057e41f4b71Sopenharmony_ci try { 1058e41f4b71Sopenharmony_ci let phAccessHelper: photoAccessHelper.PhotoAccessHelper = photoAccessHelper.getPhotoAccessHelper(this.context); 1059e41f4b71Sopenharmony_ci let photoCreationConfig: photoAccessHelper.PhotoCreationConfig = { 1060e41f4b71Sopenharmony_ci title: '123456', 1061e41f4b71Sopenharmony_ci fileNameExtension: 'jpg', 1062e41f4b71Sopenharmony_ci photoType: photoAccessHelper.PhotoType.IMAGE, 1063e41f4b71Sopenharmony_ci subtype: photoAccessHelper.PhotoSubtype.DEFAULT, 1064e41f4b71Sopenharmony_ci }; 1065e41f4b71Sopenharmony_ci 1066e41f4b71Sopenharmony_ci let resultUri: string = await phAccessHelper.createAssetWithShortTermPermission(photoCreationConfig); 1067e41f4b71Sopenharmony_ci let resultFile: fs.File = fs.openSync(resultUri, fs.OpenMode.READ_WRITE); 1068e41f4b71Sopenharmony_ci // Use the actual URI and file size. 1069e41f4b71Sopenharmony_ci let srcFile: fs.File = fs.openSync("file://test.jpg", fs.OpenMode.READ_ONLY); 1070e41f4b71Sopenharmony_ci let bufSize: number = 2000000; 1071e41f4b71Sopenharmony_ci let readSize: number = 0; 1072e41f4b71Sopenharmony_ci let buf = new ArrayBuffer(bufSize); 1073e41f4b71Sopenharmony_ci let readLen = fs.readSync(srcFile.fd, buf, { 1074e41f4b71Sopenharmony_ci offset: readSize, 1075e41f4b71Sopenharmony_ci length: bufSize 1076e41f4b71Sopenharmony_ci }); 1077e41f4b71Sopenharmony_ci if (readLen > 0) { 1078e41f4b71Sopenharmony_ci readSize += readLen; 1079e41f4b71Sopenharmony_ci fs.writeSync(resultFile.fd, buf, { length: readLen }); 1080e41f4b71Sopenharmony_ci } 1081e41f4b71Sopenharmony_ci fs.closeSync(srcFile); 1082e41f4b71Sopenharmony_ci fs.closeSync(resultFile); 1083e41f4b71Sopenharmony_ci } catch (err) { 1084e41f4b71Sopenharmony_ci console.error('createAssetWithShortTermPermission failed, errCode is ' + err.code + ', errMsg is ' + err.message); 1085e41f4b71Sopenharmony_ci } 1086e41f4b71Sopenharmony_ci 1087e41f4b71Sopenharmony_ci} 1088e41f4b71Sopenharmony_ci``` 1089e41f4b71Sopenharmony_ci 1090e41f4b71Sopenharmony_ci## PhotoAsset 1091e41f4b71Sopenharmony_ci 1092e41f4b71Sopenharmony_ciProvides APIs for encapsulating file asset attributes. 1093e41f4b71Sopenharmony_ci 1094e41f4b71Sopenharmony_ci### Properties 1095e41f4b71Sopenharmony_ci 1096e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1097e41f4b71Sopenharmony_ci 1098e41f4b71Sopenharmony_ci| Name | Type | Readable| Writable| Description | 1099e41f4b71Sopenharmony_ci| ------------------------- | ------------------------ | ---- | ---- | ------------------------------------------------------ | 1100e41f4b71Sopenharmony_ci| uri | string | Yes | No | Media asset URI, for example, **file://media/Photo/1/IMG_datetime_0001/displayName.jpg**. For details, see [Media File URI](../../file-management/user-file-uri-intro.md#media-file-uri).<br>**Atomic service API**: This API can be used in atomic services since API version 12. | 1101e41f4b71Sopenharmony_ci| photoType | [PhotoType](#phototype) | Yes | No | Type of the file. | 1102e41f4b71Sopenharmony_ci| displayName | string | Yes | No | File name, including the file name extension, to display. | 1103e41f4b71Sopenharmony_ci 1104e41f4b71Sopenharmony_ci### get 1105e41f4b71Sopenharmony_ci 1106e41f4b71Sopenharmony_ciget(member: string): MemberType 1107e41f4b71Sopenharmony_ci 1108e41f4b71Sopenharmony_ciObtains a **PhotoAsset** member parameter. 1109e41f4b71Sopenharmony_ci 1110e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1111e41f4b71Sopenharmony_ci 1112e41f4b71Sopenharmony_ci**Parameters** 1113e41f4b71Sopenharmony_ci 1114e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 1115e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ----- | 1116e41f4b71Sopenharmony_ci| member | string | Yes | Name of the member parameter to obtain. Except **'uri'**, **'media_type'**, **'subtype'**, and **'display_name'**, you need to pass in [PhotoKeys](#photokeys) in **fetchColumns** in **get()**. For example, to obtain the title attribute, set **fetchColumns: ['title']**.| 1117e41f4b71Sopenharmony_ci 1118e41f4b71Sopenharmony_ci**Return value** 1119e41f4b71Sopenharmony_ci 1120e41f4b71Sopenharmony_ci| Type | Description | 1121e41f4b71Sopenharmony_ci| ------------------- | --------------------------------- | 1122e41f4b71Sopenharmony_ci| [MemberType](#membertype) | **PhotoAsset** member parameter obtained.| 1123e41f4b71Sopenharmony_ci 1124e41f4b71Sopenharmony_ci**Error codes** 1125e41f4b71Sopenharmony_ci 1126e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1127e41f4b71Sopenharmony_ci 1128e41f4b71Sopenharmony_ci| ID| Error Message| 1129e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1130e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1131e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 1132e41f4b71Sopenharmony_ci| 14000014 | Member is not a valid PhotoKey. | 1133e41f4b71Sopenharmony_ci 1134e41f4b71Sopenharmony_ci**Example** 1135e41f4b71Sopenharmony_ci 1136e41f4b71Sopenharmony_ci```ts 1137e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 1138e41f4b71Sopenharmony_ci 1139e41f4b71Sopenharmony_ciasync function example() { 1140e41f4b71Sopenharmony_ci console.info('photoAssetGetDemo'); 1141e41f4b71Sopenharmony_ci try { 1142e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1143e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 1144e41f4b71Sopenharmony_ci fetchColumns: ['title'], 1145e41f4b71Sopenharmony_ci predicates: predicates 1146e41f4b71Sopenharmony_ci }; 1147e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1148e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 1149e41f4b71Sopenharmony_ci let title: photoAccessHelper.PhotoKeys = photoAccessHelper.PhotoKeys.TITLE; 1150e41f4b71Sopenharmony_ci let photoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title.toString()); 1151e41f4b71Sopenharmony_ci console.info('photoAsset Get photoAssetTitle = ', photoAssetTitle); 1152e41f4b71Sopenharmony_ci } catch (err) { 1153e41f4b71Sopenharmony_ci console.error(`release failed. error: ${err.code}, ${err.message}`); 1154e41f4b71Sopenharmony_ci } 1155e41f4b71Sopenharmony_ci} 1156e41f4b71Sopenharmony_ci``` 1157e41f4b71Sopenharmony_ci 1158e41f4b71Sopenharmony_ci### set 1159e41f4b71Sopenharmony_ci 1160e41f4b71Sopenharmony_ciset(member: string, value: string): void 1161e41f4b71Sopenharmony_ci 1162e41f4b71Sopenharmony_ciSets a **PhotoAsset** member parameter. 1163e41f4b71Sopenharmony_ci 1164e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1165e41f4b71Sopenharmony_ci 1166e41f4b71Sopenharmony_ci**Parameters** 1167e41f4b71Sopenharmony_ci 1168e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 1169e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ----- | 1170e41f4b71Sopenharmony_ci| member | string | Yes | Name of the member parameter to set. For example, **[PhotoKeys](#photokeys).TITLE**.| 1171e41f4b71Sopenharmony_ci| value | string | Yes | Member parameter to set. Only the value of **[PhotoKeys](#photokeys).TITLE** can be modified.| 1172e41f4b71Sopenharmony_ci 1173e41f4b71Sopenharmony_ci**Error codes** 1174e41f4b71Sopenharmony_ci 1175e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1176e41f4b71Sopenharmony_ci 1177e41f4b71Sopenharmony_ci| ID| Error Message| 1178e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1179e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1180e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 1181e41f4b71Sopenharmony_ci| 14000014 | Member is not a valid PhotoKey. | 1182e41f4b71Sopenharmony_ci 1183e41f4b71Sopenharmony_ci**Example** 1184e41f4b71Sopenharmony_ci 1185e41f4b71Sopenharmony_ci```ts 1186e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 1187e41f4b71Sopenharmony_ci 1188e41f4b71Sopenharmony_ciasync function example() { 1189e41f4b71Sopenharmony_ci console.info('photoAssetSetDemo'); 1190e41f4b71Sopenharmony_ci try { 1191e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1192e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 1193e41f4b71Sopenharmony_ci fetchColumns: ['title'], 1194e41f4b71Sopenharmony_ci predicates: predicates 1195e41f4b71Sopenharmony_ci }; 1196e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1197e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 1198e41f4b71Sopenharmony_ci let title: string = photoAccessHelper.PhotoKeys.TITLE.toString(); 1199e41f4b71Sopenharmony_ci photoAsset.set(title, 'newTitle'); 1200e41f4b71Sopenharmony_ci } catch (err) { 1201e41f4b71Sopenharmony_ci console.error(`release failed. error: ${err.code}, ${err.message}`); 1202e41f4b71Sopenharmony_ci } 1203e41f4b71Sopenharmony_ci} 1204e41f4b71Sopenharmony_ci``` 1205e41f4b71Sopenharmony_ci 1206e41f4b71Sopenharmony_ci### commitModify 1207e41f4b71Sopenharmony_ci 1208e41f4b71Sopenharmony_cicommitModify(callback: AsyncCallback<void>): void 1209e41f4b71Sopenharmony_ci 1210e41f4b71Sopenharmony_ciCommits the modification on the file metadata to the database. This API uses an asynchronous callback to return the result. 1211e41f4b71Sopenharmony_ci 1212e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 1213e41f4b71Sopenharmony_ci 1214e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 1215e41f4b71Sopenharmony_ci 1216e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1217e41f4b71Sopenharmony_ci 1218e41f4b71Sopenharmony_ci**Parameters** 1219e41f4b71Sopenharmony_ci 1220e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 1221e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ----- | 1222e41f4b71Sopenharmony_ci| callback | AsyncCallback<void> | Yes | Callback that returns no value.| 1223e41f4b71Sopenharmony_ci 1224e41f4b71Sopenharmony_ci**Error codes** 1225e41f4b71Sopenharmony_ci 1226e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1227e41f4b71Sopenharmony_ci 1228e41f4b71Sopenharmony_ci| ID| Error Message| 1229e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1230e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 1231e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 1232e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 1233e41f4b71Sopenharmony_ci| 14000001 | Invalid display name. | 1234e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 1235e41f4b71Sopenharmony_ci 1236e41f4b71Sopenharmony_ci**Example** 1237e41f4b71Sopenharmony_ci 1238e41f4b71Sopenharmony_ci```ts 1239e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 1240e41f4b71Sopenharmony_ci 1241e41f4b71Sopenharmony_ciasync function example() { 1242e41f4b71Sopenharmony_ci console.info('commitModifyDemo'); 1243e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1244e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 1245e41f4b71Sopenharmony_ci fetchColumns: ['title'], 1246e41f4b71Sopenharmony_ci predicates: predicates 1247e41f4b71Sopenharmony_ci }; 1248e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1249e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 1250e41f4b71Sopenharmony_ci let title: string = photoAccessHelper.PhotoKeys.TITLE.toString(); 1251e41f4b71Sopenharmony_ci let photoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title); 1252e41f4b71Sopenharmony_ci console.info('photoAsset get photoAssetTitle = ', photoAssetTitle); 1253e41f4b71Sopenharmony_ci photoAsset.set(title, 'newTitle2'); 1254e41f4b71Sopenharmony_ci photoAsset.commitModify((err) => { 1255e41f4b71Sopenharmony_ci if (err === undefined) { 1256e41f4b71Sopenharmony_ci let newPhotoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title); 1257e41f4b71Sopenharmony_ci console.info('photoAsset get newPhotoAssetTitle = ', newPhotoAssetTitle); 1258e41f4b71Sopenharmony_ci } else { 1259e41f4b71Sopenharmony_ci console.error(`commitModify failed, error: ${err.code}, ${err.message}`); 1260e41f4b71Sopenharmony_ci } 1261e41f4b71Sopenharmony_ci }); 1262e41f4b71Sopenharmony_ci} 1263e41f4b71Sopenharmony_ci``` 1264e41f4b71Sopenharmony_ci 1265e41f4b71Sopenharmony_ci### commitModify 1266e41f4b71Sopenharmony_ci 1267e41f4b71Sopenharmony_cicommitModify(): Promise<void> 1268e41f4b71Sopenharmony_ci 1269e41f4b71Sopenharmony_ciCommits the modification on the file metadata to the database. This API uses a promise to return the result. 1270e41f4b71Sopenharmony_ci 1271e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 1272e41f4b71Sopenharmony_ci 1273e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 1274e41f4b71Sopenharmony_ci 1275e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1276e41f4b71Sopenharmony_ci 1277e41f4b71Sopenharmony_ci**Return value** 1278e41f4b71Sopenharmony_ci 1279e41f4b71Sopenharmony_ci| Type | Description | 1280e41f4b71Sopenharmony_ci| ------------------- | ---------- | 1281e41f4b71Sopenharmony_ci| Promise<void> | Promise that returns no value.| 1282e41f4b71Sopenharmony_ci 1283e41f4b71Sopenharmony_ci**Error codes** 1284e41f4b71Sopenharmony_ci 1285e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1286e41f4b71Sopenharmony_ci 1287e41f4b71Sopenharmony_ci| ID| Error Message| 1288e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1289e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 1290e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 1291e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 1292e41f4b71Sopenharmony_ci| 14000001 | Invalid display name. | 1293e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 1294e41f4b71Sopenharmony_ci 1295e41f4b71Sopenharmony_ci**Example** 1296e41f4b71Sopenharmony_ci 1297e41f4b71Sopenharmony_ci```ts 1298e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 1299e41f4b71Sopenharmony_ci 1300e41f4b71Sopenharmony_ciasync function example() { 1301e41f4b71Sopenharmony_ci console.info('commitModifyDemo'); 1302e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1303e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 1304e41f4b71Sopenharmony_ci fetchColumns: ['title'], 1305e41f4b71Sopenharmony_ci predicates: predicates 1306e41f4b71Sopenharmony_ci }; 1307e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1308e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 1309e41f4b71Sopenharmony_ci let title: string = photoAccessHelper.PhotoKeys.TITLE.toString(); 1310e41f4b71Sopenharmony_ci let photoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title); 1311e41f4b71Sopenharmony_ci console.info('photoAsset get photoAssetTitle = ', photoAssetTitle); 1312e41f4b71Sopenharmony_ci photoAsset.set(title, 'newTitle3'); 1313e41f4b71Sopenharmony_ci try { 1314e41f4b71Sopenharmony_ci await photoAsset.commitModify(); 1315e41f4b71Sopenharmony_ci let newPhotoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title); 1316e41f4b71Sopenharmony_ci console.info('photoAsset get newPhotoAssetTitle = ', newPhotoAssetTitle); 1317e41f4b71Sopenharmony_ci } catch (err) { 1318e41f4b71Sopenharmony_ci console.error(`release failed. error: ${err.code}, ${err.message}`); 1319e41f4b71Sopenharmony_ci } 1320e41f4b71Sopenharmony_ci} 1321e41f4b71Sopenharmony_ci``` 1322e41f4b71Sopenharmony_ci 1323e41f4b71Sopenharmony_ci### getReadOnlyFd<sup>(deprecated)</sup> 1324e41f4b71Sopenharmony_ci 1325e41f4b71Sopenharmony_cigetReadOnlyFd(callback: AsyncCallback<number>): void 1326e41f4b71Sopenharmony_ci 1327e41f4b71Sopenharmony_ciOpens this file in read-only mode. This API uses an asynchronous callback to return the result. 1328e41f4b71Sopenharmony_ci 1329e41f4b71Sopenharmony_ci> **NOTE** 1330e41f4b71Sopenharmony_ci> 1331e41f4b71Sopenharmony_ci> - This API is supported since API version 10 and deprecated since API version 11. For security purposes, the API for obtaining the media file handle is no longer provided. 1332e41f4b71Sopenharmony_ci 1333e41f4b71Sopenharmony_ci> - The returned FD must be closed when it is not required. 1334e41f4b71Sopenharmony_ci 1335e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 1336e41f4b71Sopenharmony_ci 1337e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1338e41f4b71Sopenharmony_ci 1339e41f4b71Sopenharmony_ci**Parameters** 1340e41f4b71Sopenharmony_ci 1341e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 1342e41f4b71Sopenharmony_ci| -------- | --------------------------- | ---- | ----------------------------------- | 1343e41f4b71Sopenharmony_ci| callback | AsyncCallback<number> | Yes | Callback used to return the file descriptor (FD) of the file opened. | 1344e41f4b71Sopenharmony_ci 1345e41f4b71Sopenharmony_ci**Error codes** 1346e41f4b71Sopenharmony_ci 1347e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1348e41f4b71Sopenharmony_ci 1349e41f4b71Sopenharmony_ci| ID| Error Message| 1350e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1351e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 1352e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 1353e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 1354e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 1355e41f4b71Sopenharmony_ci 1356e41f4b71Sopenharmony_ci**Example** 1357e41f4b71Sopenharmony_ci 1358e41f4b71Sopenharmony_ci```ts 1359e41f4b71Sopenharmony_ciasync function example() { 1360e41f4b71Sopenharmony_ci console.info('getReadOnlyFdDemo'); 1361e41f4b71Sopenharmony_ci // Ensure that there are images and video files in the device. 1362e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1363e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 1364e41f4b71Sopenharmony_ci fetchColumns: [], 1365e41f4b71Sopenharmony_ci predicates: predicates 1366e41f4b71Sopenharmony_ci }; 1367e41f4b71Sopenharmony_ci let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 1368e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); 1369e41f4b71Sopenharmony_ci photoAsset.getReadOnlyFd((err, fd) => { 1370e41f4b71Sopenharmony_ci if (fd !== undefined) { 1371e41f4b71Sopenharmony_ci console.info('File fd' + fd); 1372e41f4b71Sopenharmony_ci photoAsset.close(fd); 1373e41f4b71Sopenharmony_ci } else { 1374e41f4b71Sopenharmony_ci console.error(`getReadOnlyFd err: ${err.code}, ${err.message}`); 1375e41f4b71Sopenharmony_ci } 1376e41f4b71Sopenharmony_ci }); 1377e41f4b71Sopenharmony_ci} 1378e41f4b71Sopenharmony_ci``` 1379e41f4b71Sopenharmony_ci 1380e41f4b71Sopenharmony_ci### getReadOnlyFd<sup>(deprecated)</sup> 1381e41f4b71Sopenharmony_ci 1382e41f4b71Sopenharmony_cigetReadOnlyFd(): Promise<number> 1383e41f4b71Sopenharmony_ci 1384e41f4b71Sopenharmony_ciOpens this file in read-only mode. This API uses a promise to return the result. 1385e41f4b71Sopenharmony_ci 1386e41f4b71Sopenharmony_ci> **NOTE** 1387e41f4b71Sopenharmony_ci> 1388e41f4b71Sopenharmony_ci> - This API is supported since API version 10 and deprecated since API version 11. For security purposes, the API for obtaining the media file handle is no longer provided. 1389e41f4b71Sopenharmony_ci 1390e41f4b71Sopenharmony_ci> - The returned FD must be closed when it is not required. 1391e41f4b71Sopenharmony_ci 1392e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 1393e41f4b71Sopenharmony_ci 1394e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1395e41f4b71Sopenharmony_ci 1396e41f4b71Sopenharmony_ci**Return value** 1397e41f4b71Sopenharmony_ci 1398e41f4b71Sopenharmony_ci| Type | Description | 1399e41f4b71Sopenharmony_ci| --------------------- | ------------- | 1400e41f4b71Sopenharmony_ci| Promise<number> | Promise used to return the FD of the file opened.| 1401e41f4b71Sopenharmony_ci 1402e41f4b71Sopenharmony_ci**Error codes** 1403e41f4b71Sopenharmony_ci 1404e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1405e41f4b71Sopenharmony_ci 1406e41f4b71Sopenharmony_ci| ID| Error Message| 1407e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1408e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 1409e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 1410e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 1411e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 1412e41f4b71Sopenharmony_ci 1413e41f4b71Sopenharmony_ci**Example** 1414e41f4b71Sopenharmony_ci 1415e41f4b71Sopenharmony_ci```ts 1416e41f4b71Sopenharmony_ciasync function example() { 1417e41f4b71Sopenharmony_ci console.info('getReadOnlyFdDemo'); 1418e41f4b71Sopenharmony_ci try { 1419e41f4b71Sopenharmony_ci // Ensure that there are images and video files in the device. 1420e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1421e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 1422e41f4b71Sopenharmony_ci fetchColumns: [], 1423e41f4b71Sopenharmony_ci predicates: predicates 1424e41f4b71Sopenharmony_ci }; 1425e41f4b71Sopenharmony_ci let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 1426e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); 1427e41f4b71Sopenharmony_ci let fd: number = await photoAsset.getReadOnlyFd(); 1428e41f4b71Sopenharmony_ci if (fd !== undefined) { 1429e41f4b71Sopenharmony_ci console.info('File fd' + fd); 1430e41f4b71Sopenharmony_ci photoAsset.close(fd); 1431e41f4b71Sopenharmony_ci } else { 1432e41f4b71Sopenharmony_ci console.error('getReadOnlyFd fail'); 1433e41f4b71Sopenharmony_ci } 1434e41f4b71Sopenharmony_ci } catch (err) { 1435e41f4b71Sopenharmony_ci console.error(`getReadOnlyFd demo err: ${err.code}, ${err.message}`); 1436e41f4b71Sopenharmony_ci } 1437e41f4b71Sopenharmony_ci} 1438e41f4b71Sopenharmony_ci``` 1439e41f4b71Sopenharmony_ci 1440e41f4b71Sopenharmony_ci### close<sup>(deprecated)</sup> 1441e41f4b71Sopenharmony_ci 1442e41f4b71Sopenharmony_ciclose(fd: number, callback: AsyncCallback<void>): void 1443e41f4b71Sopenharmony_ci 1444e41f4b71Sopenharmony_ciCloses a file. This API uses an asynchronous callback to return the result. 1445e41f4b71Sopenharmony_ci 1446e41f4b71Sopenharmony_ci> **NOTE** 1447e41f4b71Sopenharmony_ci> 1448e41f4b71Sopenharmony_ci> - This API is supported since API version 10 and deprecated since API version 11. 1449e41f4b71Sopenharmony_ci> - For security purposes, the API for obtaining the media file handle is no longer provided, and the corresponding **close** API is also deprecated. 1450e41f4b71Sopenharmony_ci 1451e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1452e41f4b71Sopenharmony_ci 1453e41f4b71Sopenharmony_ci**Parameters** 1454e41f4b71Sopenharmony_ci 1455e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 1456e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ----- | 1457e41f4b71Sopenharmony_ci| fd | number | Yes | FD of the file to close.| 1458e41f4b71Sopenharmony_ci| callback | AsyncCallback<void> | Yes | Callback that returns no value.| 1459e41f4b71Sopenharmony_ci 1460e41f4b71Sopenharmony_ci**Error codes** 1461e41f4b71Sopenharmony_ci 1462e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1463e41f4b71Sopenharmony_ci 1464e41f4b71Sopenharmony_ci| ID| Error Message| 1465e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1466e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1467e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 1468e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 1469e41f4b71Sopenharmony_ci 1470e41f4b71Sopenharmony_ci**Example** 1471e41f4b71Sopenharmony_ci 1472e41f4b71Sopenharmony_ci```ts 1473e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 1474e41f4b71Sopenharmony_ci 1475e41f4b71Sopenharmony_ciasync function example() { 1476e41f4b71Sopenharmony_ci console.info('closeDemo'); 1477e41f4b71Sopenharmony_ci try { 1478e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1479e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 1480e41f4b71Sopenharmony_ci fetchColumns: [], 1481e41f4b71Sopenharmony_ci predicates: predicates 1482e41f4b71Sopenharmony_ci }; 1483e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1484e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 1485e41f4b71Sopenharmony_ci let fd: number = await photoAsset.open('rw'); 1486e41f4b71Sopenharmony_ci console.info('file fd', fd); 1487e41f4b71Sopenharmony_ci photoAsset.close(fd, (err) => { 1488e41f4b71Sopenharmony_ci if (err === undefined) { 1489e41f4b71Sopenharmony_ci console.info('asset close succeed.'); 1490e41f4b71Sopenharmony_ci } else { 1491e41f4b71Sopenharmony_ci console.error(`close failed, error: ${err.code}, ${err.message}`); 1492e41f4b71Sopenharmony_ci } 1493e41f4b71Sopenharmony_ci }); 1494e41f4b71Sopenharmony_ci } catch (err) { 1495e41f4b71Sopenharmony_ci console.error(`close failed, error: ${err.code}, ${err.message}`); 1496e41f4b71Sopenharmony_ci } 1497e41f4b71Sopenharmony_ci} 1498e41f4b71Sopenharmony_ci``` 1499e41f4b71Sopenharmony_ci 1500e41f4b71Sopenharmony_ci### close<sup>(deprecated)</sup> 1501e41f4b71Sopenharmony_ci 1502e41f4b71Sopenharmony_ciclose(fd: number): Promise<void> 1503e41f4b71Sopenharmony_ci 1504e41f4b71Sopenharmony_ciCloses a file. This API uses a promise to return the result. 1505e41f4b71Sopenharmony_ci 1506e41f4b71Sopenharmony_ci> **NOTE** 1507e41f4b71Sopenharmony_ci> 1508e41f4b71Sopenharmony_ci> This API is supported since API version 10 and deprecated since API version 11. For security purposes, the API for obtaining the media file handle is no longer provided, and the corresponding **close** API is also deprecated. 1509e41f4b71Sopenharmony_ci 1510e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1511e41f4b71Sopenharmony_ci 1512e41f4b71Sopenharmony_ci**Parameters** 1513e41f4b71Sopenharmony_ci 1514e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 1515e41f4b71Sopenharmony_ci| ---- | ------ | ---- | ----- | 1516e41f4b71Sopenharmony_ci| fd | number | Yes | FD of the file to close.| 1517e41f4b71Sopenharmony_ci 1518e41f4b71Sopenharmony_ci**Return value** 1519e41f4b71Sopenharmony_ci 1520e41f4b71Sopenharmony_ci| Type | Description | 1521e41f4b71Sopenharmony_ci| ------------------- | ---------- | 1522e41f4b71Sopenharmony_ci| Promise<void> | Promise that returns no value.| 1523e41f4b71Sopenharmony_ci 1524e41f4b71Sopenharmony_ci**Error codes** 1525e41f4b71Sopenharmony_ci 1526e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1527e41f4b71Sopenharmony_ci 1528e41f4b71Sopenharmony_ci| ID| Error Message| 1529e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1530e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1531e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 1532e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 1533e41f4b71Sopenharmony_ci 1534e41f4b71Sopenharmony_ci**Example** 1535e41f4b71Sopenharmony_ci 1536e41f4b71Sopenharmony_ci```ts 1537e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 1538e41f4b71Sopenharmony_ci 1539e41f4b71Sopenharmony_ciasync function example() { 1540e41f4b71Sopenharmony_ci console.info('closeDemo'); 1541e41f4b71Sopenharmony_ci try { 1542e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1543e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 1544e41f4b71Sopenharmony_ci fetchColumns: [], 1545e41f4b71Sopenharmony_ci predicates: predicates 1546e41f4b71Sopenharmony_ci }; 1547e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1548e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 1549e41f4b71Sopenharmony_ci let fd = await asset.open('rw'); 1550e41f4b71Sopenharmony_ci console.info('file fd', fd); 1551e41f4b71Sopenharmony_ci await asset.close(fd); 1552e41f4b71Sopenharmony_ci console.info('asset close succeed.'); 1553e41f4b71Sopenharmony_ci } catch (err) { 1554e41f4b71Sopenharmony_ci console.error(`close failed, error: ${err.code}, ${err.message}`); 1555e41f4b71Sopenharmony_ci } 1556e41f4b71Sopenharmony_ci} 1557e41f4b71Sopenharmony_ci``` 1558e41f4b71Sopenharmony_ci 1559e41f4b71Sopenharmony_ci### getThumbnail 1560e41f4b71Sopenharmony_ci 1561e41f4b71Sopenharmony_cigetThumbnail(callback: AsyncCallback<image.PixelMap>): void 1562e41f4b71Sopenharmony_ci 1563e41f4b71Sopenharmony_ciObtains the thumbnail of this file. This API uses an asynchronous callback to return the result. 1564e41f4b71Sopenharmony_ci 1565e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 1566e41f4b71Sopenharmony_ci 1567e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1568e41f4b71Sopenharmony_ci 1569e41f4b71Sopenharmony_ci**Parameters** 1570e41f4b71Sopenharmony_ci 1571e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 1572e41f4b71Sopenharmony_ci| -------- | ----------------------------------- | ---- | ---------------- | 1573e41f4b71Sopenharmony_ci| callback | AsyncCallback<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | Yes | Callback used to return the PixelMap of the thumbnail.| 1574e41f4b71Sopenharmony_ci 1575e41f4b71Sopenharmony_ci**Error codes** 1576e41f4b71Sopenharmony_ci 1577e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1578e41f4b71Sopenharmony_ci 1579e41f4b71Sopenharmony_ci| ID| Error Message| 1580e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1581e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 1582e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 1583e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 1584e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 1585e41f4b71Sopenharmony_ci 1586e41f4b71Sopenharmony_ci**Example** 1587e41f4b71Sopenharmony_ci 1588e41f4b71Sopenharmony_ci```ts 1589e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 1590e41f4b71Sopenharmony_ci 1591e41f4b71Sopenharmony_ciasync function example() { 1592e41f4b71Sopenharmony_ci console.info('getThumbnailDemo'); 1593e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1594e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 1595e41f4b71Sopenharmony_ci fetchColumns: [], 1596e41f4b71Sopenharmony_ci predicates: predicates 1597e41f4b71Sopenharmony_ci }; 1598e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1599e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 1600e41f4b71Sopenharmony_ci console.info('asset displayName = ', asset.displayName); 1601e41f4b71Sopenharmony_ci asset.getThumbnail((err, pixelMap) => { 1602e41f4b71Sopenharmony_ci if (err === undefined) { 1603e41f4b71Sopenharmony_ci console.info('getThumbnail successful ' + pixelMap); 1604e41f4b71Sopenharmony_ci } else { 1605e41f4b71Sopenharmony_ci console.error(`getThumbnail fail with error: ${err.code}, ${err.message}`); 1606e41f4b71Sopenharmony_ci } 1607e41f4b71Sopenharmony_ci }); 1608e41f4b71Sopenharmony_ci} 1609e41f4b71Sopenharmony_ci``` 1610e41f4b71Sopenharmony_ci 1611e41f4b71Sopenharmony_ci### getThumbnail 1612e41f4b71Sopenharmony_ci 1613e41f4b71Sopenharmony_cigetThumbnail(size: image.Size, callback: AsyncCallback<image.PixelMap>): void 1614e41f4b71Sopenharmony_ci 1615e41f4b71Sopenharmony_ciObtains the file thumbnail of the given size. This API uses an asynchronous callback to return the result. 1616e41f4b71Sopenharmony_ci 1617e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 1618e41f4b71Sopenharmony_ci 1619e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1620e41f4b71Sopenharmony_ci 1621e41f4b71Sopenharmony_ci**Parameters** 1622e41f4b71Sopenharmony_ci 1623e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 1624e41f4b71Sopenharmony_ci| -------- | ----------------------------------- | ---- | ---------------- | 1625e41f4b71Sopenharmony_ci| size | [image.Size](../apis-image-kit/js-apis-image.md#size) | Yes | Size of the thumbnail. | 1626e41f4b71Sopenharmony_ci| callback | AsyncCallback<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | Yes | Callback used to return the PixelMap of the thumbnail.| 1627e41f4b71Sopenharmony_ci 1628e41f4b71Sopenharmony_ci**Error codes** 1629e41f4b71Sopenharmony_ci 1630e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1631e41f4b71Sopenharmony_ci 1632e41f4b71Sopenharmony_ci| ID| Error Message| 1633e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1634e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1635e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 1636e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 1637e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 1638e41f4b71Sopenharmony_ci 1639e41f4b71Sopenharmony_ci**Example** 1640e41f4b71Sopenharmony_ci 1641e41f4b71Sopenharmony_ci```ts 1642e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 1643e41f4b71Sopenharmony_ciimport { image } from '@kit.ImageKit'; 1644e41f4b71Sopenharmony_ci 1645e41f4b71Sopenharmony_ciasync function example() { 1646e41f4b71Sopenharmony_ci console.info('getThumbnailDemo'); 1647e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1648e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 1649e41f4b71Sopenharmony_ci fetchColumns: [], 1650e41f4b71Sopenharmony_ci predicates: predicates 1651e41f4b71Sopenharmony_ci }; 1652e41f4b71Sopenharmony_ci let size: image.Size = { width: 720, height: 720 }; 1653e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1654e41f4b71Sopenharmony_ci let asset = await fetchResult.getFirstObject(); 1655e41f4b71Sopenharmony_ci console.info('asset displayName = ', asset.displayName); 1656e41f4b71Sopenharmony_ci asset.getThumbnail(size, (err, pixelMap) => { 1657e41f4b71Sopenharmony_ci if (err === undefined) { 1658e41f4b71Sopenharmony_ci console.info('getThumbnail successful ' + pixelMap); 1659e41f4b71Sopenharmony_ci } else { 1660e41f4b71Sopenharmony_ci console.error(`getThumbnail fail with error: ${err.code}, ${err.message}`); 1661e41f4b71Sopenharmony_ci } 1662e41f4b71Sopenharmony_ci }); 1663e41f4b71Sopenharmony_ci} 1664e41f4b71Sopenharmony_ci``` 1665e41f4b71Sopenharmony_ci 1666e41f4b71Sopenharmony_ci### getThumbnail 1667e41f4b71Sopenharmony_ci 1668e41f4b71Sopenharmony_cigetThumbnail(size?: image.Size): Promise<image.PixelMap> 1669e41f4b71Sopenharmony_ci 1670e41f4b71Sopenharmony_ciObtains the file thumbnail of the given size. This API uses a promise to return the result. 1671e41f4b71Sopenharmony_ci 1672e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 1673e41f4b71Sopenharmony_ci 1674e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1675e41f4b71Sopenharmony_ci 1676e41f4b71Sopenharmony_ci**Parameters** 1677e41f4b71Sopenharmony_ci 1678e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 1679e41f4b71Sopenharmony_ci| ---- | -------------- | ---- | ----- | 1680e41f4b71Sopenharmony_ci| size | [image.Size](../apis-image-kit/js-apis-image.md#size) | No | Size of the thumbnail.| 1681e41f4b71Sopenharmony_ci 1682e41f4b71Sopenharmony_ci**Return value** 1683e41f4b71Sopenharmony_ci 1684e41f4b71Sopenharmony_ci| Type | Description | 1685e41f4b71Sopenharmony_ci| ----------------------------- | --------------------- | 1686e41f4b71Sopenharmony_ci| Promise<[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)> | Promise used to return the PixelMap of the thumbnail.| 1687e41f4b71Sopenharmony_ci 1688e41f4b71Sopenharmony_ci**Error codes** 1689e41f4b71Sopenharmony_ci 1690e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1691e41f4b71Sopenharmony_ci 1692e41f4b71Sopenharmony_ci| ID| Error Message| 1693e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1694e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1695e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 1696e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 1697e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 1698e41f4b71Sopenharmony_ci 1699e41f4b71Sopenharmony_ci**Example** 1700e41f4b71Sopenharmony_ci 1701e41f4b71Sopenharmony_ci```ts 1702e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 1703e41f4b71Sopenharmony_ciimport { image } from '@kit.ImageKit'; 1704e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1705e41f4b71Sopenharmony_ci 1706e41f4b71Sopenharmony_ciasync function example() { 1707e41f4b71Sopenharmony_ci console.info('getThumbnailDemo'); 1708e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1709e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 1710e41f4b71Sopenharmony_ci fetchColumns: [], 1711e41f4b71Sopenharmony_ci predicates: predicates 1712e41f4b71Sopenharmony_ci }; 1713e41f4b71Sopenharmony_ci let size: image.Size = { width: 720, height: 720 }; 1714e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1715e41f4b71Sopenharmony_ci let asset = await fetchResult.getFirstObject(); 1716e41f4b71Sopenharmony_ci console.info('asset displayName = ', asset.displayName); 1717e41f4b71Sopenharmony_ci asset.getThumbnail(size).then((pixelMap) => { 1718e41f4b71Sopenharmony_ci console.info('getThumbnail successful ' + pixelMap); 1719e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 1720e41f4b71Sopenharmony_ci console.error(`getThumbnail fail with error: ${err.code}, ${err.message}`); 1721e41f4b71Sopenharmony_ci }); 1722e41f4b71Sopenharmony_ci} 1723e41f4b71Sopenharmony_ci``` 1724e41f4b71Sopenharmony_ci 1725e41f4b71Sopenharmony_ci## PhotoViewPicker 1726e41f4b71Sopenharmony_ci 1727e41f4b71Sopenharmony_ciProvides APIs for the user to select images and videos. Before using the APIs of **PhotoViewPicker**, you need to create a **PhotoViewPicker** instance. 1728e41f4b71Sopenharmony_ci 1729e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 1730e41f4b71Sopenharmony_ci 1731e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1732e41f4b71Sopenharmony_ci 1733e41f4b71Sopenharmony_ci**Example** 1734e41f4b71Sopenharmony_ci 1735e41f4b71Sopenharmony_ci```ts 1736e41f4b71Sopenharmony_cilet photoPicker = new photoAccessHelper.PhotoViewPicker(); 1737e41f4b71Sopenharmony_ci``` 1738e41f4b71Sopenharmony_ci 1739e41f4b71Sopenharmony_ci### select 1740e41f4b71Sopenharmony_ci 1741e41f4b71Sopenharmony_ciselect(option?: PhotoSelectOptions) : Promise<PhotoSelectResult> 1742e41f4b71Sopenharmony_ci 1743e41f4b71Sopenharmony_ciStarts a **photoPicker** page for the user to select one or more images or videos. This API uses a promise to return the result. You can pass in **PhotoSelectOptions** to specify the media file type and the maximum number of files to select. 1744e41f4b71Sopenharmony_ci 1745e41f4b71Sopenharmony_ci**NOTE**<br>The **photoUris** in the **PhotoSelectResult** object returned by this API can be used only by calling [photoAccessHelper.getAssets()](#getassets) with temporary authorization. For details, see [Using a Media File URI](../../file-management/user-file-uri-intro.md#using-a-media-file-uri). 1746e41f4b71Sopenharmony_ci 1747e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 1748e41f4b71Sopenharmony_ci 1749e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1750e41f4b71Sopenharmony_ci 1751e41f4b71Sopenharmony_ci**Parameters** 1752e41f4b71Sopenharmony_ci 1753e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1754e41f4b71Sopenharmony_ci| ------- | ------- | ---- | -------------------------- | 1755e41f4b71Sopenharmony_ci| option | [PhotoSelectOptions](#photoselectoptions) | No | Options for selecting files. If this parameter is not specified, up to 50 images and videos are selected by default.| 1756e41f4b71Sopenharmony_ci 1757e41f4b71Sopenharmony_ci**Return value** 1758e41f4b71Sopenharmony_ci 1759e41f4b71Sopenharmony_ci| Type | Description | 1760e41f4b71Sopenharmony_ci| ----------------------------- | :---- | 1761e41f4b71Sopenharmony_ci| Promise<[PhotoSelectResult](#photoselectresult)> | Promise return information about the images or videos selected.| 1762e41f4b71Sopenharmony_ci 1763e41f4b71Sopenharmony_ci**Error codes** 1764e41f4b71Sopenharmony_ci 1765e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1766e41f4b71Sopenharmony_ci 1767e41f4b71Sopenharmony_ci| ID| Error Message| 1768e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1769e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1770e41f4b71Sopenharmony_ci| 13900042 | Unknown error. | 1771e41f4b71Sopenharmony_ci 1772e41f4b71Sopenharmony_ci**Example** 1773e41f4b71Sopenharmony_ci 1774e41f4b71Sopenharmony_ci```ts 1775e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1776e41f4b71Sopenharmony_ciasync function example01() { 1777e41f4b71Sopenharmony_ci try { 1778e41f4b71Sopenharmony_ci let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions(); 1779e41f4b71Sopenharmony_ci PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; 1780e41f4b71Sopenharmony_ci PhotoSelectOptions.maxSelectNumber = 5; 1781e41f4b71Sopenharmony_ci let photoPicker = new photoAccessHelper.PhotoViewPicker(); 1782e41f4b71Sopenharmony_ci photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { 1783e41f4b71Sopenharmony_ci console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); 1784e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 1785e41f4b71Sopenharmony_ci console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`); 1786e41f4b71Sopenharmony_ci }); 1787e41f4b71Sopenharmony_ci } catch (error) { 1788e41f4b71Sopenharmony_ci let err: BusinessError = error as BusinessError; 1789e41f4b71Sopenharmony_ci console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`); 1790e41f4b71Sopenharmony_ci } 1791e41f4b71Sopenharmony_ci} 1792e41f4b71Sopenharmony_ci``` 1793e41f4b71Sopenharmony_ci 1794e41f4b71Sopenharmony_ci### select 1795e41f4b71Sopenharmony_ci 1796e41f4b71Sopenharmony_ciselect(option: PhotoSelectOptions, callback: AsyncCallback<PhotoSelectResult>) : void 1797e41f4b71Sopenharmony_ci 1798e41f4b71Sopenharmony_ciStarts a **photoPicker** page for the user to select one or more images or videos. This API uses an asynchronous callback to return the result. You can pass in **PhotoSelectOptions** to specify the media file type and the maximum number of files to select. 1799e41f4b71Sopenharmony_ci 1800e41f4b71Sopenharmony_ci**NOTE**<br>The **photoUris** in the **PhotoSelectResult** object returned by this API can be used only by calling [photoAccessHelper.getAssets()](#getassets) with temporary authorization. For details, see [Using a Media File URI](../../file-management/user-file-uri-intro.md#using-a-media-file-uri). 1801e41f4b71Sopenharmony_ci 1802e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 1803e41f4b71Sopenharmony_ci 1804e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1805e41f4b71Sopenharmony_ci 1806e41f4b71Sopenharmony_ci**Parameters** 1807e41f4b71Sopenharmony_ci 1808e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1809e41f4b71Sopenharmony_ci| ------- | ------- | ---- | -------------------------- | 1810e41f4b71Sopenharmony_ci| option | [PhotoSelectOptions](#photoselectoptions) | Yes | Options for selecting images or videos.| 1811e41f4b71Sopenharmony_ci| callback | AsyncCallback<[PhotoSelectResult](#photoselectresult)> | Yes | Callback used to return information about the images or videos selected.| 1812e41f4b71Sopenharmony_ci 1813e41f4b71Sopenharmony_ci**Error codes** 1814e41f4b71Sopenharmony_ci 1815e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1816e41f4b71Sopenharmony_ci 1817e41f4b71Sopenharmony_ci| ID| Error Message| 1818e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1819e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 1820e41f4b71Sopenharmony_ci| 13900042 | Unknown error. | 1821e41f4b71Sopenharmony_ci 1822e41f4b71Sopenharmony_ci**Example** 1823e41f4b71Sopenharmony_ci 1824e41f4b71Sopenharmony_ci```ts 1825e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1826e41f4b71Sopenharmony_ciasync function example02() { 1827e41f4b71Sopenharmony_ci try { 1828e41f4b71Sopenharmony_ci let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions(); 1829e41f4b71Sopenharmony_ci PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE; 1830e41f4b71Sopenharmony_ci PhotoSelectOptions.maxSelectNumber = 5; 1831e41f4b71Sopenharmony_ci let photoPicker = new photoAccessHelper.PhotoViewPicker(); 1832e41f4b71Sopenharmony_ci photoPicker.select(PhotoSelectOptions, (err: BusinessError, PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { 1833e41f4b71Sopenharmony_ci if (err) { 1834e41f4b71Sopenharmony_ci console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`); 1835e41f4b71Sopenharmony_ci return; 1836e41f4b71Sopenharmony_ci } 1837e41f4b71Sopenharmony_ci console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); 1838e41f4b71Sopenharmony_ci }); 1839e41f4b71Sopenharmony_ci } catch (error) { 1840e41f4b71Sopenharmony_ci let err: BusinessError = error as BusinessError; 1841e41f4b71Sopenharmony_ci console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`); 1842e41f4b71Sopenharmony_ci } 1843e41f4b71Sopenharmony_ci} 1844e41f4b71Sopenharmony_ci``` 1845e41f4b71Sopenharmony_ci 1846e41f4b71Sopenharmony_ci### select 1847e41f4b71Sopenharmony_ci 1848e41f4b71Sopenharmony_ciselect(callback: AsyncCallback<PhotoSelectResult>) : void 1849e41f4b71Sopenharmony_ci 1850e41f4b71Sopenharmony_ciStarts a **photoPicker** page for the user to select one or more images or videos. This API uses an asynchronous callback to return the result. 1851e41f4b71Sopenharmony_ci 1852e41f4b71Sopenharmony_ci**NOTE**<br>The **photoUris** in the **PhotoSelectResult** object returned by this API can be used only by calling [photoAccessHelper.getAssets()](#getassets) with temporary authorization. For details, see [Using a Media File URI](../../file-management/user-file-uri-intro.md#using-a-media-file-uri). 1853e41f4b71Sopenharmony_ci 1854e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 1855e41f4b71Sopenharmony_ci 1856e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1857e41f4b71Sopenharmony_ci 1858e41f4b71Sopenharmony_ci**Parameters** 1859e41f4b71Sopenharmony_ci 1860e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 1861e41f4b71Sopenharmony_ci| ------- | ------- | ---- | -------------------------- | 1862e41f4b71Sopenharmony_ci| callback | AsyncCallback<[PhotoSelectResult](#photoselectresult)> | Yes | Callback used to return information about the images or videos selected.| 1863e41f4b71Sopenharmony_ci 1864e41f4b71Sopenharmony_ci**Error codes** 1865e41f4b71Sopenharmony_ci 1866e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1867e41f4b71Sopenharmony_ci 1868e41f4b71Sopenharmony_ci| ID| Error Message| 1869e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1870e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 1871e41f4b71Sopenharmony_ci| 13900042 | Unknown error. | 1872e41f4b71Sopenharmony_ci 1873e41f4b71Sopenharmony_ci**Example** 1874e41f4b71Sopenharmony_ci 1875e41f4b71Sopenharmony_ci```ts 1876e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 1877e41f4b71Sopenharmony_ciasync function example03() { 1878e41f4b71Sopenharmony_ci try { 1879e41f4b71Sopenharmony_ci let photoPicker = new photoAccessHelper.PhotoViewPicker(); 1880e41f4b71Sopenharmony_ci photoPicker.select((err: BusinessError, PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { 1881e41f4b71Sopenharmony_ci if (err) { 1882e41f4b71Sopenharmony_ci console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`); 1883e41f4b71Sopenharmony_ci return; 1884e41f4b71Sopenharmony_ci } 1885e41f4b71Sopenharmony_ci console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); 1886e41f4b71Sopenharmony_ci }); 1887e41f4b71Sopenharmony_ci } catch (error) { 1888e41f4b71Sopenharmony_ci let err: BusinessError = error as BusinessError; 1889e41f4b71Sopenharmony_ci console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`); 1890e41f4b71Sopenharmony_ci } 1891e41f4b71Sopenharmony_ci} 1892e41f4b71Sopenharmony_ci``` 1893e41f4b71Sopenharmony_ci 1894e41f4b71Sopenharmony_ci## FetchResult 1895e41f4b71Sopenharmony_ci 1896e41f4b71Sopenharmony_ciProvides APIs to manage the file retrieval result. 1897e41f4b71Sopenharmony_ci 1898e41f4b71Sopenharmony_ci### getCount 1899e41f4b71Sopenharmony_ci 1900e41f4b71Sopenharmony_cigetCount(): number 1901e41f4b71Sopenharmony_ci 1902e41f4b71Sopenharmony_ciObtains the total number of files in the result set. 1903e41f4b71Sopenharmony_ci 1904e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1905e41f4b71Sopenharmony_ci 1906e41f4b71Sopenharmony_ci**Return value** 1907e41f4b71Sopenharmony_ci 1908e41f4b71Sopenharmony_ci| Type | Description | 1909e41f4b71Sopenharmony_ci| ------ | -------- | 1910e41f4b71Sopenharmony_ci| number | Returns the total number of files obtained.| 1911e41f4b71Sopenharmony_ci 1912e41f4b71Sopenharmony_ci**Error codes** 1913e41f4b71Sopenharmony_ci 1914e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1915e41f4b71Sopenharmony_ci 1916e41f4b71Sopenharmony_ci| ID| Error Message| 1917e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1918e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 1919e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 1920e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 1921e41f4b71Sopenharmony_ci 1922e41f4b71Sopenharmony_ci**Example** 1923e41f4b71Sopenharmony_ci 1924e41f4b71Sopenharmony_ci```ts 1925e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 1926e41f4b71Sopenharmony_ci 1927e41f4b71Sopenharmony_ciasync function example() { 1928e41f4b71Sopenharmony_ci console.info('getCountDemo'); 1929e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1930e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 1931e41f4b71Sopenharmony_ci fetchColumns: [], 1932e41f4b71Sopenharmony_ci predicates: predicates 1933e41f4b71Sopenharmony_ci }; 1934e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1935e41f4b71Sopenharmony_ci let fetchCount = fetchResult.getCount(); 1936e41f4b71Sopenharmony_ci console.info('fetchCount = ', fetchCount); 1937e41f4b71Sopenharmony_ci} 1938e41f4b71Sopenharmony_ci``` 1939e41f4b71Sopenharmony_ci 1940e41f4b71Sopenharmony_ci### isAfterLast 1941e41f4b71Sopenharmony_ci 1942e41f4b71Sopenharmony_ciisAfterLast(): boolean 1943e41f4b71Sopenharmony_ci 1944e41f4b71Sopenharmony_ciChecks whether the cursor is in the last row of the result set. 1945e41f4b71Sopenharmony_ci 1946e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1947e41f4b71Sopenharmony_ci 1948e41f4b71Sopenharmony_ci**Return value** 1949e41f4b71Sopenharmony_ci 1950e41f4b71Sopenharmony_ci| Type | Description | 1951e41f4b71Sopenharmony_ci| ------- | ---------------------------------- | 1952e41f4b71Sopenharmony_ci| boolean | Returns **true** if the cursor is in the last row of the result set; returns **false** otherwise.| 1953e41f4b71Sopenharmony_ci 1954e41f4b71Sopenharmony_ci**Error codes** 1955e41f4b71Sopenharmony_ci 1956e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1957e41f4b71Sopenharmony_ci 1958e41f4b71Sopenharmony_ci| ID| Error Message| 1959e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 1960e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 1961e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 1962e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 1963e41f4b71Sopenharmony_ci 1964e41f4b71Sopenharmony_ci**Example** 1965e41f4b71Sopenharmony_ci 1966e41f4b71Sopenharmony_ci```ts 1967e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 1968e41f4b71Sopenharmony_ci 1969e41f4b71Sopenharmony_ciasync function example() { 1970e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 1971e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 1972e41f4b71Sopenharmony_ci fetchColumns: [], 1973e41f4b71Sopenharmony_ci predicates: predicates 1974e41f4b71Sopenharmony_ci }; 1975e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 1976e41f4b71Sopenharmony_ci let fetchCount = fetchResult.getCount(); 1977e41f4b71Sopenharmony_ci console.info('count:' + fetchCount); 1978e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getLastObject(); 1979e41f4b71Sopenharmony_ci if (fetchResult.isAfterLast()) { 1980e41f4b71Sopenharmony_ci console.info('photoAsset isAfterLast displayName = ', photoAsset.displayName); 1981e41f4b71Sopenharmony_ci } else { 1982e41f4b71Sopenharmony_ci console.info('photoAsset not isAfterLast.'); 1983e41f4b71Sopenharmony_ci } 1984e41f4b71Sopenharmony_ci} 1985e41f4b71Sopenharmony_ci``` 1986e41f4b71Sopenharmony_ci 1987e41f4b71Sopenharmony_ci### close 1988e41f4b71Sopenharmony_ci 1989e41f4b71Sopenharmony_ciclose(): void 1990e41f4b71Sopenharmony_ci 1991e41f4b71Sopenharmony_ciCloses this **FetchFileResult** instance to invalidate it. After this instance is released, the APIs in this instance cannot be invoked. 1992e41f4b71Sopenharmony_ci 1993e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 1994e41f4b71Sopenharmony_ci 1995e41f4b71Sopenharmony_ci**Error codes** 1996e41f4b71Sopenharmony_ci 1997e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 1998e41f4b71Sopenharmony_ci 1999e41f4b71Sopenharmony_ci| ID| Error Message| 2000e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2001e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2002e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2003e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2004e41f4b71Sopenharmony_ci 2005e41f4b71Sopenharmony_ci**Example** 2006e41f4b71Sopenharmony_ci 2007e41f4b71Sopenharmony_ci```ts 2008e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2009e41f4b71Sopenharmony_ci 2010e41f4b71Sopenharmony_ciasync function example() { 2011e41f4b71Sopenharmony_ci console.info('fetchResultCloseDemo'); 2012e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2013e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2014e41f4b71Sopenharmony_ci fetchColumns: [], 2015e41f4b71Sopenharmony_ci predicates: predicates 2016e41f4b71Sopenharmony_ci }; 2017e41f4b71Sopenharmony_ci try { 2018e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2019e41f4b71Sopenharmony_ci fetchResult.close(); 2020e41f4b71Sopenharmony_ci console.info('close succeed.'); 2021e41f4b71Sopenharmony_ci } catch (err) { 2022e41f4b71Sopenharmony_ci console.error(`close fail. error: ${err.code}, ${err.message}`); 2023e41f4b71Sopenharmony_ci } 2024e41f4b71Sopenharmony_ci} 2025e41f4b71Sopenharmony_ci``` 2026e41f4b71Sopenharmony_ci 2027e41f4b71Sopenharmony_ci### getFirstObject 2028e41f4b71Sopenharmony_ci 2029e41f4b71Sopenharmony_cigetFirstObject(callback: AsyncCallback<T>): void 2030e41f4b71Sopenharmony_ci 2031e41f4b71Sopenharmony_ciObtains the first file asset in the result set. This API uses an asynchronous callback to return the result. 2032e41f4b71Sopenharmony_ci 2033e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2034e41f4b71Sopenharmony_ci 2035e41f4b71Sopenharmony_ci**Parameters** 2036e41f4b71Sopenharmony_ci 2037e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 2038e41f4b71Sopenharmony_ci| -------- | --------------------------------------------- | ---- | ------------------------------------------- | 2039e41f4b71Sopenharmony_ci| callback | AsyncCallback<T> | Yes | Callback used to return the first file asset obtained.| 2040e41f4b71Sopenharmony_ci 2041e41f4b71Sopenharmony_ci**Error codes** 2042e41f4b71Sopenharmony_ci 2043e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2044e41f4b71Sopenharmony_ci 2045e41f4b71Sopenharmony_ci| ID| Error Message| 2046e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2047e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2048e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2049e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2050e41f4b71Sopenharmony_ci 2051e41f4b71Sopenharmony_ci**Example** 2052e41f4b71Sopenharmony_ci 2053e41f4b71Sopenharmony_ci```ts 2054e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2055e41f4b71Sopenharmony_ci 2056e41f4b71Sopenharmony_ciasync function example() { 2057e41f4b71Sopenharmony_ci console.info('getFirstObjectDemo'); 2058e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2059e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2060e41f4b71Sopenharmony_ci fetchColumns: [], 2061e41f4b71Sopenharmony_ci predicates: predicates 2062e41f4b71Sopenharmony_ci }; 2063e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2064e41f4b71Sopenharmony_ci fetchResult.getFirstObject((err, photoAsset) => { 2065e41f4b71Sopenharmony_ci if (photoAsset !== undefined) { 2066e41f4b71Sopenharmony_ci console.info('photoAsset displayName: ', photoAsset.displayName); 2067e41f4b71Sopenharmony_ci } else { 2068e41f4b71Sopenharmony_ci console.error(`photoAsset failed with err:${err.code}, ${err.message}`); 2069e41f4b71Sopenharmony_ci } 2070e41f4b71Sopenharmony_ci }); 2071e41f4b71Sopenharmony_ci} 2072e41f4b71Sopenharmony_ci``` 2073e41f4b71Sopenharmony_ci 2074e41f4b71Sopenharmony_ci### getFirstObject 2075e41f4b71Sopenharmony_ci 2076e41f4b71Sopenharmony_cigetFirstObject(): Promise<T> 2077e41f4b71Sopenharmony_ci 2078e41f4b71Sopenharmony_ciObtains the first file asset in the result set. This API uses a promise to return the result. 2079e41f4b71Sopenharmony_ci 2080e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2081e41f4b71Sopenharmony_ci 2082e41f4b71Sopenharmony_ci**Return value** 2083e41f4b71Sopenharmony_ci 2084e41f4b71Sopenharmony_ci| Type | Description | 2085e41f4b71Sopenharmony_ci| --------------------------------------- | -------------------------- | 2086e41f4b71Sopenharmony_ci| Promise<T> | Promise used to return the first object in the result set.| 2087e41f4b71Sopenharmony_ci 2088e41f4b71Sopenharmony_ci**Error codes** 2089e41f4b71Sopenharmony_ci 2090e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2091e41f4b71Sopenharmony_ci 2092e41f4b71Sopenharmony_ci| ID| Error Message| 2093e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2094e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2095e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2096e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2097e41f4b71Sopenharmony_ci 2098e41f4b71Sopenharmony_ci**Example** 2099e41f4b71Sopenharmony_ci 2100e41f4b71Sopenharmony_ci```ts 2101e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2102e41f4b71Sopenharmony_ci 2103e41f4b71Sopenharmony_ciasync function example() { 2104e41f4b71Sopenharmony_ci console.info('getFirstObjectDemo'); 2105e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2106e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2107e41f4b71Sopenharmony_ci fetchColumns: [], 2108e41f4b71Sopenharmony_ci predicates: predicates 2109e41f4b71Sopenharmony_ci }; 2110e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2111e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 2112e41f4b71Sopenharmony_ci console.info('photoAsset displayName: ', photoAsset.displayName); 2113e41f4b71Sopenharmony_ci} 2114e41f4b71Sopenharmony_ci``` 2115e41f4b71Sopenharmony_ci 2116e41f4b71Sopenharmony_ci### getNextObject 2117e41f4b71Sopenharmony_ci 2118e41f4b71Sopenharmony_cigetNextObject(callback: AsyncCallback<T>): void 2119e41f4b71Sopenharmony_ci 2120e41f4b71Sopenharmony_ciObtains the next file asset in the result set. This API uses an asynchronous callback to return the result. 2121e41f4b71Sopenharmony_ciBefore using this API, you must use [isAfterLast()](#isafterlast) to check whether the current position is the end of the result set. 2122e41f4b71Sopenharmony_ci 2123e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2124e41f4b71Sopenharmony_ci 2125e41f4b71Sopenharmony_ci**Parameters** 2126e41f4b71Sopenharmony_ci 2127e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 2128e41f4b71Sopenharmony_ci| --------- | --------------------------------------------- | ---- | ----------------------------------------- | 2129e41f4b71Sopenharmony_ci| callback | AsyncCallback<T> | Yes | Callback used to return the next file asset.| 2130e41f4b71Sopenharmony_ci 2131e41f4b71Sopenharmony_ci**Error codes** 2132e41f4b71Sopenharmony_ci 2133e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2134e41f4b71Sopenharmony_ci 2135e41f4b71Sopenharmony_ci| ID| Error Message| 2136e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2137e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2138e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2139e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2140e41f4b71Sopenharmony_ci 2141e41f4b71Sopenharmony_ci**Example** 2142e41f4b71Sopenharmony_ci 2143e41f4b71Sopenharmony_ci```ts 2144e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2145e41f4b71Sopenharmony_ci 2146e41f4b71Sopenharmony_ciasync function example() { 2147e41f4b71Sopenharmony_ci console.info('getNextObjectDemo'); 2148e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2149e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2150e41f4b71Sopenharmony_ci fetchColumns: [], 2151e41f4b71Sopenharmony_ci predicates: predicates 2152e41f4b71Sopenharmony_ci }; 2153e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2154e41f4b71Sopenharmony_ci await fetchResult.getFirstObject(); 2155e41f4b71Sopenharmony_ci if (!fetchResult.isAfterLast()) { 2156e41f4b71Sopenharmony_ci fetchResult.getNextObject((err, photoAsset) => { 2157e41f4b71Sopenharmony_ci if (photoAsset !== undefined) { 2158e41f4b71Sopenharmony_ci console.info('photoAsset displayName: ', photoAsset.displayName); 2159e41f4b71Sopenharmony_ci } else { 2160e41f4b71Sopenharmony_ci console.error(`photoAsset failed with err: ${err.code}, ${err.message}`); 2161e41f4b71Sopenharmony_ci } 2162e41f4b71Sopenharmony_ci }); 2163e41f4b71Sopenharmony_ci } 2164e41f4b71Sopenharmony_ci} 2165e41f4b71Sopenharmony_ci``` 2166e41f4b71Sopenharmony_ci 2167e41f4b71Sopenharmony_ci### getNextObject 2168e41f4b71Sopenharmony_ci 2169e41f4b71Sopenharmony_cigetNextObject(): Promise<T> 2170e41f4b71Sopenharmony_ci 2171e41f4b71Sopenharmony_ciObtains the next file asset in the result set. This API uses a promise to return the result. 2172e41f4b71Sopenharmony_ciBefore using this API, you must use [isAfterLast()](#isafterlast) to check whether the current position is the end of the result set. 2173e41f4b71Sopenharmony_ci 2174e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2175e41f4b71Sopenharmony_ci 2176e41f4b71Sopenharmony_ci**Return value** 2177e41f4b71Sopenharmony_ci 2178e41f4b71Sopenharmony_ci| Type | Description | 2179e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 2180e41f4b71Sopenharmony_ci| Promise<T> | Promise used to return the next object in the result set.| 2181e41f4b71Sopenharmony_ci 2182e41f4b71Sopenharmony_ci**Error codes** 2183e41f4b71Sopenharmony_ci 2184e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2185e41f4b71Sopenharmony_ci 2186e41f4b71Sopenharmony_ci| ID| Error Message| 2187e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2188e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2189e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2190e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2191e41f4b71Sopenharmony_ci 2192e41f4b71Sopenharmony_ci**Example** 2193e41f4b71Sopenharmony_ci 2194e41f4b71Sopenharmony_ci```ts 2195e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2196e41f4b71Sopenharmony_ci 2197e41f4b71Sopenharmony_ciasync function example() { 2198e41f4b71Sopenharmony_ci console.info('getNextObjectDemo'); 2199e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2200e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2201e41f4b71Sopenharmony_ci fetchColumns: [], 2202e41f4b71Sopenharmony_ci predicates: predicates 2203e41f4b71Sopenharmony_ci }; 2204e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2205e41f4b71Sopenharmony_ci await fetchResult.getFirstObject(); 2206e41f4b71Sopenharmony_ci if (!fetchResult.isAfterLast()) { 2207e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getNextObject(); 2208e41f4b71Sopenharmony_ci console.info('photoAsset displayName: ', photoAsset.displayName); 2209e41f4b71Sopenharmony_ci } 2210e41f4b71Sopenharmony_ci} 2211e41f4b71Sopenharmony_ci``` 2212e41f4b71Sopenharmony_ci 2213e41f4b71Sopenharmony_ci### getLastObject 2214e41f4b71Sopenharmony_ci 2215e41f4b71Sopenharmony_cigetLastObject(callback: AsyncCallback<T>): void 2216e41f4b71Sopenharmony_ci 2217e41f4b71Sopenharmony_ciObtains the last file asset in the result set. This API uses an asynchronous callback to return the result. 2218e41f4b71Sopenharmony_ci 2219e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2220e41f4b71Sopenharmony_ci 2221e41f4b71Sopenharmony_ci**Parameters** 2222e41f4b71Sopenharmony_ci 2223e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 2224e41f4b71Sopenharmony_ci| -------- | --------------------------------------------- | ---- | --------------------------- | 2225e41f4b71Sopenharmony_ci| callback | AsyncCallback<T> | Yes | Callback used to return the last file asset obtained.| 2226e41f4b71Sopenharmony_ci 2227e41f4b71Sopenharmony_ci**Error codes** 2228e41f4b71Sopenharmony_ci 2229e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2230e41f4b71Sopenharmony_ci 2231e41f4b71Sopenharmony_ci| ID| Error Message| 2232e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2233e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2234e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2235e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2236e41f4b71Sopenharmony_ci 2237e41f4b71Sopenharmony_ci**Example** 2238e41f4b71Sopenharmony_ci 2239e41f4b71Sopenharmony_ci```ts 2240e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2241e41f4b71Sopenharmony_ci 2242e41f4b71Sopenharmony_ciasync function example() { 2243e41f4b71Sopenharmony_ci console.info('getLastObjectDemo'); 2244e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2245e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2246e41f4b71Sopenharmony_ci fetchColumns: [], 2247e41f4b71Sopenharmony_ci predicates: predicates 2248e41f4b71Sopenharmony_ci }; 2249e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2250e41f4b71Sopenharmony_ci fetchResult.getLastObject((err, photoAsset) => { 2251e41f4b71Sopenharmony_ci if (photoAsset !== undefined) { 2252e41f4b71Sopenharmony_ci console.info('photoAsset displayName: ', photoAsset.displayName); 2253e41f4b71Sopenharmony_ci } else { 2254e41f4b71Sopenharmony_ci console.error(`photoAsset failed with err: ${err.code}, ${err.message}`); 2255e41f4b71Sopenharmony_ci } 2256e41f4b71Sopenharmony_ci }); 2257e41f4b71Sopenharmony_ci} 2258e41f4b71Sopenharmony_ci``` 2259e41f4b71Sopenharmony_ci 2260e41f4b71Sopenharmony_ci### getLastObject 2261e41f4b71Sopenharmony_ci 2262e41f4b71Sopenharmony_cigetLastObject(): Promise<T> 2263e41f4b71Sopenharmony_ci 2264e41f4b71Sopenharmony_ciObtains the last file asset in the result set. This API uses a promise to return the result. 2265e41f4b71Sopenharmony_ci 2266e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2267e41f4b71Sopenharmony_ci 2268e41f4b71Sopenharmony_ci**Return value** 2269e41f4b71Sopenharmony_ci 2270e41f4b71Sopenharmony_ci| Type | Description | 2271e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 2272e41f4b71Sopenharmony_ci| Promise<T> | Promise used to return the last object in the result set.| 2273e41f4b71Sopenharmony_ci 2274e41f4b71Sopenharmony_ci**Error codes** 2275e41f4b71Sopenharmony_ci 2276e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2277e41f4b71Sopenharmony_ci 2278e41f4b71Sopenharmony_ci| ID| Error Message| 2279e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2280e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2281e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2282e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2283e41f4b71Sopenharmony_ci 2284e41f4b71Sopenharmony_ci**Example** 2285e41f4b71Sopenharmony_ci 2286e41f4b71Sopenharmony_ci```ts 2287e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2288e41f4b71Sopenharmony_ci 2289e41f4b71Sopenharmony_ciasync function example() { 2290e41f4b71Sopenharmony_ci console.info('getLastObjectDemo'); 2291e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2292e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2293e41f4b71Sopenharmony_ci fetchColumns: [], 2294e41f4b71Sopenharmony_ci predicates: predicates 2295e41f4b71Sopenharmony_ci }; 2296e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2297e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getLastObject(); 2298e41f4b71Sopenharmony_ci console.info('photoAsset displayName: ', photoAsset.displayName); 2299e41f4b71Sopenharmony_ci} 2300e41f4b71Sopenharmony_ci``` 2301e41f4b71Sopenharmony_ci 2302e41f4b71Sopenharmony_ci### getObjectByPosition 2303e41f4b71Sopenharmony_ci 2304e41f4b71Sopenharmony_cigetObjectByPosition(index: number, callback: AsyncCallback<T>): void 2305e41f4b71Sopenharmony_ci 2306e41f4b71Sopenharmony_ciObtains a file asset with the specified index in the result set. This API uses an asynchronous callback to return the result. 2307e41f4b71Sopenharmony_ci 2308e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2309e41f4b71Sopenharmony_ci 2310e41f4b71Sopenharmony_ci**Parameters** 2311e41f4b71Sopenharmony_ci 2312e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 2313e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | ---- | ------------------ | 2314e41f4b71Sopenharmony_ci| index | number | Yes | Index of the file asset to obtain. The value starts from **0**. | 2315e41f4b71Sopenharmony_ci| callback | AsyncCallback<T> | Yes | Callback used to return the file asset obtained.| 2316e41f4b71Sopenharmony_ci 2317e41f4b71Sopenharmony_ci**Error codes** 2318e41f4b71Sopenharmony_ci 2319e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2320e41f4b71Sopenharmony_ci 2321e41f4b71Sopenharmony_ci| ID| Error Message| 2322e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2323e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 2324e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2325e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2326e41f4b71Sopenharmony_ci 2327e41f4b71Sopenharmony_ci**Example** 2328e41f4b71Sopenharmony_ci 2329e41f4b71Sopenharmony_ci```ts 2330e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2331e41f4b71Sopenharmony_ci 2332e41f4b71Sopenharmony_ciasync function example() { 2333e41f4b71Sopenharmony_ci console.info('getObjectByPositionDemo'); 2334e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2335e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2336e41f4b71Sopenharmony_ci fetchColumns: [], 2337e41f4b71Sopenharmony_ci predicates: predicates 2338e41f4b71Sopenharmony_ci }; 2339e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2340e41f4b71Sopenharmony_ci fetchResult.getObjectByPosition(0, (err, photoAsset) => { 2341e41f4b71Sopenharmony_ci if (photoAsset !== undefined) { 2342e41f4b71Sopenharmony_ci console.info('photoAsset displayName: ', photoAsset.displayName); 2343e41f4b71Sopenharmony_ci } else { 2344e41f4b71Sopenharmony_ci console.error(`photoAsset failed with err: ${err.code}, ${err.message}`); 2345e41f4b71Sopenharmony_ci } 2346e41f4b71Sopenharmony_ci }); 2347e41f4b71Sopenharmony_ci} 2348e41f4b71Sopenharmony_ci``` 2349e41f4b71Sopenharmony_ci 2350e41f4b71Sopenharmony_ci### getObjectByPosition 2351e41f4b71Sopenharmony_ci 2352e41f4b71Sopenharmony_cigetObjectByPosition(index: number): Promise<T> 2353e41f4b71Sopenharmony_ci 2354e41f4b71Sopenharmony_ciObtains a file asset with the specified index in the result set. This API uses a promise to return the result. 2355e41f4b71Sopenharmony_ci 2356e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2357e41f4b71Sopenharmony_ci 2358e41f4b71Sopenharmony_ci**Parameters** 2359e41f4b71Sopenharmony_ci 2360e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 2361e41f4b71Sopenharmony_ci| ----- | ------ | ---- | -------------- | 2362e41f4b71Sopenharmony_ci| index | number | Yes | Index of the file asset to obtain. The value starts from **0**.| 2363e41f4b71Sopenharmony_ci 2364e41f4b71Sopenharmony_ci**Return value** 2365e41f4b71Sopenharmony_ci 2366e41f4b71Sopenharmony_ci| Type | Description | 2367e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 2368e41f4b71Sopenharmony_ci| Promise<T> | Promise used to return the file asset obtained.| 2369e41f4b71Sopenharmony_ci 2370e41f4b71Sopenharmony_ci**Error codes** 2371e41f4b71Sopenharmony_ci 2372e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2373e41f4b71Sopenharmony_ci 2374e41f4b71Sopenharmony_ci| ID| Error Message| 2375e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2376e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 2377e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2378e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2379e41f4b71Sopenharmony_ci 2380e41f4b71Sopenharmony_ci**Example** 2381e41f4b71Sopenharmony_ci 2382e41f4b71Sopenharmony_ci```ts 2383e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2384e41f4b71Sopenharmony_ci 2385e41f4b71Sopenharmony_ciasync function example() { 2386e41f4b71Sopenharmony_ci console.info('getObjectByPositionDemo'); 2387e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2388e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2389e41f4b71Sopenharmony_ci fetchColumns: [], 2390e41f4b71Sopenharmony_ci predicates: predicates 2391e41f4b71Sopenharmony_ci }; 2392e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2393e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getObjectByPosition(0); 2394e41f4b71Sopenharmony_ci console.info('photoAsset displayName: ', photoAsset.displayName); 2395e41f4b71Sopenharmony_ci} 2396e41f4b71Sopenharmony_ci``` 2397e41f4b71Sopenharmony_ci 2398e41f4b71Sopenharmony_ci### getAllObjects 2399e41f4b71Sopenharmony_ci 2400e41f4b71Sopenharmony_cigetAllObjects(callback: AsyncCallback<Array<T>>): void 2401e41f4b71Sopenharmony_ci 2402e41f4b71Sopenharmony_ciObtains all the file assets in the result set. This API uses an asynchronous callback to return the result. 2403e41f4b71Sopenharmony_ci 2404e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2405e41f4b71Sopenharmony_ci 2406e41f4b71Sopenharmony_ci**Parameters** 2407e41f4b71Sopenharmony_ci 2408e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 2409e41f4b71Sopenharmony_ci| -------- | --------------------------------------------- | ---- | ------------------------------------------- | 2410e41f4b71Sopenharmony_ci| callback | AsyncCallback<Array<T>> | Yes | Callback used to return an array of all file assets in the result set.| 2411e41f4b71Sopenharmony_ci 2412e41f4b71Sopenharmony_ci**Error codes** 2413e41f4b71Sopenharmony_ci 2414e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2415e41f4b71Sopenharmony_ci 2416e41f4b71Sopenharmony_ci| ID| Error Message| 2417e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2418e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2419e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2420e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2421e41f4b71Sopenharmony_ci 2422e41f4b71Sopenharmony_ci**Example** 2423e41f4b71Sopenharmony_ci 2424e41f4b71Sopenharmony_ci```ts 2425e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2426e41f4b71Sopenharmony_ci 2427e41f4b71Sopenharmony_ciasync function example() { 2428e41f4b71Sopenharmony_ci console.info('getAllObjectDemo'); 2429e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2430e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2431e41f4b71Sopenharmony_ci fetchColumns: [], 2432e41f4b71Sopenharmony_ci predicates: predicates 2433e41f4b71Sopenharmony_ci }; 2434e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2435e41f4b71Sopenharmony_ci fetchResult.getAllObjects((err, photoAssetList) => { 2436e41f4b71Sopenharmony_ci if (photoAssetList !== undefined) { 2437e41f4b71Sopenharmony_ci console.info('photoAssetList length: ', photoAssetList.length); 2438e41f4b71Sopenharmony_ci } else { 2439e41f4b71Sopenharmony_ci console.error(`photoAssetList failed with err:${err.code}, ${err.message}`); 2440e41f4b71Sopenharmony_ci } 2441e41f4b71Sopenharmony_ci }); 2442e41f4b71Sopenharmony_ci} 2443e41f4b71Sopenharmony_ci``` 2444e41f4b71Sopenharmony_ci 2445e41f4b71Sopenharmony_ci### getAllObjects 2446e41f4b71Sopenharmony_ci 2447e41f4b71Sopenharmony_cigetAllObjects(): Promise<Array<T>> 2448e41f4b71Sopenharmony_ci 2449e41f4b71Sopenharmony_ciObtains all the file assets in the result set. This API uses a promise to return the result. 2450e41f4b71Sopenharmony_ci 2451e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2452e41f4b71Sopenharmony_ci 2453e41f4b71Sopenharmony_ci**Return value** 2454e41f4b71Sopenharmony_ci 2455e41f4b71Sopenharmony_ci| Type | Description | 2456e41f4b71Sopenharmony_ci| --------------------------------------- | -------------------------- | 2457e41f4b71Sopenharmony_ci| Promise<Array<T>> | Promise used to return an array of all file assets in the result set.| 2458e41f4b71Sopenharmony_ci 2459e41f4b71Sopenharmony_ci**Error codes** 2460e41f4b71Sopenharmony_ci 2461e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2462e41f4b71Sopenharmony_ci 2463e41f4b71Sopenharmony_ci| ID| Error Message| 2464e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2465e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2466e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2467e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2468e41f4b71Sopenharmony_ci 2469e41f4b71Sopenharmony_ci**Example** 2470e41f4b71Sopenharmony_ci 2471e41f4b71Sopenharmony_ci```ts 2472e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2473e41f4b71Sopenharmony_ci 2474e41f4b71Sopenharmony_ciasync function example() { 2475e41f4b71Sopenharmony_ci console.info('getAllObjectDemo'); 2476e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2477e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2478e41f4b71Sopenharmony_ci fetchColumns: [], 2479e41f4b71Sopenharmony_ci predicates: predicates 2480e41f4b71Sopenharmony_ci }; 2481e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2482e41f4b71Sopenharmony_ci let photoAssetList: Array<photoAccessHelper.PhotoAsset> = await fetchResult.getAllObjects(); 2483e41f4b71Sopenharmony_ci console.info('photoAssetList length: ', photoAssetList.length); 2484e41f4b71Sopenharmony_ci} 2485e41f4b71Sopenharmony_ci``` 2486e41f4b71Sopenharmony_ci 2487e41f4b71Sopenharmony_ci## Album 2488e41f4b71Sopenharmony_ci 2489e41f4b71Sopenharmony_ciProvides APIs to manage albums. 2490e41f4b71Sopenharmony_ci 2491e41f4b71Sopenharmony_ci### Properties 2492e41f4b71Sopenharmony_ci 2493e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2494e41f4b71Sopenharmony_ci 2495e41f4b71Sopenharmony_ci| Name | Type | Readable | Writable | Description | 2496e41f4b71Sopenharmony_ci| ------------ | ------ | ---- | ---- | ------- | 2497e41f4b71Sopenharmony_ci| albumType | [AlbumType](#albumtype) | Yes | No | Type of the album. | 2498e41f4b71Sopenharmony_ci| albumSubtype | [AlbumSubtype](#albumsubtype) | Yes | No | Subtype of the album. | 2499e41f4b71Sopenharmony_ci| albumName | string | Yes | Yes for a user album; no for a system album. | Name of the album. | 2500e41f4b71Sopenharmony_ci| albumUri | string | Yes | No | URI of the album. | 2501e41f4b71Sopenharmony_ci| count | number | Yes | No | Number of files in the album.| 2502e41f4b71Sopenharmony_ci| coverUri | string | Yes | No | URI of the cover file of the album.| 2503e41f4b71Sopenharmony_ci| imageCount<sup>11+</sup> | number | Yes | No | Number of images in the album.| 2504e41f4b71Sopenharmony_ci| videoCount<sup>11+</sup> | number | Yes | No | Number of videos in the album.| 2505e41f4b71Sopenharmony_ci 2506e41f4b71Sopenharmony_ci### getAssets 2507e41f4b71Sopenharmony_ci 2508e41f4b71Sopenharmony_cigetAssets(options: FetchOptions, callback: AsyncCallback<FetchResult<PhotoAsset>>): void 2509e41f4b71Sopenharmony_ci 2510e41f4b71Sopenharmony_ciObtains image and video assets. This API uses an asynchronous callback to return the result. 2511e41f4b71Sopenharmony_ci 2512e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 2513e41f4b71Sopenharmony_ci 2514e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2515e41f4b71Sopenharmony_ci 2516e41f4b71Sopenharmony_ci**Parameters** 2517e41f4b71Sopenharmony_ci 2518e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 2519e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ---------- | 2520e41f4b71Sopenharmony_ci| options | [FetchOptions](#fetchoptions) | Yes | Options for fetching the assets.| 2521e41f4b71Sopenharmony_ci| callback | AsyncCallback<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | Yes | Callback used to return the image and video assets obtained.| 2522e41f4b71Sopenharmony_ci 2523e41f4b71Sopenharmony_ci**Error codes** 2524e41f4b71Sopenharmony_ci 2525e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2526e41f4b71Sopenharmony_ci 2527e41f4b71Sopenharmony_ci| ID| Error Message| 2528e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2529e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 2530e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 2531e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2532e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2533e41f4b71Sopenharmony_ci 2534e41f4b71Sopenharmony_ci**Example** 2535e41f4b71Sopenharmony_ci 2536e41f4b71Sopenharmony_ci```ts 2537e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2538e41f4b71Sopenharmony_ci 2539e41f4b71Sopenharmony_ciasync function example() { 2540e41f4b71Sopenharmony_ci console.info('albumGetAssetsDemoCallback'); 2541e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2542e41f4b71Sopenharmony_ci let albumFetchOptions: photoAccessHelper.FetchOptions = { 2543e41f4b71Sopenharmony_ci fetchColumns: [], 2544e41f4b71Sopenharmony_ci predicates: predicates 2545e41f4b71Sopenharmony_ci }; 2546e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2547e41f4b71Sopenharmony_ci fetchColumns: [], 2548e41f4b71Sopenharmony_ci predicates: predicates 2549e41f4b71Sopenharmony_ci }; 2550e41f4b71Sopenharmony_ci let albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions); 2551e41f4b71Sopenharmony_ci let album: photoAccessHelper.Album = await albumList.getFirstObject(); 2552e41f4b71Sopenharmony_ci album.getAssets(fetchOption, (err, albumFetchResult) => { 2553e41f4b71Sopenharmony_ci if (albumFetchResult !== undefined) { 2554e41f4b71Sopenharmony_ci console.info('album getAssets successfully, getCount: ' + albumFetchResult.getCount()); 2555e41f4b71Sopenharmony_ci } else { 2556e41f4b71Sopenharmony_ci console.error(`album getAssets failed with error: ${err.code}, ${err.message}`); 2557e41f4b71Sopenharmony_ci } 2558e41f4b71Sopenharmony_ci }); 2559e41f4b71Sopenharmony_ci} 2560e41f4b71Sopenharmony_ci``` 2561e41f4b71Sopenharmony_ci 2562e41f4b71Sopenharmony_ci### getAssets 2563e41f4b71Sopenharmony_ci 2564e41f4b71Sopenharmony_cigetAssets(options: FetchOptions): Promise<FetchResult<PhotoAsset>> 2565e41f4b71Sopenharmony_ci 2566e41f4b71Sopenharmony_ciObtains image and video assets. This API uses a promise to return the result. 2567e41f4b71Sopenharmony_ci 2568e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 2569e41f4b71Sopenharmony_ci 2570e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2571e41f4b71Sopenharmony_ci 2572e41f4b71Sopenharmony_ci**Parameters** 2573e41f4b71Sopenharmony_ci 2574e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 2575e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ---------- | 2576e41f4b71Sopenharmony_ci| options | [FetchOptions](#fetchoptions) | Yes | Options for fetching the assets.| 2577e41f4b71Sopenharmony_ci 2578e41f4b71Sopenharmony_ci**Return value** 2579e41f4b71Sopenharmony_ci 2580e41f4b71Sopenharmony_ci| Type | Description | 2581e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 2582e41f4b71Sopenharmony_ci| Promise<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | Promise used to return the image and video assets obtained.| 2583e41f4b71Sopenharmony_ci 2584e41f4b71Sopenharmony_ci**Error codes** 2585e41f4b71Sopenharmony_ci 2586e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2587e41f4b71Sopenharmony_ci 2588e41f4b71Sopenharmony_ci| ID| Error Message| 2589e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2590e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 2591e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 2592e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2593e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2594e41f4b71Sopenharmony_ci 2595e41f4b71Sopenharmony_ci**Example** 2596e41f4b71Sopenharmony_ci 2597e41f4b71Sopenharmony_ci```ts 2598e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2599e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 2600e41f4b71Sopenharmony_ci 2601e41f4b71Sopenharmony_ciasync function example() { 2602e41f4b71Sopenharmony_ci console.info('albumGetAssetsDemoPromise'); 2603e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2604e41f4b71Sopenharmony_ci let albumFetchOptions: photoAccessHelper.FetchOptions = { 2605e41f4b71Sopenharmony_ci fetchColumns: [], 2606e41f4b71Sopenharmony_ci predicates: predicates 2607e41f4b71Sopenharmony_ci }; 2608e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2609e41f4b71Sopenharmony_ci fetchColumns: [], 2610e41f4b71Sopenharmony_ci predicates: predicates 2611e41f4b71Sopenharmony_ci }; 2612e41f4b71Sopenharmony_ci let albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions); 2613e41f4b71Sopenharmony_ci let album: photoAccessHelper.Album = await albumList.getFirstObject(); 2614e41f4b71Sopenharmony_ci album.getAssets(fetchOption).then((albumFetchResult) => { 2615e41f4b71Sopenharmony_ci console.info('album getAssets successfully, getCount: ' + albumFetchResult.getCount()); 2616e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 2617e41f4b71Sopenharmony_ci console.error(`album getAssets failed with error: ${err.code}, ${err.message}`); 2618e41f4b71Sopenharmony_ci }); 2619e41f4b71Sopenharmony_ci} 2620e41f4b71Sopenharmony_ci``` 2621e41f4b71Sopenharmony_ci 2622e41f4b71Sopenharmony_ci### commitModify 2623e41f4b71Sopenharmony_ci 2624e41f4b71Sopenharmony_cicommitModify(callback: AsyncCallback<void>): void 2625e41f4b71Sopenharmony_ci 2626e41f4b71Sopenharmony_ciCommits the modification on the album attributes to the database. This API uses an asynchronous callback to return the result. 2627e41f4b71Sopenharmony_ci 2628e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 2629e41f4b71Sopenharmony_ci 2630e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2631e41f4b71Sopenharmony_ci 2632e41f4b71Sopenharmony_ci**Parameters** 2633e41f4b71Sopenharmony_ci 2634e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 2635e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ---------- | 2636e41f4b71Sopenharmony_ci| callback | AsyncCallback<void> | Yes | Callback that returns no value.| 2637e41f4b71Sopenharmony_ci 2638e41f4b71Sopenharmony_ci**Error codes** 2639e41f4b71Sopenharmony_ci 2640e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2641e41f4b71Sopenharmony_ci 2642e41f4b71Sopenharmony_ci| ID| Error Message| 2643e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2644e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2645e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 2646e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2647e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2648e41f4b71Sopenharmony_ci 2649e41f4b71Sopenharmony_ci**Example** 2650e41f4b71Sopenharmony_ci 2651e41f4b71Sopenharmony_ci```ts 2652e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2653e41f4b71Sopenharmony_ci 2654e41f4b71Sopenharmony_ciasync function example() { 2655e41f4b71Sopenharmony_ci console.info('albumCommitModifyDemo'); 2656e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2657e41f4b71Sopenharmony_ci let albumFetchOptions: photoAccessHelper.FetchOptions = { 2658e41f4b71Sopenharmony_ci fetchColumns: [], 2659e41f4b71Sopenharmony_ci predicates: predicates 2660e41f4b71Sopenharmony_ci }; 2661e41f4b71Sopenharmony_ci let albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions); 2662e41f4b71Sopenharmony_ci let album: photoAccessHelper.Album = await albumList.getFirstObject(); 2663e41f4b71Sopenharmony_ci album.albumName = 'hello'; 2664e41f4b71Sopenharmony_ci album.commitModify((err) => { 2665e41f4b71Sopenharmony_ci if (err !== undefined) { 2666e41f4b71Sopenharmony_ci console.error(`commitModify failed with error: ${err.code}, ${err.message}`); 2667e41f4b71Sopenharmony_ci } else { 2668e41f4b71Sopenharmony_ci console.info('commitModify successfully'); 2669e41f4b71Sopenharmony_ci } 2670e41f4b71Sopenharmony_ci }); 2671e41f4b71Sopenharmony_ci} 2672e41f4b71Sopenharmony_ci``` 2673e41f4b71Sopenharmony_ci 2674e41f4b71Sopenharmony_ci### commitModify 2675e41f4b71Sopenharmony_ci 2676e41f4b71Sopenharmony_cicommitModify(): Promise<void> 2677e41f4b71Sopenharmony_ci 2678e41f4b71Sopenharmony_ciCommits the modification on the album attributes to the database. This API uses a promise to return the result. 2679e41f4b71Sopenharmony_ci 2680e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 2681e41f4b71Sopenharmony_ci 2682e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2683e41f4b71Sopenharmony_ci 2684e41f4b71Sopenharmony_ci**Return value** 2685e41f4b71Sopenharmony_ci 2686e41f4b71Sopenharmony_ci| Type | Description | 2687e41f4b71Sopenharmony_ci| ------------------- | ------------ | 2688e41f4b71Sopenharmony_ci| Promise<void> | Promise that returns no value.| 2689e41f4b71Sopenharmony_ci 2690e41f4b71Sopenharmony_ci**Error codes** 2691e41f4b71Sopenharmony_ci 2692e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2693e41f4b71Sopenharmony_ci 2694e41f4b71Sopenharmony_ci| ID| Error Message| 2695e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2696e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 2697e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 2698e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2699e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2700e41f4b71Sopenharmony_ci 2701e41f4b71Sopenharmony_ci**Example** 2702e41f4b71Sopenharmony_ci 2703e41f4b71Sopenharmony_ci```ts 2704e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2705e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 2706e41f4b71Sopenharmony_ci 2707e41f4b71Sopenharmony_ciasync function example() { 2708e41f4b71Sopenharmony_ci console.info('albumCommitModifyDemo'); 2709e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2710e41f4b71Sopenharmony_ci let albumFetchOptions: photoAccessHelper.FetchOptions = { 2711e41f4b71Sopenharmony_ci fetchColumns: [], 2712e41f4b71Sopenharmony_ci predicates: predicates 2713e41f4b71Sopenharmony_ci }; 2714e41f4b71Sopenharmony_ci let albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions); 2715e41f4b71Sopenharmony_ci let album: photoAccessHelper.Album = await albumList.getFirstObject(); 2716e41f4b71Sopenharmony_ci album.albumName = 'hello'; 2717e41f4b71Sopenharmony_ci album.commitModify().then(() => { 2718e41f4b71Sopenharmony_ci console.info('commitModify successfully'); 2719e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 2720e41f4b71Sopenharmony_ci console.error(`commitModify failed with error: ${err.code}, ${err.message}`); 2721e41f4b71Sopenharmony_ci }); 2722e41f4b71Sopenharmony_ci} 2723e41f4b71Sopenharmony_ci``` 2724e41f4b71Sopenharmony_ci 2725e41f4b71Sopenharmony_ci### addAssets<sup>(deprecated)</sup> 2726e41f4b71Sopenharmony_ci 2727e41f4b71Sopenharmony_ciaddAssets(assets: Array<PhotoAsset>, callback: AsyncCallback<void>): void 2728e41f4b71Sopenharmony_ci 2729e41f4b71Sopenharmony_ciAdds image and video assets to an album. Before the operation, ensure that the image and video assets to add and the album exist. This API uses an asynchronous callback to return the result. 2730e41f4b71Sopenharmony_ci 2731e41f4b71Sopenharmony_ci> **NOTE** 2732e41f4b71Sopenharmony_ci> 2733e41f4b71Sopenharmony_ci> This API is supported since API version 10 and deprecated since API version 11. Use [MediaAlbumChangeRequest.addAssets](#addassets11) instead. 2734e41f4b71Sopenharmony_ci 2735e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 2736e41f4b71Sopenharmony_ci 2737e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2738e41f4b71Sopenharmony_ci 2739e41f4b71Sopenharmony_ci**Parameters** 2740e41f4b71Sopenharmony_ci 2741e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 2742e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ---------- | 2743e41f4b71Sopenharmony_ci| assets | Array<[PhotoAsset](#photoasset)> | Yes | Array of the image and video assets to add.| 2744e41f4b71Sopenharmony_ci| callback | AsyncCallback<void> | Yes | Callback that returns no value.| 2745e41f4b71Sopenharmony_ci 2746e41f4b71Sopenharmony_ci**Error codes** 2747e41f4b71Sopenharmony_ci 2748e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2749e41f4b71Sopenharmony_ci 2750e41f4b71Sopenharmony_ci| ID| Error Message| 2751e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2752e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 2753e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 2754e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2755e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2756e41f4b71Sopenharmony_ci 2757e41f4b71Sopenharmony_ci**Example** 2758e41f4b71Sopenharmony_ci 2759e41f4b71Sopenharmony_ci```ts 2760e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2761e41f4b71Sopenharmony_ci 2762e41f4b71Sopenharmony_ciasync function example() { 2763e41f4b71Sopenharmony_ci try { 2764e41f4b71Sopenharmony_ci console.info('addAssetsDemoCallback'); 2765e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2766e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2767e41f4b71Sopenharmony_ci fetchColumns: [], 2768e41f4b71Sopenharmony_ci predicates: predicates 2769e41f4b71Sopenharmony_ci }; 2770e41f4b71Sopenharmony_ci let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 2771e41f4b71Sopenharmony_ci let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 2772e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2773e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 2774e41f4b71Sopenharmony_ci album.addAssets([asset], (err) => { 2775e41f4b71Sopenharmony_ci if (err === undefined) { 2776e41f4b71Sopenharmony_ci console.info('album addAssets successfully'); 2777e41f4b71Sopenharmony_ci } else { 2778e41f4b71Sopenharmony_ci console.error(`album addAssets failed with error: ${err.code}, ${err.message}`); 2779e41f4b71Sopenharmony_ci } 2780e41f4b71Sopenharmony_ci }); 2781e41f4b71Sopenharmony_ci } catch (err) { 2782e41f4b71Sopenharmony_ci console.error(`addAssetsDemoCallback failed with error: ${err.code}, ${err.message}`); 2783e41f4b71Sopenharmony_ci } 2784e41f4b71Sopenharmony_ci} 2785e41f4b71Sopenharmony_ci``` 2786e41f4b71Sopenharmony_ci 2787e41f4b71Sopenharmony_ci### addAssets<sup>(deprecated)</sup> 2788e41f4b71Sopenharmony_ci 2789e41f4b71Sopenharmony_ciaddAssets(assets: Array<PhotoAsset>): Promise<void> 2790e41f4b71Sopenharmony_ci 2791e41f4b71Sopenharmony_ciAdds image and video assets to an album. Before the operation, ensure that the image and video assets to add and the album exist. This API uses a promise to return the result. 2792e41f4b71Sopenharmony_ci 2793e41f4b71Sopenharmony_ci> **NOTE** 2794e41f4b71Sopenharmony_ci> 2795e41f4b71Sopenharmony_ci> This API is supported since API version 10 and deprecated since API version 11. Use [MediaAlbumChangeRequest.addAssets](#addassets11) instead. 2796e41f4b71Sopenharmony_ci 2797e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 2798e41f4b71Sopenharmony_ci 2799e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2800e41f4b71Sopenharmony_ci 2801e41f4b71Sopenharmony_ci**Parameters** 2802e41f4b71Sopenharmony_ci 2803e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 2804e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ---------- | 2805e41f4b71Sopenharmony_ci| assets | Array<[PhotoAsset](#photoasset)> | Yes | Array of the image and video assets to add.| 2806e41f4b71Sopenharmony_ci 2807e41f4b71Sopenharmony_ci**Return value** 2808e41f4b71Sopenharmony_ci 2809e41f4b71Sopenharmony_ci| Type | Description | 2810e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 2811e41f4b71Sopenharmony_ci|Promise<void> | Promise that returns no value.| 2812e41f4b71Sopenharmony_ci 2813e41f4b71Sopenharmony_ci**Error codes** 2814e41f4b71Sopenharmony_ci 2815e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2816e41f4b71Sopenharmony_ci 2817e41f4b71Sopenharmony_ci| ID| Error Message| 2818e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2819e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 2820e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 2821e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2822e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2823e41f4b71Sopenharmony_ci 2824e41f4b71Sopenharmony_ci**Example** 2825e41f4b71Sopenharmony_ci 2826e41f4b71Sopenharmony_ci```ts 2827e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2828e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 2829e41f4b71Sopenharmony_ci 2830e41f4b71Sopenharmony_ciasync function example() { 2831e41f4b71Sopenharmony_ci try { 2832e41f4b71Sopenharmony_ci console.info('addAssetsDemoPromise'); 2833e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2834e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2835e41f4b71Sopenharmony_ci fetchColumns: [], 2836e41f4b71Sopenharmony_ci predicates: predicates 2837e41f4b71Sopenharmony_ci }; 2838e41f4b71Sopenharmony_ci let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 2839e41f4b71Sopenharmony_ci let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 2840e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 2841e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 2842e41f4b71Sopenharmony_ci album.addAssets([asset]).then(() => { 2843e41f4b71Sopenharmony_ci console.info('album addAssets successfully'); 2844e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 2845e41f4b71Sopenharmony_ci console.error(`album addAssets failed with error: ${err.code}, ${err.message}`); 2846e41f4b71Sopenharmony_ci }); 2847e41f4b71Sopenharmony_ci } catch (err) { 2848e41f4b71Sopenharmony_ci console.error(`addAssetsDemoPromise failed with error: ${err.code}, ${err.message}`); 2849e41f4b71Sopenharmony_ci } 2850e41f4b71Sopenharmony_ci} 2851e41f4b71Sopenharmony_ci``` 2852e41f4b71Sopenharmony_ci 2853e41f4b71Sopenharmony_ci### removeAssets<sup>(deprecated)</sup> 2854e41f4b71Sopenharmony_ci 2855e41f4b71Sopenharmony_ciremoveAssets(assets: Array<PhotoAsset>, callback: AsyncCallback<void>): void 2856e41f4b71Sopenharmony_ci 2857e41f4b71Sopenharmony_ciRemoves image and video assets from an album. The album and file resources must exist. This API uses an asynchronous callback to return the result. 2858e41f4b71Sopenharmony_ci 2859e41f4b71Sopenharmony_ci> **NOTE** 2860e41f4b71Sopenharmony_ci> 2861e41f4b71Sopenharmony_ci> This API is supported since API version 10 and deprecated since API version 11. Use [MediaAlbumChangeRequest.removeAssets](#removeassets11) instead. 2862e41f4b71Sopenharmony_ci 2863e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 2864e41f4b71Sopenharmony_ci 2865e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2866e41f4b71Sopenharmony_ci 2867e41f4b71Sopenharmony_ci**Parameters** 2868e41f4b71Sopenharmony_ci 2869e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 2870e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ---------- | 2871e41f4b71Sopenharmony_ci| assets | Array<[PhotoAsset](#photoasset)> | Yes | Array of the image and video assets to remove.| 2872e41f4b71Sopenharmony_ci| callback | AsyncCallback<void> | Yes | Callback that returns no value.| 2873e41f4b71Sopenharmony_ci 2874e41f4b71Sopenharmony_ci**Error codes** 2875e41f4b71Sopenharmony_ci 2876e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2877e41f4b71Sopenharmony_ci 2878e41f4b71Sopenharmony_ci| ID| Error Message| 2879e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2880e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 2881e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 2882e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2883e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2884e41f4b71Sopenharmony_ci 2885e41f4b71Sopenharmony_ci**Example** 2886e41f4b71Sopenharmony_ci 2887e41f4b71Sopenharmony_ci```ts 2888e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2889e41f4b71Sopenharmony_ci 2890e41f4b71Sopenharmony_ciasync function example() { 2891e41f4b71Sopenharmony_ci try { 2892e41f4b71Sopenharmony_ci console.info('removeAssetsDemoCallback'); 2893e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2894e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2895e41f4b71Sopenharmony_ci fetchColumns: [], 2896e41f4b71Sopenharmony_ci predicates: predicates 2897e41f4b71Sopenharmony_ci }; 2898e41f4b71Sopenharmony_ci let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 2899e41f4b71Sopenharmony_ci let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 2900e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOption); 2901e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 2902e41f4b71Sopenharmony_ci album.removeAssets([asset], (err) => { 2903e41f4b71Sopenharmony_ci if (err === undefined) { 2904e41f4b71Sopenharmony_ci console.info('album removeAssets successfully'); 2905e41f4b71Sopenharmony_ci } else { 2906e41f4b71Sopenharmony_ci console.error(`album removeAssets failed with error: ${err.code}, ${err.message}`); 2907e41f4b71Sopenharmony_ci } 2908e41f4b71Sopenharmony_ci }); 2909e41f4b71Sopenharmony_ci } catch (err) { 2910e41f4b71Sopenharmony_ci console.error(`removeAssetsDemoCallback failed with error: ${err.code}, ${err.message}`); 2911e41f4b71Sopenharmony_ci } 2912e41f4b71Sopenharmony_ci} 2913e41f4b71Sopenharmony_ci``` 2914e41f4b71Sopenharmony_ci 2915e41f4b71Sopenharmony_ci### removeAssets<sup>(deprecated)</sup> 2916e41f4b71Sopenharmony_ci 2917e41f4b71Sopenharmony_ciremoveAssets(assets: Array<PhotoAsset>): Promise<void> 2918e41f4b71Sopenharmony_ci 2919e41f4b71Sopenharmony_ciRemoves image and video assets from an album. The album and file resources must exist. This API uses a promise to return the result. 2920e41f4b71Sopenharmony_ci 2921e41f4b71Sopenharmony_ci> **NOTE** 2922e41f4b71Sopenharmony_ci> 2923e41f4b71Sopenharmony_ci> This API is supported since API version 10 and deprecated since API version 11. Use [MediaAlbumChangeRequest.removeAssets](#removeassets11) instead. 2924e41f4b71Sopenharmony_ci 2925e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 2926e41f4b71Sopenharmony_ci 2927e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2928e41f4b71Sopenharmony_ci 2929e41f4b71Sopenharmony_ci**Parameters** 2930e41f4b71Sopenharmony_ci 2931e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 2932e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ---------- | 2933e41f4b71Sopenharmony_ci| assets | Array<[PhotoAsset](#photoasset)> | Yes | Array of the image and video assets to remove.| 2934e41f4b71Sopenharmony_ci 2935e41f4b71Sopenharmony_ci**Return value** 2936e41f4b71Sopenharmony_ci 2937e41f4b71Sopenharmony_ci| Type | Description | 2938e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 2939e41f4b71Sopenharmony_ci|Promise<void> | Promise that returns no value.| 2940e41f4b71Sopenharmony_ci 2941e41f4b71Sopenharmony_ci**Error codes** 2942e41f4b71Sopenharmony_ci 2943e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 2944e41f4b71Sopenharmony_ci 2945e41f4b71Sopenharmony_ci| ID| Error Message| 2946e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 2947e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 2948e41f4b71Sopenharmony_ci| 13900012 | Permission denied. | 2949e41f4b71Sopenharmony_ci| 13900020 | Invalid argument. | 2950e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 2951e41f4b71Sopenharmony_ci 2952e41f4b71Sopenharmony_ci**Example** 2953e41f4b71Sopenharmony_ci 2954e41f4b71Sopenharmony_ci```ts 2955e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 2956e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 2957e41f4b71Sopenharmony_ci 2958e41f4b71Sopenharmony_ciasync function example() { 2959e41f4b71Sopenharmony_ci try { 2960e41f4b71Sopenharmony_ci console.info('removeAssetsDemoPromise'); 2961e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 2962e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 2963e41f4b71Sopenharmony_ci fetchColumns: [], 2964e41f4b71Sopenharmony_ci predicates: predicates 2965e41f4b71Sopenharmony_ci }; 2966e41f4b71Sopenharmony_ci let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 2967e41f4b71Sopenharmony_ci let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 2968e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOption); 2969e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 2970e41f4b71Sopenharmony_ci album.removeAssets([asset]).then(() => { 2971e41f4b71Sopenharmony_ci console.info('album removeAssets successfully'); 2972e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 2973e41f4b71Sopenharmony_ci console.error(`album removeAssets failed with error: ${err.code}, ${err.message}`); 2974e41f4b71Sopenharmony_ci }); 2975e41f4b71Sopenharmony_ci } catch (err) { 2976e41f4b71Sopenharmony_ci console.error(`removeAssetsDemoPromise failed with error: ${err.code}, ${err.message}`); 2977e41f4b71Sopenharmony_ci } 2978e41f4b71Sopenharmony_ci} 2979e41f4b71Sopenharmony_ci``` 2980e41f4b71Sopenharmony_ci 2981e41f4b71Sopenharmony_ci## MediaAssetChangeRequest<sup>11+</sup> 2982e41f4b71Sopenharmony_ci 2983e41f4b71Sopenharmony_ciRepresents a media asset change request. 2984e41f4b71Sopenharmony_ci 2985e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2986e41f4b71Sopenharmony_ci 2987e41f4b71Sopenharmony_ci### constructor<sup>11+</sup> 2988e41f4b71Sopenharmony_ci 2989e41f4b71Sopenharmony_ciconstructor(asset: PhotoAsset) 2990e41f4b71Sopenharmony_ci 2991e41f4b71Sopenharmony_ciConstructor. 2992e41f4b71Sopenharmony_ci 2993e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 2994e41f4b71Sopenharmony_ci 2995e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 2996e41f4b71Sopenharmony_ci 2997e41f4b71Sopenharmony_ci**Parameters** 2998e41f4b71Sopenharmony_ci 2999e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 3000e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ---------- | 3001e41f4b71Sopenharmony_ci| asset | [PhotoAsset](#photoasset) | Yes | Assets to change.| 3002e41f4b71Sopenharmony_ci 3003e41f4b71Sopenharmony_ci**Error codes** 3004e41f4b71Sopenharmony_ci 3005e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3006e41f4b71Sopenharmony_ci 3007e41f4b71Sopenharmony_ci| ID| Error Message| 3008e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3009e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3010e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3011e41f4b71Sopenharmony_ci 3012e41f4b71Sopenharmony_ci**Example** 3013e41f4b71Sopenharmony_ci 3014e41f4b71Sopenharmony_ci```ts 3015e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 3016e41f4b71Sopenharmony_ci 3017e41f4b71Sopenharmony_ciasync function example() { 3018e41f4b71Sopenharmony_ci console.info('MediaAssetChangeRequest constructorDemo'); 3019e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3020e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 3021e41f4b71Sopenharmony_ci fetchColumns: [], 3022e41f4b71Sopenharmony_ci predicates: predicates 3023e41f4b71Sopenharmony_ci }; 3024e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 3025e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 3026e41f4b71Sopenharmony_ci let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(photoAsset); 3027e41f4b71Sopenharmony_ci} 3028e41f4b71Sopenharmony_ci``` 3029e41f4b71Sopenharmony_ci 3030e41f4b71Sopenharmony_ci### createImageAssetRequest<sup>11+</sup> 3031e41f4b71Sopenharmony_ci 3032e41f4b71Sopenharmony_cistatic createImageAssetRequest(context: Context, fileUri: string): MediaAssetChangeRequest 3033e41f4b71Sopenharmony_ci 3034e41f4b71Sopenharmony_ciCreates an image asset change request. 3035e41f4b71Sopenharmony_ci 3036e41f4b71Sopenharmony_ciUse **fileUri** to specify the data source of the asset to be created. For details, see [FileUri](../apis-core-file-kit/js-apis-file-fileuri.md). 3037e41f4b71Sopenharmony_ci 3038e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 3039e41f4b71Sopenharmony_ci 3040e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3041e41f4b71Sopenharmony_ci 3042e41f4b71Sopenharmony_ci**Parameters** 3043e41f4b71Sopenharmony_ci 3044e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 3045e41f4b71Sopenharmony_ci| ------- | ------- | ---- | -------------------------- | 3046e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 3047e41f4b71Sopenharmony_ci| fileUri | string | Yes | Data source of the image asset, which is specified by a URI in the application sandbox directory.| 3048e41f4b71Sopenharmony_ci 3049e41f4b71Sopenharmony_ci**Return value** 3050e41f4b71Sopenharmony_ci 3051e41f4b71Sopenharmony_ci| Type | Description | 3052e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 3053e41f4b71Sopenharmony_ci| [MediaAssetChangeRequest](#mediaassetchangerequest11) | **MediaAssetChangeRequest** created.| 3054e41f4b71Sopenharmony_ci 3055e41f4b71Sopenharmony_ci**Error codes** 3056e41f4b71Sopenharmony_ci 3057e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3058e41f4b71Sopenharmony_ci 3059e41f4b71Sopenharmony_ci| ID| Error Message| 3060e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3061e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3062e41f4b71Sopenharmony_ci| 13900002 | No such file. | 3063e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3064e41f4b71Sopenharmony_ci 3065e41f4b71Sopenharmony_ci**Example** 3066e41f4b71Sopenharmony_ci 3067e41f4b71Sopenharmony_ci```ts 3068e41f4b71Sopenharmony_ciasync function example() { 3069e41f4b71Sopenharmony_ci console.info('createImageAssetRequestDemo'); 3070e41f4b71Sopenharmony_ci try { 3071e41f4b71Sopenharmony_ci // Ensure that the asset specified by fileUri exists. 3072e41f4b71Sopenharmony_ci let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; 3073e41f4b71Sopenharmony_ci let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createImageAssetRequest(context, fileUri); 3074e41f4b71Sopenharmony_ci await phAccessHelper.applyChanges(assetChangeRequest); 3075e41f4b71Sopenharmony_ci console.info('apply createImageAssetRequest successfully'); 3076e41f4b71Sopenharmony_ci } catch (err) { 3077e41f4b71Sopenharmony_ci console.error(`createImageAssetRequestDemo failed with error: ${err.code}, ${err.message}`); 3078e41f4b71Sopenharmony_ci } 3079e41f4b71Sopenharmony_ci} 3080e41f4b71Sopenharmony_ci``` 3081e41f4b71Sopenharmony_ci 3082e41f4b71Sopenharmony_ci### createVideoAssetRequest<sup>11+</sup> 3083e41f4b71Sopenharmony_ci 3084e41f4b71Sopenharmony_cistatic createVideoAssetRequest(context: Context, fileUri: string): MediaAssetChangeRequest 3085e41f4b71Sopenharmony_ci 3086e41f4b71Sopenharmony_ciCreates a video asset change request. 3087e41f4b71Sopenharmony_ci 3088e41f4b71Sopenharmony_ciUse **fileUri** to specify the data source of the asset to be created. For details, see [FileUri](../apis-core-file-kit/js-apis-file-fileuri.md). 3089e41f4b71Sopenharmony_ci 3090e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3091e41f4b71Sopenharmony_ci 3092e41f4b71Sopenharmony_ci**Parameters** 3093e41f4b71Sopenharmony_ci 3094e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 3095e41f4b71Sopenharmony_ci| ------- | ------- | ---- | -------------------------- | 3096e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 3097e41f4b71Sopenharmony_ci| fileUri | string | Yes | Data source of the video asset, which is specified by a URI in the application sandbox directory.| 3098e41f4b71Sopenharmony_ci 3099e41f4b71Sopenharmony_ci**Return value** 3100e41f4b71Sopenharmony_ci 3101e41f4b71Sopenharmony_ci| Type | Description | 3102e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 3103e41f4b71Sopenharmony_ci| [MediaAssetChangeRequest](#mediaassetchangerequest11) | **MediaAssetChangeRequest** created.| 3104e41f4b71Sopenharmony_ci 3105e41f4b71Sopenharmony_ci**Error codes** 3106e41f4b71Sopenharmony_ci 3107e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3108e41f4b71Sopenharmony_ci 3109e41f4b71Sopenharmony_ci| ID| Error Message| 3110e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3111e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3112e41f4b71Sopenharmony_ci| 13900002 | No such file. | 3113e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3114e41f4b71Sopenharmony_ci 3115e41f4b71Sopenharmony_ci**Example** 3116e41f4b71Sopenharmony_ci 3117e41f4b71Sopenharmony_ci```ts 3118e41f4b71Sopenharmony_ciasync function example() { 3119e41f4b71Sopenharmony_ci console.info('createVideoAssetRequestDemo'); 3120e41f4b71Sopenharmony_ci try { 3121e41f4b71Sopenharmony_ci // Ensure that the asset specified by fileUri exists. 3122e41f4b71Sopenharmony_ci let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.mp4'; 3123e41f4b71Sopenharmony_ci let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createVideoAssetRequest(context, fileUri); 3124e41f4b71Sopenharmony_ci await phAccessHelper.applyChanges(assetChangeRequest); 3125e41f4b71Sopenharmony_ci console.info('apply createVideoAssetRequest successfully'); 3126e41f4b71Sopenharmony_ci } catch (err) { 3127e41f4b71Sopenharmony_ci console.error(`createVideoAssetRequestDemo failed with error: ${err.code}, ${err.message}`); 3128e41f4b71Sopenharmony_ci } 3129e41f4b71Sopenharmony_ci} 3130e41f4b71Sopenharmony_ci``` 3131e41f4b71Sopenharmony_ci 3132e41f4b71Sopenharmony_ci### createAssetRequest<sup>11+</sup> 3133e41f4b71Sopenharmony_ci 3134e41f4b71Sopenharmony_cistatic createAssetRequest(context: Context, photoType: PhotoType, extension: string, options?: CreateOptions): MediaAssetChangeRequest 3135e41f4b71Sopenharmony_ci 3136e41f4b71Sopenharmony_ciCreate an asset change request based on the file type and filename extension. 3137e41f4b71Sopenharmony_ci 3138e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 3139e41f4b71Sopenharmony_ci 3140e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3141e41f4b71Sopenharmony_ci 3142e41f4b71Sopenharmony_ci**Parameters** 3143e41f4b71Sopenharmony_ci 3144e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 3145e41f4b71Sopenharmony_ci| ------- | ------- | ---- | -------------------------- | 3146e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 3147e41f4b71Sopenharmony_ci| photoType | [PhotoType](#phototype) | Yes | Type of the file to create, which can be **IMAGE** or **VIDEO**. | 3148e41f4b71Sopenharmony_ci| extension | string | Yes | File name extension, for example, **'jpg'**. | 3149e41f4b71Sopenharmony_ci| options | [CreateOptions](#createoptions) | No | Options for creating the image or video asset, for example, **{title: 'testPhoto'}**. | 3150e41f4b71Sopenharmony_ci 3151e41f4b71Sopenharmony_ci**Return value** 3152e41f4b71Sopenharmony_ci 3153e41f4b71Sopenharmony_ci| Type | Description | 3154e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 3155e41f4b71Sopenharmony_ci| [MediaAssetChangeRequest](#mediaassetchangerequest11) | **MediaAssetChangeRequest** created.| 3156e41f4b71Sopenharmony_ci 3157e41f4b71Sopenharmony_ci**Error codes** 3158e41f4b71Sopenharmony_ci 3159e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3160e41f4b71Sopenharmony_ci 3161e41f4b71Sopenharmony_ci| ID| Error Message| 3162e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3163e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3164e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3165e41f4b71Sopenharmony_ci 3166e41f4b71Sopenharmony_ci**Example** 3167e41f4b71Sopenharmony_ci 3168e41f4b71Sopenharmony_ci```ts 3169e41f4b71Sopenharmony_ciasync function example() { 3170e41f4b71Sopenharmony_ci console.info('createAssetRequestDemo'); 3171e41f4b71Sopenharmony_ci try { 3172e41f4b71Sopenharmony_ci let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; 3173e41f4b71Sopenharmony_ci let extension: string = 'jpg'; 3174e41f4b71Sopenharmony_ci let options: photoAccessHelper.CreateOptions = { 3175e41f4b71Sopenharmony_ci title: 'testPhoto' 3176e41f4b71Sopenharmony_ci } 3177e41f4b71Sopenharmony_ci let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension, options); 3178e41f4b71Sopenharmony_ci // Ensure that the asset specified by fileUri exists. 3179e41f4b71Sopenharmony_ci let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; 3180e41f4b71Sopenharmony_ci assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, fileUri); 3181e41f4b71Sopenharmony_ci await phAccessHelper.applyChanges(assetChangeRequest); 3182e41f4b71Sopenharmony_ci console.info('apply createAssetRequest successfully'); 3183e41f4b71Sopenharmony_ci } catch (err) { 3184e41f4b71Sopenharmony_ci console.error(`createAssetRequestDemo failed with error: ${err.code}, ${err.message}`); 3185e41f4b71Sopenharmony_ci } 3186e41f4b71Sopenharmony_ci} 3187e41f4b71Sopenharmony_ci``` 3188e41f4b71Sopenharmony_ci 3189e41f4b71Sopenharmony_ci### deleteAssets<sup>11+</sup> 3190e41f4b71Sopenharmony_ci 3191e41f4b71Sopenharmony_cistatic deleteAssets(context: Context, assets: Array<PhotoAsset>): Promise<void> 3192e41f4b71Sopenharmony_ci 3193e41f4b71Sopenharmony_ciDeletes media assets. This API uses a promise to return the result. The deleted assets are moved to the trash. 3194e41f4b71Sopenharmony_ci 3195e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 3196e41f4b71Sopenharmony_ci 3197e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3198e41f4b71Sopenharmony_ci 3199e41f4b71Sopenharmony_ci**Parameters** 3200e41f4b71Sopenharmony_ci 3201e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 3202e41f4b71Sopenharmony_ci| ------- | ------- | ---- | -------------------------- | 3203e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 3204e41f4b71Sopenharmony_ci| assets | Array<[PhotoAsset](#photoasset)> | Yes | Media assets to delete.| 3205e41f4b71Sopenharmony_ci 3206e41f4b71Sopenharmony_ci**Return value** 3207e41f4b71Sopenharmony_ci 3208e41f4b71Sopenharmony_ci| Type | Description | 3209e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 3210e41f4b71Sopenharmony_ci| Promise<void>| Promise that returns no value.| 3211e41f4b71Sopenharmony_ci 3212e41f4b71Sopenharmony_ci**Error codes** 3213e41f4b71Sopenharmony_ci 3214e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3215e41f4b71Sopenharmony_ci 3216e41f4b71Sopenharmony_ci| ID| Error Message| 3217e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3218e41f4b71Sopenharmony_ci| 201 | Permission denied. | 3219e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3220e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3221e41f4b71Sopenharmony_ci 3222e41f4b71Sopenharmony_ci**Example** 3223e41f4b71Sopenharmony_ci 3224e41f4b71Sopenharmony_ci```ts 3225e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 3226e41f4b71Sopenharmony_ci 3227e41f4b71Sopenharmony_ciasync function example() { 3228e41f4b71Sopenharmony_ci console.info('deleteAssetsDemo'); 3229e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3230e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 3231e41f4b71Sopenharmony_ci fetchColumns: [], 3232e41f4b71Sopenharmony_ci predicates: predicates 3233e41f4b71Sopenharmony_ci }; 3234e41f4b71Sopenharmony_ci try { 3235e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 3236e41f4b71Sopenharmony_ci let photoAssetList: Array<photoAccessHelper.PhotoAsset> = await fetchResult.getAllObjects(); 3237e41f4b71Sopenharmony_ci await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, photoAssetList); 3238e41f4b71Sopenharmony_ci console.info('deleteAssets successfully'); 3239e41f4b71Sopenharmony_ci } catch (err) { 3240e41f4b71Sopenharmony_ci console.error(`deleteAssetsDemo failed with error: ${err.code}, ${err.message}`); 3241e41f4b71Sopenharmony_ci } 3242e41f4b71Sopenharmony_ci} 3243e41f4b71Sopenharmony_ci``` 3244e41f4b71Sopenharmony_ci 3245e41f4b71Sopenharmony_ci### deleteAssets<sup>11+</sup> 3246e41f4b71Sopenharmony_ci 3247e41f4b71Sopenharmony_cistatic deleteAssets(context: Context, uriList: Array<string>): Promise<void> 3248e41f4b71Sopenharmony_ci 3249e41f4b71Sopenharmony_ciDeletes media assets. This API uses a promise to return the result. The deleted assets are moved to the trash. 3250e41f4b71Sopenharmony_ci 3251e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 3252e41f4b71Sopenharmony_ci 3253e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3254e41f4b71Sopenharmony_ci 3255e41f4b71Sopenharmony_ci**Parameters** 3256e41f4b71Sopenharmony_ci 3257e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 3258e41f4b71Sopenharmony_ci| ------- | ------- | ---- | -------------------------- | 3259e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 3260e41f4b71Sopenharmony_ci| uriList | Array<string> | Yes | URIs of the media files to delete.| 3261e41f4b71Sopenharmony_ci 3262e41f4b71Sopenharmony_ci**Return value** 3263e41f4b71Sopenharmony_ci 3264e41f4b71Sopenharmony_ci| Type | Description | 3265e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 3266e41f4b71Sopenharmony_ci| Promise<void>| Promise that returns no value.| 3267e41f4b71Sopenharmony_ci 3268e41f4b71Sopenharmony_ci**Error codes** 3269e41f4b71Sopenharmony_ci 3270e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3271e41f4b71Sopenharmony_ci 3272e41f4b71Sopenharmony_ci| ID| Error Message| 3273e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3274e41f4b71Sopenharmony_ci| 201 | Permission denied. | 3275e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3276e41f4b71Sopenharmony_ci| 14000002 | Invalid asset uri. | 3277e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3278e41f4b71Sopenharmony_ci 3279e41f4b71Sopenharmony_ci**Example** 3280e41f4b71Sopenharmony_ci 3281e41f4b71Sopenharmony_ci```ts 3282e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 3283e41f4b71Sopenharmony_ci 3284e41f4b71Sopenharmony_ciasync function example() { 3285e41f4b71Sopenharmony_ci console.info('deleteAssetsDemo'); 3286e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3287e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 3288e41f4b71Sopenharmony_ci fetchColumns: [], 3289e41f4b71Sopenharmony_ci predicates: predicates 3290e41f4b71Sopenharmony_ci }; 3291e41f4b71Sopenharmony_ci try { 3292e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 3293e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 3294e41f4b71Sopenharmony_ci await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [asset.uri]); 3295e41f4b71Sopenharmony_ci console.info('deleteAssets successfully'); 3296e41f4b71Sopenharmony_ci } catch (err) { 3297e41f4b71Sopenharmony_ci console.error(`deleteAssetsDemo failed with error: ${err.code}, ${err.message}`); 3298e41f4b71Sopenharmony_ci } 3299e41f4b71Sopenharmony_ci} 3300e41f4b71Sopenharmony_ci``` 3301e41f4b71Sopenharmony_ci 3302e41f4b71Sopenharmony_ci### getAsset<sup>11+</sup> 3303e41f4b71Sopenharmony_ci 3304e41f4b71Sopenharmony_cigetAsset(): PhotoAsset 3305e41f4b71Sopenharmony_ci 3306e41f4b71Sopenharmony_ciObtains the asset in this asset change request. 3307e41f4b71Sopenharmony_ci 3308e41f4b71Sopenharmony_ci> **NOTE**<br>For the change request used to create an asset, this API returns **null** before [applyChanges](#applychanges11) is called to apply the changes. 3309e41f4b71Sopenharmony_ci 3310e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 3311e41f4b71Sopenharmony_ci 3312e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3313e41f4b71Sopenharmony_ci 3314e41f4b71Sopenharmony_ci**Return value** 3315e41f4b71Sopenharmony_ci 3316e41f4b71Sopenharmony_ci| Type | Description | 3317e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 3318e41f4b71Sopenharmony_ci| [PhotoAsset](#photoasset) | Asset obtained.| 3319e41f4b71Sopenharmony_ci 3320e41f4b71Sopenharmony_ci**Error codes** 3321e41f4b71Sopenharmony_ci 3322e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3323e41f4b71Sopenharmony_ci 3324e41f4b71Sopenharmony_ci| ID| Error Message| 3325e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3326e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 3327e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3328e41f4b71Sopenharmony_ci 3329e41f4b71Sopenharmony_ci**Example** 3330e41f4b71Sopenharmony_ci 3331e41f4b71Sopenharmony_ci```ts 3332e41f4b71Sopenharmony_ciasync function example() { 3333e41f4b71Sopenharmony_ci console.info('getAssetDemo'); 3334e41f4b71Sopenharmony_ci try { 3335e41f4b71Sopenharmony_ci // Ensure that the asset specified by fileUri exists. 3336e41f4b71Sopenharmony_ci let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; 3337e41f4b71Sopenharmony_ci let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createImageAssetRequest(context, fileUri); 3338e41f4b71Sopenharmony_ci await phAccessHelper.applyChanges(assetChangeRequest); 3339e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = assetChangeRequest.getAsset(); 3340e41f4b71Sopenharmony_ci console.info('create asset successfully with uri = ' + asset.uri); 3341e41f4b71Sopenharmony_ci } catch (err) { 3342e41f4b71Sopenharmony_ci console.error(`getAssetDemo failed with error: ${err.code}, ${err.message}`); 3343e41f4b71Sopenharmony_ci } 3344e41f4b71Sopenharmony_ci} 3345e41f4b71Sopenharmony_ci``` 3346e41f4b71Sopenharmony_ci 3347e41f4b71Sopenharmony_ci### setTitle<sup>11+</sup> 3348e41f4b71Sopenharmony_ci 3349e41f4b71Sopenharmony_cisetTitle(title: string): void 3350e41f4b71Sopenharmony_ci 3351e41f4b71Sopenharmony_ciSets the media asset title. 3352e41f4b71Sopenharmony_ci 3353e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 3354e41f4b71Sopenharmony_ci 3355e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3356e41f4b71Sopenharmony_ci 3357e41f4b71Sopenharmony_ci**Parameters** 3358e41f4b71Sopenharmony_ci 3359e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 3360e41f4b71Sopenharmony_ci| ---------- | ------- | ---- | ---------------------------------- | 3361e41f4b71Sopenharmony_ci| title | string | Yes | Title to set.| 3362e41f4b71Sopenharmony_ci 3363e41f4b71Sopenharmony_ciNote that the title cannot: 3364e41f4b71Sopenharmony_ci- Contain the filename extension. 3365e41f4b71Sopenharmony_ci- Exceed 255 characters. 3366e41f4b71Sopenharmony_ci- Contain any of the following characters:<br>. .. \ / : * ? " ' ` < > | { } [ ] 3367e41f4b71Sopenharmony_ci 3368e41f4b71Sopenharmony_ci**Error codes** 3369e41f4b71Sopenharmony_ci 3370e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3371e41f4b71Sopenharmony_ci 3372e41f4b71Sopenharmony_ci| ID| Error Message| 3373e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3374e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3375e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3376e41f4b71Sopenharmony_ci 3377e41f4b71Sopenharmony_ci**Example** 3378e41f4b71Sopenharmony_ci 3379e41f4b71Sopenharmony_ci```ts 3380e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 3381e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 3382e41f4b71Sopenharmony_ci 3383e41f4b71Sopenharmony_ciasync function example() { 3384e41f4b71Sopenharmony_ci console.info('setTitleDemo'); 3385e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3386e41f4b71Sopenharmony_ci let fetchOption: photoAccessHelper.FetchOptions = { 3387e41f4b71Sopenharmony_ci fetchColumns: [], 3388e41f4b71Sopenharmony_ci predicates: predicates 3389e41f4b71Sopenharmony_ci }; 3390e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 3391e41f4b71Sopenharmony_ci let asset = await fetchResult.getFirstObject(); 3392e41f4b71Sopenharmony_ci let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); 3393e41f4b71Sopenharmony_ci let newTitle: string = 'newTitle'; 3394e41f4b71Sopenharmony_ci assetChangeRequest.setTitle(newTitle); 3395e41f4b71Sopenharmony_ci phAccessHelper.applyChanges(assetChangeRequest).then(() => { 3396e41f4b71Sopenharmony_ci console.info('apply setTitle successfully'); 3397e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 3398e41f4b71Sopenharmony_ci console.error(`apply setTitle failed with error: ${err.code}, ${err.message}`); 3399e41f4b71Sopenharmony_ci }); 3400e41f4b71Sopenharmony_ci} 3401e41f4b71Sopenharmony_ci``` 3402e41f4b71Sopenharmony_ci 3403e41f4b71Sopenharmony_ci### getWriteCacheHandler<sup>11+</sup> 3404e41f4b71Sopenharmony_ci 3405e41f4b71Sopenharmony_cigetWriteCacheHandler(): Promise<number> 3406e41f4b71Sopenharmony_ci 3407e41f4b71Sopenharmony_ciObtains the write handle of a temporary file. 3408e41f4b71Sopenharmony_ci 3409e41f4b71Sopenharmony_ci> **NOTE**<br>For the same asset change request, this API cannot be repeatedly called after a temporary file write handle is successfully obtained. 3410e41f4b71Sopenharmony_ci 3411e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 3412e41f4b71Sopenharmony_ci 3413e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3414e41f4b71Sopenharmony_ci 3415e41f4b71Sopenharmony_ci**Return value** 3416e41f4b71Sopenharmony_ci 3417e41f4b71Sopenharmony_ci| Type | Description | 3418e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 3419e41f4b71Sopenharmony_ci| Promise<number> | Promise used to return the write handle obtained.| 3420e41f4b71Sopenharmony_ci 3421e41f4b71Sopenharmony_ci**Error codes** 3422e41f4b71Sopenharmony_ci 3423e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3424e41f4b71Sopenharmony_ci 3425e41f4b71Sopenharmony_ci| ID| Error Message| 3426e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3427e41f4b71Sopenharmony_ci| 201 | Permission denied. | 3428e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 3429e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3430e41f4b71Sopenharmony_ci| 14000016 | Operation Not Support. | 3431e41f4b71Sopenharmony_ci 3432e41f4b71Sopenharmony_ci**Example** 3433e41f4b71Sopenharmony_ci 3434e41f4b71Sopenharmony_ci```ts 3435e41f4b71Sopenharmony_ciimport { fileIo } from '@kit.CoreFileKit'; 3436e41f4b71Sopenharmony_ci 3437e41f4b71Sopenharmony_ciasync function example() { 3438e41f4b71Sopenharmony_ci console.info('getWriteCacheHandlerDemo'); 3439e41f4b71Sopenharmony_ci try { 3440e41f4b71Sopenharmony_ci let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.VIDEO; 3441e41f4b71Sopenharmony_ci let extension: string = 'mp4'; 3442e41f4b71Sopenharmony_ci let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension); 3443e41f4b71Sopenharmony_ci let fd: number = await assetChangeRequest.getWriteCacheHandler(); 3444e41f4b71Sopenharmony_ci console.info('getWriteCacheHandler successfully'); 3445e41f4b71Sopenharmony_ci // write date into fd 3446e41f4b71Sopenharmony_ci await fileIo.close(fd); 3447e41f4b71Sopenharmony_ci await phAccessHelper.applyChanges(assetChangeRequest); 3448e41f4b71Sopenharmony_ci } catch (err) { 3449e41f4b71Sopenharmony_ci console.error(`getWriteCacheHandlerDemo failed with error: ${err.code}, ${err.message}`); 3450e41f4b71Sopenharmony_ci } 3451e41f4b71Sopenharmony_ci} 3452e41f4b71Sopenharmony_ci``` 3453e41f4b71Sopenharmony_ci 3454e41f4b71Sopenharmony_ci### addResource<sup>11+</sup> 3455e41f4b71Sopenharmony_ci 3456e41f4b71Sopenharmony_ciaddResource(type: ResourceType, fileUri: string): void 3457e41f4b71Sopenharmony_ci 3458e41f4b71Sopenharmony_ciAdds a resource using **fileUri**. 3459e41f4b71Sopenharmony_ci 3460e41f4b71Sopenharmony_ci> **NOTE**<br>For the same asset change request, this API cannot be repeatedly called after the resource is successfully added. For a moving photo, you can call this API twice to add the image and video resources. 3461e41f4b71Sopenharmony_ci 3462e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 3463e41f4b71Sopenharmony_ci 3464e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3465e41f4b71Sopenharmony_ci 3466e41f4b71Sopenharmony_ci**Parameters** 3467e41f4b71Sopenharmony_ci 3468e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 3469e41f4b71Sopenharmony_ci| ------- | ------- | ---- | -------------------------- | 3470e41f4b71Sopenharmony_ci| type | [ResourceType](#resourcetype11) | Yes | Type of the resource to add.| 3471e41f4b71Sopenharmony_ci| fileUri | string | Yes | Data source of the resource to be added, which is specified by a URI in the application sandbox directory.| 3472e41f4b71Sopenharmony_ci 3473e41f4b71Sopenharmony_ci**Error codes** 3474e41f4b71Sopenharmony_ci 3475e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3476e41f4b71Sopenharmony_ci 3477e41f4b71Sopenharmony_ci| ID| Error Message| 3478e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3479e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3480e41f4b71Sopenharmony_ci| 13900002 | No such file. | 3481e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3482e41f4b71Sopenharmony_ci| 14000016 | Operation Not Support. | 3483e41f4b71Sopenharmony_ci 3484e41f4b71Sopenharmony_ci**Example** 3485e41f4b71Sopenharmony_ci 3486e41f4b71Sopenharmony_ci```ts 3487e41f4b71Sopenharmony_ciasync function example() { 3488e41f4b71Sopenharmony_ci console.info('addResourceByFileUriDemo'); 3489e41f4b71Sopenharmony_ci try { 3490e41f4b71Sopenharmony_ci let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; 3491e41f4b71Sopenharmony_ci let extension: string = 'jpg'; 3492e41f4b71Sopenharmony_ci let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension); 3493e41f4b71Sopenharmony_ci // Ensure that the asset specified by fileUri exists. 3494e41f4b71Sopenharmony_ci let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; 3495e41f4b71Sopenharmony_ci assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, fileUri); 3496e41f4b71Sopenharmony_ci await phAccessHelper.applyChanges(assetChangeRequest); 3497e41f4b71Sopenharmony_ci console.info('addResourceByFileUri successfully'); 3498e41f4b71Sopenharmony_ci } catch (err) { 3499e41f4b71Sopenharmony_ci console.error(`addResourceByFileUriDemo failed with error: ${err.code}, ${err.message}`); 3500e41f4b71Sopenharmony_ci } 3501e41f4b71Sopenharmony_ci} 3502e41f4b71Sopenharmony_ci``` 3503e41f4b71Sopenharmony_ci 3504e41f4b71Sopenharmony_ci### addResource<sup>11+</sup> 3505e41f4b71Sopenharmony_ci 3506e41f4b71Sopenharmony_ciaddResource(type: ResourceType, data: ArrayBuffer): void 3507e41f4b71Sopenharmony_ci 3508e41f4b71Sopenharmony_ciAdds a resource using **ArrayBuffer** data. 3509e41f4b71Sopenharmony_ci 3510e41f4b71Sopenharmony_ci> **NOTE**<br>For the same asset change request, this API cannot be repeatedly called after the resource is successfully added. For a moving photo, you can call this API twice to add the image and video resources. 3511e41f4b71Sopenharmony_ci 3512e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 3513e41f4b71Sopenharmony_ci 3514e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3515e41f4b71Sopenharmony_ci 3516e41f4b71Sopenharmony_ci**Parameters** 3517e41f4b71Sopenharmony_ci 3518e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 3519e41f4b71Sopenharmony_ci| ------- | ------- | ---- | -------------------------- | 3520e41f4b71Sopenharmony_ci| type | [ResourceType](#resourcetype11) | Yes | Type of the resource to add.| 3521e41f4b71Sopenharmony_ci| data | ArrayBuffer | Yes | Data of the resource to add.| 3522e41f4b71Sopenharmony_ci 3523e41f4b71Sopenharmony_ci**Error codes** 3524e41f4b71Sopenharmony_ci 3525e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3526e41f4b71Sopenharmony_ci 3527e41f4b71Sopenharmony_ci| ID| Error Message| 3528e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3529e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3530e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3531e41f4b71Sopenharmony_ci| 14000016 | Operation Not Support. | 3532e41f4b71Sopenharmony_ci 3533e41f4b71Sopenharmony_ci**Example** 3534e41f4b71Sopenharmony_ci 3535e41f4b71Sopenharmony_ci```ts 3536e41f4b71Sopenharmony_ciasync function example() { 3537e41f4b71Sopenharmony_ci console.info('addResourceByArrayBufferDemo'); 3538e41f4b71Sopenharmony_ci try { 3539e41f4b71Sopenharmony_ci let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; 3540e41f4b71Sopenharmony_ci let extension: string = 'jpg'; 3541e41f4b71Sopenharmony_ci let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension); 3542e41f4b71Sopenharmony_ci let buffer: ArrayBuffer = new ArrayBuffer(2048); 3543e41f4b71Sopenharmony_ci assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, buffer); 3544e41f4b71Sopenharmony_ci await phAccessHelper.applyChanges(assetChangeRequest); 3545e41f4b71Sopenharmony_ci console.info('addResourceByArrayBuffer successfully'); 3546e41f4b71Sopenharmony_ci } catch (err) { 3547e41f4b71Sopenharmony_ci console.error(`addResourceByArrayBufferDemo failed with error: ${err.code}, ${err.message}`); 3548e41f4b71Sopenharmony_ci } 3549e41f4b71Sopenharmony_ci} 3550e41f4b71Sopenharmony_ci``` 3551e41f4b71Sopenharmony_ci 3552e41f4b71Sopenharmony_ci### saveCameraPhoto<sup>12+</sup> 3553e41f4b71Sopenharmony_ci 3554e41f4b71Sopenharmony_cisaveCameraPhoto(): void 3555e41f4b71Sopenharmony_ci 3556e41f4b71Sopenharmony_ciSaves the photo taken by the camera. 3557e41f4b71Sopenharmony_ci 3558e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3559e41f4b71Sopenharmony_ci 3560e41f4b71Sopenharmony_ci**Error codes** 3561e41f4b71Sopenharmony_ci 3562e41f4b71Sopenharmony_ciFor details about the error codes, see [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3563e41f4b71Sopenharmony_ci 3564e41f4b71Sopenharmony_ci| ID| Error Message| 3565e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3566e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3567e41f4b71Sopenharmony_ci| 14000016 | Operation Not Support. | 3568e41f4b71Sopenharmony_ci 3569e41f4b71Sopenharmony_ci**Example** 3570e41f4b71Sopenharmony_ci 3571e41f4b71Sopenharmony_ci```ts 3572e41f4b71Sopenharmony_ciasync function example(asset: photoAccessHelper.PhotoAsset) { 3573e41f4b71Sopenharmony_ci console.info('saveCameraPhotoDemo'); 3574e41f4b71Sopenharmony_ci try { 3575e41f4b71Sopenharmony_ci let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); 3576e41f4b71Sopenharmony_ci assetChangeRequest.saveCameraPhoto(); 3577e41f4b71Sopenharmony_ci await phAccessHelper.applyChanges(assetChangeRequest); 3578e41f4b71Sopenharmony_ci console.info('apply saveCameraPhoto successfully'); 3579e41f4b71Sopenharmony_ci } catch (err) { 3580e41f4b71Sopenharmony_ci console.error(`apply saveCameraPhoto failed with error: ${err.code}, ${err.message}`); 3581e41f4b71Sopenharmony_ci } 3582e41f4b71Sopenharmony_ci} 3583e41f4b71Sopenharmony_ci``` 3584e41f4b71Sopenharmony_ci 3585e41f4b71Sopenharmony_ci### discardCameraPhoto<sup>12+</sup> 3586e41f4b71Sopenharmony_ci 3587e41f4b71Sopenharmony_cidiscardCameraPhoto(): void 3588e41f4b71Sopenharmony_ci 3589e41f4b71Sopenharmony_ciDiscards the photo taken by the camera. 3590e41f4b71Sopenharmony_ci 3591e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3592e41f4b71Sopenharmony_ci 3593e41f4b71Sopenharmony_ci**Error codes** 3594e41f4b71Sopenharmony_ci 3595e41f4b71Sopenharmony_ciFor details about the error codes, see [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3596e41f4b71Sopenharmony_ci 3597e41f4b71Sopenharmony_ci| ID| Error Message| 3598e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3599e41f4b71Sopenharmony_ci| 14000011 | Internal system error. | 3600e41f4b71Sopenharmony_ci| 14000016 | Operation Not Support. | 3601e41f4b71Sopenharmony_ci 3602e41f4b71Sopenharmony_ci**Example** 3603e41f4b71Sopenharmony_ci 3604e41f4b71Sopenharmony_ci```ts 3605e41f4b71Sopenharmony_ciasync function example(asset: photoAccessHelper.PhotoAsset) { 3606e41f4b71Sopenharmony_ci console.info('discardCameraPhotoDemo'); 3607e41f4b71Sopenharmony_ci try { 3608e41f4b71Sopenharmony_ci let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); 3609e41f4b71Sopenharmony_ci assetChangeRequest.discardCameraPhoto(); 3610e41f4b71Sopenharmony_ci await phAccessHelper.applyChanges(assetChangeRequest); 3611e41f4b71Sopenharmony_ci console.info('apply discardCameraPhoto successfully'); 3612e41f4b71Sopenharmony_ci } catch (err) { 3613e41f4b71Sopenharmony_ci console.error(`apply discardCameraPhoto failed with error: ${err.code}, ${err.message}`); 3614e41f4b71Sopenharmony_ci } 3615e41f4b71Sopenharmony_ci} 3616e41f4b71Sopenharmony_ci``` 3617e41f4b71Sopenharmony_ci 3618e41f4b71Sopenharmony_ci## MediaAlbumChangeRequest<sup>11+</sup> 3619e41f4b71Sopenharmony_ci 3620e41f4b71Sopenharmony_ciProvides APIs for managing the media album change request. 3621e41f4b71Sopenharmony_ci 3622e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3623e41f4b71Sopenharmony_ci 3624e41f4b71Sopenharmony_ci### constructor<sup>11+</sup> 3625e41f4b71Sopenharmony_ci 3626e41f4b71Sopenharmony_ciconstructor(album: Album) 3627e41f4b71Sopenharmony_ci 3628e41f4b71Sopenharmony_ciConstructor. 3629e41f4b71Sopenharmony_ci 3630e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3631e41f4b71Sopenharmony_ci 3632e41f4b71Sopenharmony_ci**Parameters** 3633e41f4b71Sopenharmony_ci 3634e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 3635e41f4b71Sopenharmony_ci| -------- | ------------------------- | ---- | ---------- | 3636e41f4b71Sopenharmony_ci| album | [Album](#album) | Yes | Album to change.| 3637e41f4b71Sopenharmony_ci 3638e41f4b71Sopenharmony_ci**Error codes** 3639e41f4b71Sopenharmony_ci 3640e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3641e41f4b71Sopenharmony_ci 3642e41f4b71Sopenharmony_ci| ID| Error Message| 3643e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3644e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3645e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3646e41f4b71Sopenharmony_ci 3647e41f4b71Sopenharmony_ci**Example** 3648e41f4b71Sopenharmony_ci 3649e41f4b71Sopenharmony_ci```ts 3650e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 3651e41f4b71Sopenharmony_ci 3652e41f4b71Sopenharmony_ciasync function example() { 3653e41f4b71Sopenharmony_ci console.info('MediaAlbumChangeRequest constructorDemo'); 3654e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3655e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 3656e41f4b71Sopenharmony_ci fetchColumns: [], 3657e41f4b71Sopenharmony_ci predicates: predicates 3658e41f4b71Sopenharmony_ci }; 3659e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions); 3660e41f4b71Sopenharmony_ci let album: photoAccessHelper.Album = await fetchResult.getFirstObject(); 3661e41f4b71Sopenharmony_ci let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album); 3662e41f4b71Sopenharmony_ci} 3663e41f4b71Sopenharmony_ci``` 3664e41f4b71Sopenharmony_ci 3665e41f4b71Sopenharmony_ci### getAlbum<sup>11+</sup> 3666e41f4b71Sopenharmony_ci 3667e41f4b71Sopenharmony_cigetAlbum(): Album 3668e41f4b71Sopenharmony_ci 3669e41f4b71Sopenharmony_ciObtains the album in the current album change request. 3670e41f4b71Sopenharmony_ci 3671e41f4b71Sopenharmony_ci> **NOTE**<br>For the change request for creating an album, this API returns **null** before [applyChanges](#applychanges11) is called to apply the changes. 3672e41f4b71Sopenharmony_ci 3673e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3674e41f4b71Sopenharmony_ci 3675e41f4b71Sopenharmony_ci**Return value** 3676e41f4b71Sopenharmony_ci 3677e41f4b71Sopenharmony_ci| Type | Description | 3678e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 3679e41f4b71Sopenharmony_ci| [Album](#album) | Album obtained.| 3680e41f4b71Sopenharmony_ci 3681e41f4b71Sopenharmony_ci**Error codes** 3682e41f4b71Sopenharmony_ci 3683e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3684e41f4b71Sopenharmony_ci 3685e41f4b71Sopenharmony_ci| ID| Error Message| 3686e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3687e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 3688e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3689e41f4b71Sopenharmony_ci 3690e41f4b71Sopenharmony_ci**Example** 3691e41f4b71Sopenharmony_ci 3692e41f4b71Sopenharmony_ci```ts 3693e41f4b71Sopenharmony_ciasync function example() { 3694e41f4b71Sopenharmony_ci console.info('getAlbumDemo'); 3695e41f4b71Sopenharmony_ci try { 3696e41f4b71Sopenharmony_ci // Ensure that the user album exists in the gallery. 3697e41f4b71Sopenharmony_ci let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 3698e41f4b71Sopenharmony_ci let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 3699e41f4b71Sopenharmony_ci let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album); 3700e41f4b71Sopenharmony_ci let changeRequestAlbum: photoAccessHelper.Album = albumChangeRequest.getAlbum(); 3701e41f4b71Sopenharmony_ci console.info('change request album uri: ' + changeRequestAlbum.albumUri); 3702e41f4b71Sopenharmony_ci } catch (err) { 3703e41f4b71Sopenharmony_ci console.error(`getAlbumDemo failed with error: ${err.code}, ${err.message}`); 3704e41f4b71Sopenharmony_ci } 3705e41f4b71Sopenharmony_ci} 3706e41f4b71Sopenharmony_ci``` 3707e41f4b71Sopenharmony_ci 3708e41f4b71Sopenharmony_ci### setAlbumName<sup>11+</sup> 3709e41f4b71Sopenharmony_ci 3710e41f4b71Sopenharmony_cisetAlbumName(name: string): void 3711e41f4b71Sopenharmony_ci 3712e41f4b71Sopenharmony_ciSets the album name. 3713e41f4b71Sopenharmony_ci 3714e41f4b71Sopenharmony_ciThe album name must comply with the following specifications: 3715e41f4b71Sopenharmony_ci- The album name cannot exceed 255 characters. 3716e41f4b71Sopenharmony_ci- The album name cannot contain any of the following characters:<br> . .. \ / : * ? " ' ` < > | { } [ ] 3717e41f4b71Sopenharmony_ci- The album name is case-insensitive. 3718e41f4b71Sopenharmony_ci- Duplicate album names are not allowed. 3719e41f4b71Sopenharmony_ci 3720e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3721e41f4b71Sopenharmony_ci 3722e41f4b71Sopenharmony_ci**Parameters** 3723e41f4b71Sopenharmony_ci 3724e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 3725e41f4b71Sopenharmony_ci| ---------- | ------- | ---- | ---------------------------------- | 3726e41f4b71Sopenharmony_ci| name | string | Yes | Album name to set.| 3727e41f4b71Sopenharmony_ci 3728e41f4b71Sopenharmony_ci**Error codes** 3729e41f4b71Sopenharmony_ci 3730e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3731e41f4b71Sopenharmony_ci 3732e41f4b71Sopenharmony_ci| ID| Error Message| 3733e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3734e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3735e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3736e41f4b71Sopenharmony_ci 3737e41f4b71Sopenharmony_ci**Example** 3738e41f4b71Sopenharmony_ci 3739e41f4b71Sopenharmony_ci```ts 3740e41f4b71Sopenharmony_ciasync function example() { 3741e41f4b71Sopenharmony_ci console.info('setAlbumNameDemo'); 3742e41f4b71Sopenharmony_ci try { 3743e41f4b71Sopenharmony_ci let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 3744e41f4b71Sopenharmony_ci let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 3745e41f4b71Sopenharmony_ci let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album); 3746e41f4b71Sopenharmony_ci let newAlbumName: string = 'newAlbumName' + new Date().getTime(); 3747e41f4b71Sopenharmony_ci albumChangeRequest.setAlbumName(newAlbumName); 3748e41f4b71Sopenharmony_ci await phAccessHelper.applyChanges(albumChangeRequest); 3749e41f4b71Sopenharmony_ci console.info('setAlbumName successfully'); 3750e41f4b71Sopenharmony_ci } catch (err) { 3751e41f4b71Sopenharmony_ci console.error(`setAlbumNameDemo failed with error: ${err.code}, ${err.message}`); 3752e41f4b71Sopenharmony_ci } 3753e41f4b71Sopenharmony_ci} 3754e41f4b71Sopenharmony_ci``` 3755e41f4b71Sopenharmony_ci 3756e41f4b71Sopenharmony_ci### addAssets<sup>11+</sup> 3757e41f4b71Sopenharmony_ci 3758e41f4b71Sopenharmony_ciaddAssets(assets: Array<PhotoAsset>): void 3759e41f4b71Sopenharmony_ci 3760e41f4b71Sopenharmony_ciAdd assets to the album. 3761e41f4b71Sopenharmony_ci 3762e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3763e41f4b71Sopenharmony_ci 3764e41f4b71Sopenharmony_ci**Parameters** 3765e41f4b71Sopenharmony_ci 3766e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 3767e41f4b71Sopenharmony_ci| ---------- | ------- | ---- | ---------------------------------- | 3768e41f4b71Sopenharmony_ci| assets | Array<[PhotoAsset](#photoasset)> | Yes | Assets to add.| 3769e41f4b71Sopenharmony_ci 3770e41f4b71Sopenharmony_ci**Error codes** 3771e41f4b71Sopenharmony_ci 3772e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3773e41f4b71Sopenharmony_ci 3774e41f4b71Sopenharmony_ci| ID| Error Message| 3775e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3776e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3777e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3778e41f4b71Sopenharmony_ci| 14000016 | Operation Not Support. | 3779e41f4b71Sopenharmony_ci 3780e41f4b71Sopenharmony_ci**Example** 3781e41f4b71Sopenharmony_ci 3782e41f4b71Sopenharmony_ci```ts 3783e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 3784e41f4b71Sopenharmony_ci 3785e41f4b71Sopenharmony_ciasync function example() { 3786e41f4b71Sopenharmony_ci console.info('addAssetsDemo'); 3787e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3788e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 3789e41f4b71Sopenharmony_ci fetchColumns: [], 3790e41f4b71Sopenharmony_ci predicates: predicates 3791e41f4b71Sopenharmony_ci }; 3792e41f4b71Sopenharmony_ci try { 3793e41f4b71Sopenharmony_ci // Ensure that user albums and photos exist in Gallery. 3794e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 3795e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 3796e41f4b71Sopenharmony_ci let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 3797e41f4b71Sopenharmony_ci let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 3798e41f4b71Sopenharmony_ci let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album); 3799e41f4b71Sopenharmony_ci albumChangeRequest.addAssets([asset]); 3800e41f4b71Sopenharmony_ci await phAccessHelper.applyChanges(albumChangeRequest); 3801e41f4b71Sopenharmony_ci console.info('addAssets successfully'); 3802e41f4b71Sopenharmony_ci } catch (err) { 3803e41f4b71Sopenharmony_ci console.error(`addAssetsDemo failed with error: ${err.code}, ${err.message}`); 3804e41f4b71Sopenharmony_ci } 3805e41f4b71Sopenharmony_ci} 3806e41f4b71Sopenharmony_ci``` 3807e41f4b71Sopenharmony_ci 3808e41f4b71Sopenharmony_ci### removeAssets<sup>11+</sup> 3809e41f4b71Sopenharmony_ci 3810e41f4b71Sopenharmony_ciremoveAssets(assets: Array<PhotoAsset>): void 3811e41f4b71Sopenharmony_ci 3812e41f4b71Sopenharmony_ciRemoves assets from the album. 3813e41f4b71Sopenharmony_ci 3814e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3815e41f4b71Sopenharmony_ci 3816e41f4b71Sopenharmony_ci**Parameters** 3817e41f4b71Sopenharmony_ci 3818e41f4b71Sopenharmony_ci| Name | Type | Mandatory | Description | 3819e41f4b71Sopenharmony_ci| ---------- | ------- | ---- | ---------------------------------- | 3820e41f4b71Sopenharmony_ci| assets | Array<[PhotoAsset](#photoasset)> | Yes | Assets to remove.| 3821e41f4b71Sopenharmony_ci 3822e41f4b71Sopenharmony_ci**Error codes** 3823e41f4b71Sopenharmony_ci 3824e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3825e41f4b71Sopenharmony_ci 3826e41f4b71Sopenharmony_ci| ID| Error Message| 3827e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3828e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3829e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3830e41f4b71Sopenharmony_ci| 14000016 | Operation Not Support. | 3831e41f4b71Sopenharmony_ci 3832e41f4b71Sopenharmony_ci**Example** 3833e41f4b71Sopenharmony_ci 3834e41f4b71Sopenharmony_ci```ts 3835e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 3836e41f4b71Sopenharmony_ci 3837e41f4b71Sopenharmony_ciasync function example() { 3838e41f4b71Sopenharmony_ci console.info('removeAssetsDemo'); 3839e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3840e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 3841e41f4b71Sopenharmony_ci fetchColumns: [], 3842e41f4b71Sopenharmony_ci predicates: predicates 3843e41f4b71Sopenharmony_ci }; 3844e41f4b71Sopenharmony_ci try { 3845e41f4b71Sopenharmony_ci let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC); 3846e41f4b71Sopenharmony_ci let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject(); 3847e41f4b71Sopenharmony_ci let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOptions); 3848e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 3849e41f4b71Sopenharmony_ci 3850e41f4b71Sopenharmony_ci let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album); 3851e41f4b71Sopenharmony_ci albumChangeRequest.removeAssets([asset]); 3852e41f4b71Sopenharmony_ci await phAccessHelper.applyChanges(albumChangeRequest); 3853e41f4b71Sopenharmony_ci console.info('removeAssets successfully'); 3854e41f4b71Sopenharmony_ci } catch (err) { 3855e41f4b71Sopenharmony_ci console.error(`removeAssetsDemo failed with error: ${err.code}, ${err.message}`); 3856e41f4b71Sopenharmony_ci } 3857e41f4b71Sopenharmony_ci} 3858e41f4b71Sopenharmony_ci``` 3859e41f4b71Sopenharmony_ci 3860e41f4b71Sopenharmony_ci## MediaAssetManager<sup>11+</sup> 3861e41f4b71Sopenharmony_ci 3862e41f4b71Sopenharmony_ci### requestImage<sup>11+</sup> 3863e41f4b71Sopenharmony_ci 3864e41f4b71Sopenharmony_cistatic requestImage(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, dataHandler: MediaAssetDataHandler<image.ImageSource>): Promise<string> 3865e41f4b71Sopenharmony_ci 3866e41f4b71Sopenharmony_ciRequests an image. 3867e41f4b71Sopenharmony_ci 3868e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3869e41f4b71Sopenharmony_ci 3870e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 3871e41f4b71Sopenharmony_ci 3872e41f4b71Sopenharmony_ciIf the caller does not have the ohos.permission.READ_IMAGEVIDEO permission, use Picker to access the file and then call this API based on the URI obtained by Picker. For details, see [Obtaining an Image or Video by URI](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#obtaining-an-image-or-video-by-uri). 3873e41f4b71Sopenharmony_ci 3874e41f4b71Sopenharmony_ci**Parameters** 3875e41f4b71Sopenharmony_ci 3876e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 3877e41f4b71Sopenharmony_ci|----------------|-----------------------------------------------------------------------------------------------------------| ---- | ------------------------- | 3878e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 3879e41f4b71Sopenharmony_ci| asset | [PhotoAsset](#photoasset) | Yes | Image to request.| 3880e41f4b71Sopenharmony_ci| requestOptions | [RequestOptions](#requestoptions11) | Yes | Options for requesting the image.| 3881e41f4b71Sopenharmony_ci| dataHandler | [MediaAssetDataHandler](#mediaassetdatahandler11)<[image.ImageSource](../apis-image-kit/js-apis-image.md#imagesource)> | Yes | Media asset handler, which invokes a callback to return the image when the requested image is ready.| 3882e41f4b71Sopenharmony_ci 3883e41f4b71Sopenharmony_ci**Return value** 3884e41f4b71Sopenharmony_ci 3885e41f4b71Sopenharmony_ci| Type | Description | 3886e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 3887e41f4b71Sopenharmony_ci| Promise\<string> | Promise used to return the request ID, which can be used in [cancelRequest](#cancelrequest12) to cancel a request.| 3888e41f4b71Sopenharmony_ci 3889e41f4b71Sopenharmony_ci**Error codes** 3890e41f4b71Sopenharmony_ci 3891e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3892e41f4b71Sopenharmony_ci 3893e41f4b71Sopenharmony_ci| ID| Error Message| 3894e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3895e41f4b71Sopenharmony_ci| 201 | Permission denied | 3896e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3897e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3898e41f4b71Sopenharmony_ci 3899e41f4b71Sopenharmony_ci**Example** 3900e41f4b71Sopenharmony_ci 3901e41f4b71Sopenharmony_ci```ts 3902e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 3903e41f4b71Sopenharmony_ciimport { image } from '@kit.ImageKit'; 3904e41f4b71Sopenharmony_ci 3905e41f4b71Sopenharmony_ciclass MediaHandler implements photoAccessHelper.MediaAssetDataHandler<image.ImageSource> { 3906e41f4b71Sopenharmony_ci onDataPrepared(data: image.ImageSource) { 3907e41f4b71Sopenharmony_ci if (data === undefined) { 3908e41f4b71Sopenharmony_ci console.error('Error occurred when preparing data'); 3909e41f4b71Sopenharmony_ci return; 3910e41f4b71Sopenharmony_ci } 3911e41f4b71Sopenharmony_ci console.info('on image data prepared'); 3912e41f4b71Sopenharmony_ci } 3913e41f4b71Sopenharmony_ci} 3914e41f4b71Sopenharmony_ci 3915e41f4b71Sopenharmony_ciasync function example() { 3916e41f4b71Sopenharmony_ci console.info('requestImage'); 3917e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3918e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 3919e41f4b71Sopenharmony_ci fetchColumns: [], 3920e41f4b71Sopenharmony_ci predicates: predicates 3921e41f4b71Sopenharmony_ci }; 3922e41f4b71Sopenharmony_ci let requestOptions: photoAccessHelper.RequestOptions = { 3923e41f4b71Sopenharmony_ci deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE, 3924e41f4b71Sopenharmony_ci } 3925e41f4b71Sopenharmony_ci const handler = new MediaHandler(); 3926e41f4b71Sopenharmony_ci 3927e41f4b71Sopenharmony_ci phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => { 3928e41f4b71Sopenharmony_ci console.info('fetchResult success'); 3929e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 3930e41f4b71Sopenharmony_ci await photoAccessHelper.MediaAssetManager.requestImage(context, photoAsset, requestOptions, handler); 3931e41f4b71Sopenharmony_ci console.info('requestImage successfully'); 3932e41f4b71Sopenharmony_ci }); 3933e41f4b71Sopenharmony_ci} 3934e41f4b71Sopenharmony_ci``` 3935e41f4b71Sopenharmony_ci 3936e41f4b71Sopenharmony_ci### requestImageData<sup>11+</sup> 3937e41f4b71Sopenharmony_ci 3938e41f4b71Sopenharmony_cistatic requestImageData(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, dataHandler: MediaAssetDataHandler<ArrayBuffer>): Promise<string> 3939e41f4b71Sopenharmony_ci 3940e41f4b71Sopenharmony_ciRequests an image. 3941e41f4b71Sopenharmony_ci 3942e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 3943e41f4b71Sopenharmony_ci 3944e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 3945e41f4b71Sopenharmony_ci 3946e41f4b71Sopenharmony_ciIf the caller does not have the ohos.permission.READ_IMAGEVIDEO permission, use Picker to access the file and then call this API based on the URI obtained by Picker. For details, see [Obtaining an Image or Video by URI](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#obtaining-an-image-or-video-by-uri). 3947e41f4b71Sopenharmony_ci 3948e41f4b71Sopenharmony_ci**Parameters** 3949e41f4b71Sopenharmony_ci 3950e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 3951e41f4b71Sopenharmony_ci| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 3952e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 3953e41f4b71Sopenharmony_ci| asset | [PhotoAsset](#photoasset) | Yes | Image to request.| 3954e41f4b71Sopenharmony_ci| requestOptions | [RequestOptions](#requestoptions11) | Yes | Options for requesting the image.| 3955e41f4b71Sopenharmony_ci| dataHandler | [MediaAssetDataHandler](#mediaassetdatahandler11)<ArrayBuffer> | Yes | Media asset handler, which invokes a callback to return the image when the requested image is ready.| 3956e41f4b71Sopenharmony_ci 3957e41f4b71Sopenharmony_ci**Return value** 3958e41f4b71Sopenharmony_ci 3959e41f4b71Sopenharmony_ci| Type | Description | 3960e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 3961e41f4b71Sopenharmony_ci| Promise\<string> | Promise used to return the request ID, which can be used in [cancelRequest](#cancelrequest12) to cancel a request.| 3962e41f4b71Sopenharmony_ci 3963e41f4b71Sopenharmony_ci**Error codes** 3964e41f4b71Sopenharmony_ci 3965e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 3966e41f4b71Sopenharmony_ci 3967e41f4b71Sopenharmony_ci| ID| Error Message| 3968e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 3969e41f4b71Sopenharmony_ci| 201 | Permission denied | 3970e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 3971e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 3972e41f4b71Sopenharmony_ci 3973e41f4b71Sopenharmony_ci**Example** 3974e41f4b71Sopenharmony_ci 3975e41f4b71Sopenharmony_ci```ts 3976e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 3977e41f4b71Sopenharmony_ciclass MediaDataHandler implements photoAccessHelper.MediaAssetDataHandler<ArrayBuffer> { 3978e41f4b71Sopenharmony_ci onDataPrepared(data: ArrayBuffer) { 3979e41f4b71Sopenharmony_ci if (data === undefined) { 3980e41f4b71Sopenharmony_ci console.error('Error occurred when preparing data'); 3981e41f4b71Sopenharmony_ci return; 3982e41f4b71Sopenharmony_ci } 3983e41f4b71Sopenharmony_ci console.info('on image data prepared'); 3984e41f4b71Sopenharmony_ci } 3985e41f4b71Sopenharmony_ci} 3986e41f4b71Sopenharmony_ci 3987e41f4b71Sopenharmony_ciasync function example() { 3988e41f4b71Sopenharmony_ci console.info('requestImageData'); 3989e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 3990e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 3991e41f4b71Sopenharmony_ci fetchColumns: [], 3992e41f4b71Sopenharmony_ci predicates: predicates 3993e41f4b71Sopenharmony_ci }; 3994e41f4b71Sopenharmony_ci let requestOptions: photoAccessHelper.RequestOptions = { 3995e41f4b71Sopenharmony_ci deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE, 3996e41f4b71Sopenharmony_ci } 3997e41f4b71Sopenharmony_ci const handler = new MediaDataHandler(); 3998e41f4b71Sopenharmony_ci 3999e41f4b71Sopenharmony_ci phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => { 4000e41f4b71Sopenharmony_ci console.info('fetchResult success'); 4001e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 4002e41f4b71Sopenharmony_ci await photoAccessHelper.MediaAssetManager.requestImageData(context, photoAsset, requestOptions, handler); 4003e41f4b71Sopenharmony_ci console.info('requestImageData successfully'); 4004e41f4b71Sopenharmony_ci }); 4005e41f4b71Sopenharmony_ci} 4006e41f4b71Sopenharmony_ci``` 4007e41f4b71Sopenharmony_ci 4008e41f4b71Sopenharmony_ci### requestMovingPhoto<sup>12+</sup> 4009e41f4b71Sopenharmony_ci 4010e41f4b71Sopenharmony_cistatic requestMovingPhoto(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, dataHandler: MediaAssetDataHandler<MovingPhoto>): Promise<string> 4011e41f4b71Sopenharmony_ci 4012e41f4b71Sopenharmony_ciRequests a moving photo object, which can be used to request the asset data of the moving photo. 4013e41f4b71Sopenharmony_ci 4014e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4015e41f4b71Sopenharmony_ci 4016e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 4017e41f4b71Sopenharmony_ci 4018e41f4b71Sopenharmony_ciIf the caller does not have the ohos.permission.READ_IMAGEVIDEO permission, use Picker to access the file and then call this API based on the URI obtained by Picker. For details, see [Obtaining an Image or Video by URI](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#obtaining-an-image-or-video-by-uri). 4019e41f4b71Sopenharmony_ci 4020e41f4b71Sopenharmony_ci**Parameters** 4021e41f4b71Sopenharmony_ci 4022e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 4023e41f4b71Sopenharmony_ci| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 4024e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 4025e41f4b71Sopenharmony_ci| asset | [PhotoAsset](#photoasset) | Yes | Image to request.| 4026e41f4b71Sopenharmony_ci| requestOptions | [RequestOptions](#requestoptions11) | Yes | Options for requesting the image.| 4027e41f4b71Sopenharmony_ci| dataHandler | [MediaAssetDataHandler](#mediaassetdatahandler11)<[MovingPhoto](#movingphoto12)> | Yes | Media asset handler, which invokes a callback to return the image when the requested image is ready.| 4028e41f4b71Sopenharmony_ci 4029e41f4b71Sopenharmony_ci**Return value** 4030e41f4b71Sopenharmony_ci 4031e41f4b71Sopenharmony_ci| Type | Description | 4032e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 4033e41f4b71Sopenharmony_ci| Promise\<string> | Promise used to return the request ID, which can be used in [cancelRequest](#cancelrequest12) to cancel a request.| 4034e41f4b71Sopenharmony_ci 4035e41f4b71Sopenharmony_ci**Error codes** 4036e41f4b71Sopenharmony_ci 4037e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 4038e41f4b71Sopenharmony_ci 4039e41f4b71Sopenharmony_ci| ID| Error Message| 4040e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 4041e41f4b71Sopenharmony_ci| 201 | Permission denied | 4042e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4043e41f4b71Sopenharmony_ci| 14000011 | System inner fail | 4044e41f4b71Sopenharmony_ci 4045e41f4b71Sopenharmony_ci**Example** 4046e41f4b71Sopenharmony_ci 4047e41f4b71Sopenharmony_ci```ts 4048e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 4049e41f4b71Sopenharmony_ci 4050e41f4b71Sopenharmony_ciclass MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> { 4051e41f4b71Sopenharmony_ci async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) { 4052e41f4b71Sopenharmony_ci if (movingPhoto === undefined) { 4053e41f4b71Sopenharmony_ci console.error('Error occurred when preparing data'); 4054e41f4b71Sopenharmony_ci return; 4055e41f4b71Sopenharmony_ci } 4056e41f4b71Sopenharmony_ci console.info("moving photo acquired successfully, uri: " + movingPhoto.getUri()); 4057e41f4b71Sopenharmony_ci } 4058e41f4b71Sopenharmony_ci} 4059e41f4b71Sopenharmony_ci 4060e41f4b71Sopenharmony_ciasync function example() { 4061e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 4062e41f4b71Sopenharmony_ci predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO); 4063e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 4064e41f4b71Sopenharmony_ci fetchColumns: [], 4065e41f4b71Sopenharmony_ci predicates: predicates 4066e41f4b71Sopenharmony_ci }; 4067e41f4b71Sopenharmony_ci // Ensure that there are moving photos in Gallery. 4068e41f4b71Sopenharmony_ci let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 4069e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); 4070e41f4b71Sopenharmony_ci let requestOptions: photoAccessHelper.RequestOptions = { 4071e41f4b71Sopenharmony_ci deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE, 4072e41f4b71Sopenharmony_ci } 4073e41f4b71Sopenharmony_ci const handler = new MovingPhotoHandler(); 4074e41f4b71Sopenharmony_ci try { 4075e41f4b71Sopenharmony_ci let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler); 4076e41f4b71Sopenharmony_ci console.info("moving photo requested successfully, requestId: " + requestId); 4077e41f4b71Sopenharmony_ci } catch (err) { 4078e41f4b71Sopenharmony_ci console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`); 4079e41f4b71Sopenharmony_ci } 4080e41f4b71Sopenharmony_ci} 4081e41f4b71Sopenharmony_ci 4082e41f4b71Sopenharmony_ci``` 4083e41f4b71Sopenharmony_ci 4084e41f4b71Sopenharmony_ci### requestVideoFile<sup>12+</sup> 4085e41f4b71Sopenharmony_ci 4086e41f4b71Sopenharmony_cistatic requestVideoFile(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, fileUri: string, dataHandler: MediaAssetDataHandler<boolean>): Promise<string> 4087e41f4b71Sopenharmony_ci 4088e41f4b71Sopenharmony_ciRequests a video asset and saves it to the specified sandbox directory. 4089e41f4b71Sopenharmony_ci 4090e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4091e41f4b71Sopenharmony_ci 4092e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 4093e41f4b71Sopenharmony_ci 4094e41f4b71Sopenharmony_ciIf the caller does not have the ohos.permission.READ_IMAGEVIDEO permission, use Picker to access the file and then call this API based on the URI obtained by Picker. For details, see [Obtaining an Image or Video by URI](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#obtaining-an-image-or-video-by-uri). 4095e41f4b71Sopenharmony_ci 4096e41f4b71Sopenharmony_ci**Parameters** 4097e41f4b71Sopenharmony_ci 4098e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 4099e41f4b71Sopenharmony_ci| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 4100e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 4101e41f4b71Sopenharmony_ci| asset | [PhotoAsset](#photoasset) | Yes | Image to request.| 4102e41f4b71Sopenharmony_ci| requestOptions | [RequestOptions](#requestoptions11) | Yes | Options for requesting the video asset.| 4103e41f4b71Sopenharmony_ci| fileUri| string | Yes| URI of the sandbox directory, to which the requested video asset is to be saved.| 4104e41f4b71Sopenharmony_ci| dataHandler | [MediaAssetDataHandler](#mediaassetdatahandler11)<boolean> | Yes | Media asset handler. When the requested video is written to the specified directory, a callback is triggered.| 4105e41f4b71Sopenharmony_ci 4106e41f4b71Sopenharmony_ci**Return value** 4107e41f4b71Sopenharmony_ci 4108e41f4b71Sopenharmony_ci| Type | Description | 4109e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 4110e41f4b71Sopenharmony_ci| Promise\<string> | Promise used to return the request ID, which can be used in [cancelRequest](#cancelrequest12) to cancel a request.| 4111e41f4b71Sopenharmony_ci 4112e41f4b71Sopenharmony_ci**Error codes** 4113e41f4b71Sopenharmony_ci 4114e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 4115e41f4b71Sopenharmony_ci 4116e41f4b71Sopenharmony_ci| ID| Error Message| 4117e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 4118e41f4b71Sopenharmony_ci| 201 | Permission denied | 4119e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4120e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 4121e41f4b71Sopenharmony_ci 4122e41f4b71Sopenharmony_ci**Example** 4123e41f4b71Sopenharmony_ci 4124e41f4b71Sopenharmony_ci```ts 4125e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 4126e41f4b71Sopenharmony_ciclass MediaDataHandler implements photoAccessHelper.MediaAssetDataHandler<boolean> { 4127e41f4b71Sopenharmony_ci onDataPrepared(data: boolean) { 4128e41f4b71Sopenharmony_ci console.info('on video request status prepared'); 4129e41f4b71Sopenharmony_ci } 4130e41f4b71Sopenharmony_ci} 4131e41f4b71Sopenharmony_ci 4132e41f4b71Sopenharmony_ciasync function example() { 4133e41f4b71Sopenharmony_ci console.info('requestVideoFile'); 4134e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 4135e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 4136e41f4b71Sopenharmony_ci fetchColumns: [], 4137e41f4b71Sopenharmony_ci predicates: predicates 4138e41f4b71Sopenharmony_ci }; 4139e41f4b71Sopenharmony_ci let requestOptions: photoAccessHelper.RequestOptions = { 4140e41f4b71Sopenharmony_ci deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE, 4141e41f4b71Sopenharmony_ci } 4142e41f4b71Sopenharmony_ci const handler = new MediaDataHandler(); 4143e41f4b71Sopenharmony_ci let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.mp4'; 4144e41f4b71Sopenharmony_ci phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => { 4145e41f4b71Sopenharmony_ci console.info('fetchResult success'); 4146e41f4b71Sopenharmony_ci let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 4147e41f4b71Sopenharmony_ci await photoAccessHelper.MediaAssetManager.requestVideoFile(context, photoAsset, requestOptions, fileUri, handler); 4148e41f4b71Sopenharmony_ci console.info('requestVideoFile successfully'); 4149e41f4b71Sopenharmony_ci }); 4150e41f4b71Sopenharmony_ci} 4151e41f4b71Sopenharmony_ci``` 4152e41f4b71Sopenharmony_ci 4153e41f4b71Sopenharmony_ci### cancelRequest<sup>12+</sup> 4154e41f4b71Sopenharmony_ci 4155e41f4b71Sopenharmony_cistatic cancelRequest(context: Context, requestId: string): Promise\<void> 4156e41f4b71Sopenharmony_ci 4157e41f4b71Sopenharmony_ciCancels a request for the asset, the callback of which has not been triggered yet. 4158e41f4b71Sopenharmony_ci 4159e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4160e41f4b71Sopenharmony_ci 4161e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 4162e41f4b71Sopenharmony_ci 4163e41f4b71Sopenharmony_ci**Parameters** 4164e41f4b71Sopenharmony_ci 4165e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 4166e41f4b71Sopenharmony_ci| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 4167e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 4168e41f4b71Sopenharmony_ci| requestId | string | Yes | ID of the request to cancel.| 4169e41f4b71Sopenharmony_ci 4170e41f4b71Sopenharmony_ci**Return value** 4171e41f4b71Sopenharmony_ci 4172e41f4b71Sopenharmony_ci| Type | Description | 4173e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 4174e41f4b71Sopenharmony_ci| Promise\<void> | Promise that returns no value.| 4175e41f4b71Sopenharmony_ci 4176e41f4b71Sopenharmony_ci**Error codes** 4177e41f4b71Sopenharmony_ci 4178e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 4179e41f4b71Sopenharmony_ci 4180e41f4b71Sopenharmony_ci| ID| Error Message| 4181e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 4182e41f4b71Sopenharmony_ci| 201 | Permission denied | 4183e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4184e41f4b71Sopenharmony_ci| 14000011 | System inner fail | 4185e41f4b71Sopenharmony_ci 4186e41f4b71Sopenharmony_ci**Example** 4187e41f4b71Sopenharmony_ci 4188e41f4b71Sopenharmony_ci```ts 4189e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 4190e41f4b71Sopenharmony_ci 4191e41f4b71Sopenharmony_ciasync function example() { 4192e41f4b71Sopenharmony_ci try { 4193e41f4b71Sopenharmony_ci let requestId: string = 'xxx-xxx'; // A valid requestId returned by APIs such as requestImage() must be used. 4194e41f4b71Sopenharmony_ci await photoAccessHelper.MediaAssetManager.cancelRequest(context, requestId); 4195e41f4b71Sopenharmony_ci console.info("request cancelled successfully"); 4196e41f4b71Sopenharmony_ci } catch (err) { 4197e41f4b71Sopenharmony_ci console.error(`cancelRequest failed with error: ${err.code}, ${err.message}`); 4198e41f4b71Sopenharmony_ci } 4199e41f4b71Sopenharmony_ci} 4200e41f4b71Sopenharmony_ci 4201e41f4b71Sopenharmony_ci``` 4202e41f4b71Sopenharmony_ci 4203e41f4b71Sopenharmony_ci### loadMovingPhoto<sup>12+</sup> 4204e41f4b71Sopenharmony_ci 4205e41f4b71Sopenharmony_cistatic loadMovingPhoto(context: Context, imageFileUri: string, videoFileUri: string): Promise\<MovingPhoto> 4206e41f4b71Sopenharmony_ci 4207e41f4b71Sopenharmony_ciLoads a moving photo in the application sandbox. 4208e41f4b71Sopenharmony_ci 4209e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4210e41f4b71Sopenharmony_ci 4211e41f4b71Sopenharmony_ci**Parameters** 4212e41f4b71Sopenharmony_ci 4213e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 4214e41f4b71Sopenharmony_ci| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 4215e41f4b71Sopenharmony_ci| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | **AbilityContext** or **UIExtensionContext** instance.| 4216e41f4b71Sopenharmony_ci| imageFileUri | string | Yes | URI of the image file of the moving photo in the application sandbox.| 4217e41f4b71Sopenharmony_ci| videoFileUri | string | Yes | URI of the video file of the moving photo in the application sandbox.| 4218e41f4b71Sopenharmony_ci 4219e41f4b71Sopenharmony_ci**Return value** 4220e41f4b71Sopenharmony_ci 4221e41f4b71Sopenharmony_ci| Type | Description | 4222e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 4223e41f4b71Sopenharmony_ci| Promise\<MovingPhoto> | Promise used to return a [MovingPhoto](#movingphoto12) instance.| 4224e41f4b71Sopenharmony_ci 4225e41f4b71Sopenharmony_ci**Error codes** 4226e41f4b71Sopenharmony_ci 4227e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 4228e41f4b71Sopenharmony_ci 4229e41f4b71Sopenharmony_ci| ID| Error Message| 4230e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 4231e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4232e41f4b71Sopenharmony_ci| 14000011 | Internal system error. | 4233e41f4b71Sopenharmony_ci 4234e41f4b71Sopenharmony_ci**Example** 4235e41f4b71Sopenharmony_ci 4236e41f4b71Sopenharmony_ci```ts 4237e41f4b71Sopenharmony_ciasync function example() { 4238e41f4b71Sopenharmony_ci try { 4239e41f4b71Sopenharmony_ci let imageFileUri: string = 'file://com.example.temptest/data/storage/el2/base/haps/ImageFile.jpg'; // URI of the image file of the moving photo in the application sandbox. 4240e41f4b71Sopenharmony_ci let videoFileUri: string = 'file://com.example.temptest/data/storage/el2/base/haps/VideoFile.mp4'; // URI of the video file of the moving photo in the application sandbox. 4241e41f4b71Sopenharmony_ci let movingPhoto: photoAccessHelper.MovingPhoto = await photoAccessHelper.MediaAssetManager.loadMovingPhoto(context, imageFileUri, videoFileUri); 4242e41f4b71Sopenharmony_ci } catch (err) { 4243e41f4b71Sopenharmony_ci console.error(`loadMovingPhoto failed with error: ${err.code}, ${err.message}`); 4244e41f4b71Sopenharmony_ci } 4245e41f4b71Sopenharmony_ci} 4246e41f4b71Sopenharmony_ci 4247e41f4b71Sopenharmony_ci``` 4248e41f4b71Sopenharmony_ci 4249e41f4b71Sopenharmony_ci## MediaAssetDataHandler<sup>11+</sup> 4250e41f4b71Sopenharmony_ci 4251e41f4b71Sopenharmony_ciMedia asset handler, which can be used to customize the media asset processing logic in **onDataPrepared**. 4252e41f4b71Sopenharmony_ci 4253e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4254e41f4b71Sopenharmony_ci 4255e41f4b71Sopenharmony_ci### onDataPrepared<sup>11+</sup> 4256e41f4b71Sopenharmony_ci 4257e41f4b71Sopenharmony_cionDataPrepared(data: T, map?: Map<string, string>): void 4258e41f4b71Sopenharmony_ci 4259e41f4b71Sopenharmony_ciCalled when the requested image is ready. If an error occurs, **data** returned by the callback is **undefined**. 4260e41f4b71Sopenharmony_ciT supports the following data types: ArrayBuffer, [ImageSource](../apis-image-kit/js-apis-image.md#imagesource), [MovingPhoto](#movingphoto12), and boolean. 4261e41f4b71Sopenharmony_ci 4262e41f4b71Sopenharmony_ciInformation returned by **map**: 4263e41f4b71Sopenharmony_ci| Map Key | **Description**| 4264e41f4b71Sopenharmony_ci|----------|-------| 4265e41f4b71Sopenharmony_ci| 'quality' | Image quality. The value **high** means high quality, and **low** means poor quality.| 4266e41f4b71Sopenharmony_ci 4267e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4268e41f4b71Sopenharmony_ci 4269e41f4b71Sopenharmony_ci**Parameters** 4270e41f4b71Sopenharmony_ci 4271e41f4b71Sopenharmony_ci| Name | Type| Mandatory| Description | 4272e41f4b71Sopenharmony_ci|------|---| ---- |-------------------------------------------------------------------------------| 4273e41f4b71Sopenharmony_ci| data | T | Yes | Data of the image asset that is ready. The value supports the following types: ArrayBuffer, [ImageSource](../apis-image-kit/js-apis-image.md#imagesource), [MovingPhoto](#movingphoto12), and boolean.| 4274e41f4b71Sopenharmony_ci| map<sup>12+</sup> | Map<string, string> | No | Additional information about the image asset, such as the image quality.| 4275e41f4b71Sopenharmony_ci 4276e41f4b71Sopenharmony_ci**Example** 4277e41f4b71Sopenharmony_ci```ts 4278e41f4b71Sopenharmony_ciimport { image } from '@kit.ImageKit'; 4279e41f4b71Sopenharmony_ci 4280e41f4b71Sopenharmony_ciclass MediaHandler implements photoAccessHelper.MediaAssetDataHandler<image.ImageSource> { 4281e41f4b71Sopenharmony_ci onDataPrepared(data: image.ImageSource, map: Map<string, string>) { 4282e41f4b71Sopenharmony_ci if (data === undefined) { 4283e41f4b71Sopenharmony_ci console.error('Error occurred when preparing data'); 4284e41f4b71Sopenharmony_ci return; 4285e41f4b71Sopenharmony_ci } 4286e41f4b71Sopenharmony_ci // Customize the processing logic for ImageSource. 4287e41f4b71Sopenharmony_ci console.info('on image data prepared, photo quality is ' + map['quality']); 4288e41f4b71Sopenharmony_ci } 4289e41f4b71Sopenharmony_ci} 4290e41f4b71Sopenharmony_ci 4291e41f4b71Sopenharmony_ciclass MediaDataHandler implements photoAccessHelper.MediaAssetDataHandler<ArrayBuffer> { 4292e41f4b71Sopenharmony_ci onDataPrepared(data: ArrayBuffer, map: Map<string, string>) { 4293e41f4b71Sopenharmony_ci if (data === undefined) { 4294e41f4b71Sopenharmony_ci console.error('Error occurred when preparing data'); 4295e41f4b71Sopenharmony_ci return; 4296e41f4b71Sopenharmony_ci } 4297e41f4b71Sopenharmony_ci // Customize the processing logic for ArrayBuffer. 4298e41f4b71Sopenharmony_ci console.info('on image data prepared, photo quality is ' + map['quality']); 4299e41f4b71Sopenharmony_ci } 4300e41f4b71Sopenharmony_ci} 4301e41f4b71Sopenharmony_ci 4302e41f4b71Sopenharmony_ciclass MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> { 4303e41f4b71Sopenharmony_ci onDataPrepared(data: photoAccessHelper.MovingPhoto, map: Map<string, string>) { 4304e41f4b71Sopenharmony_ci if (data === undefined) { 4305e41f4b71Sopenharmony_ci console.error('Error occurred when preparing data'); 4306e41f4b71Sopenharmony_ci return; 4307e41f4b71Sopenharmony_ci } 4308e41f4b71Sopenharmony_ci // Customize the processing logic for MovingPhoto. 4309e41f4b71Sopenharmony_ci console.info('on image data prepared, photo quality is ' + map['quality']); 4310e41f4b71Sopenharmony_ci } 4311e41f4b71Sopenharmony_ci} 4312e41f4b71Sopenharmony_ci``` 4313e41f4b71Sopenharmony_ci 4314e41f4b71Sopenharmony_ci## MovingPhoto<sup>12+</sup> 4315e41f4b71Sopenharmony_ci 4316e41f4b71Sopenharmony_ciProvides APIs for managing a moving photo instance. 4317e41f4b71Sopenharmony_ci 4318e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 4319e41f4b71Sopenharmony_ci 4320e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4321e41f4b71Sopenharmony_ci 4322e41f4b71Sopenharmony_ci### getUri<sup>12+</sup> 4323e41f4b71Sopenharmony_ci 4324e41f4b71Sopenharmony_cigetUri(): string 4325e41f4b71Sopenharmony_ci 4326e41f4b71Sopenharmony_ciObtains the URI of this moving photo. 4327e41f4b71Sopenharmony_ci 4328e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 4329e41f4b71Sopenharmony_ci 4330e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4331e41f4b71Sopenharmony_ci 4332e41f4b71Sopenharmony_ci**Return value** 4333e41f4b71Sopenharmony_ci 4334e41f4b71Sopenharmony_ci| Type | Description | 4335e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 4336e41f4b71Sopenharmony_ci| string | URI of the moving photo obtained.| 4337e41f4b71Sopenharmony_ci 4338e41f4b71Sopenharmony_ci**Error codes** 4339e41f4b71Sopenharmony_ci 4340e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 4341e41f4b71Sopenharmony_ci 4342e41f4b71Sopenharmony_ci| ID| Error Message| 4343e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 4344e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 4345e41f4b71Sopenharmony_ci| 14000011 | System inner fail. | 4346e41f4b71Sopenharmony_ci 4347e41f4b71Sopenharmony_ci**Example** 4348e41f4b71Sopenharmony_ci 4349e41f4b71Sopenharmony_ci```ts 4350e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 4351e41f4b71Sopenharmony_ci 4352e41f4b71Sopenharmony_ciclass MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> { 4353e41f4b71Sopenharmony_ci async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) { 4354e41f4b71Sopenharmony_ci if (movingPhoto === undefined) { 4355e41f4b71Sopenharmony_ci console.error('Error occurred when preparing data'); 4356e41f4b71Sopenharmony_ci return; 4357e41f4b71Sopenharmony_ci } 4358e41f4b71Sopenharmony_ci console.info("moving photo acquired successfully, uri: " + movingPhoto.getUri()); 4359e41f4b71Sopenharmony_ci } 4360e41f4b71Sopenharmony_ci} 4361e41f4b71Sopenharmony_ci 4362e41f4b71Sopenharmony_ciasync function example() { 4363e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 4364e41f4b71Sopenharmony_ci predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO); 4365e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 4366e41f4b71Sopenharmony_ci fetchColumns: [], 4367e41f4b71Sopenharmony_ci predicates: predicates 4368e41f4b71Sopenharmony_ci }; 4369e41f4b71Sopenharmony_ci // Ensure that there are moving photos in Gallery. 4370e41f4b71Sopenharmony_ci let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 4371e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); 4372e41f4b71Sopenharmony_ci let requestOptions: photoAccessHelper.RequestOptions = { 4373e41f4b71Sopenharmony_ci deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE, 4374e41f4b71Sopenharmony_ci } 4375e41f4b71Sopenharmony_ci const handler = new MovingPhotoHandler(); 4376e41f4b71Sopenharmony_ci try { 4377e41f4b71Sopenharmony_ci let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler); 4378e41f4b71Sopenharmony_ci console.info("moving photo requested successfully, requestId: " + requestId); 4379e41f4b71Sopenharmony_ci } catch (err) { 4380e41f4b71Sopenharmony_ci console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`); 4381e41f4b71Sopenharmony_ci } 4382e41f4b71Sopenharmony_ci} 4383e41f4b71Sopenharmony_ci``` 4384e41f4b71Sopenharmony_ci 4385e41f4b71Sopenharmony_ci### requestContent<sup>12+</sup> 4386e41f4b71Sopenharmony_ci 4387e41f4b71Sopenharmony_cirequestContent(imageFileUri: string, videoFileUri: string): Promise\<void> 4388e41f4b71Sopenharmony_ci 4389e41f4b71Sopenharmony_ciRequests the image data and video data of this moving photo and writes them to the specified URIs, respectively. 4390e41f4b71Sopenharmony_ci 4391e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 4392e41f4b71Sopenharmony_ci 4393e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4394e41f4b71Sopenharmony_ci 4395e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 4396e41f4b71Sopenharmony_ci 4397e41f4b71Sopenharmony_ci**Parameters** 4398e41f4b71Sopenharmony_ci 4399e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 4400e41f4b71Sopenharmony_ci| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 4401e41f4b71Sopenharmony_ci| imageFileUri | string | Yes | URI to which the image data of the moving photo is to be written.| 4402e41f4b71Sopenharmony_ci| videoFileUri | string | Yes | URI to which the video data of the moving photo is to be written.| 4403e41f4b71Sopenharmony_ci 4404e41f4b71Sopenharmony_ci**Return value** 4405e41f4b71Sopenharmony_ci 4406e41f4b71Sopenharmony_ci| Type | Description | 4407e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 4408e41f4b71Sopenharmony_ci| Promise\<void> | Promise that returns no value.| 4409e41f4b71Sopenharmony_ci 4410e41f4b71Sopenharmony_ci**Error codes** 4411e41f4b71Sopenharmony_ci 4412e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 4413e41f4b71Sopenharmony_ci 4414e41f4b71Sopenharmony_ci| ID| Error Message| 4415e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 4416e41f4b71Sopenharmony_ci| 201 | Permission denied | 4417e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4418e41f4b71Sopenharmony_ci| 14000011 | System inner fail | 4419e41f4b71Sopenharmony_ci 4420e41f4b71Sopenharmony_ci**Example** 4421e41f4b71Sopenharmony_ci 4422e41f4b71Sopenharmony_ci```ts 4423e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 4424e41f4b71Sopenharmony_ci 4425e41f4b71Sopenharmony_ciclass MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> { 4426e41f4b71Sopenharmony_ci async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) { 4427e41f4b71Sopenharmony_ci if (movingPhoto === undefined) { 4428e41f4b71Sopenharmony_ci console.error('Error occurred when preparing data'); 4429e41f4b71Sopenharmony_ci return; 4430e41f4b71Sopenharmony_ci } 4431e41f4b71Sopenharmony_ci // The URIs must be valid. 4432e41f4b71Sopenharmony_ci let imageFileUri: string = "file://com.example.temptest/data/storage/el2/base/haps/ImageFile.jpg"; 4433e41f4b71Sopenharmony_ci let videoFileUri: string = "file://com.example.temptest/data/storage/el2/base/haps/VideoFile.mp4"; 4434e41f4b71Sopenharmony_ci try { 4435e41f4b71Sopenharmony_ci await movingPhoto.requestContent(imageFileUri, videoFileUri); 4436e41f4b71Sopenharmony_ci console.log("moving photo contents retrieved successfully"); 4437e41f4b71Sopenharmony_ci } catch (err) { 4438e41f4b71Sopenharmony_ci console.error(`failed to retrieve contents of moving photo, error code is ${err.code}, message is ${err.message}`); 4439e41f4b71Sopenharmony_ci } 4440e41f4b71Sopenharmony_ci } 4441e41f4b71Sopenharmony_ci} 4442e41f4b71Sopenharmony_ci 4443e41f4b71Sopenharmony_ciasync function example() { 4444e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 4445e41f4b71Sopenharmony_ci predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO); 4446e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 4447e41f4b71Sopenharmony_ci fetchColumns: [], 4448e41f4b71Sopenharmony_ci predicates: predicates 4449e41f4b71Sopenharmony_ci }; 4450e41f4b71Sopenharmony_ci // Ensure that there are moving photos in Gallery. 4451e41f4b71Sopenharmony_ci let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 4452e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); 4453e41f4b71Sopenharmony_ci let requestOptions: photoAccessHelper.RequestOptions = { 4454e41f4b71Sopenharmony_ci deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE, 4455e41f4b71Sopenharmony_ci } 4456e41f4b71Sopenharmony_ci const handler = new MovingPhotoHandler(); 4457e41f4b71Sopenharmony_ci try { 4458e41f4b71Sopenharmony_ci let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler); 4459e41f4b71Sopenharmony_ci console.info("moving photo requested successfully, requestId: " + requestId); 4460e41f4b71Sopenharmony_ci } catch (err) { 4461e41f4b71Sopenharmony_ci console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`); 4462e41f4b71Sopenharmony_ci } 4463e41f4b71Sopenharmony_ci} 4464e41f4b71Sopenharmony_ci``` 4465e41f4b71Sopenharmony_ci 4466e41f4b71Sopenharmony_ci### requestContent<sup>12+</sup> 4467e41f4b71Sopenharmony_ci 4468e41f4b71Sopenharmony_cirequestContent(resourceType: ResourceType, fileUri: string): Promise\<void> 4469e41f4b71Sopenharmony_ci 4470e41f4b71Sopenharmony_ciRequests the moving photo content of the specified resource type and writes it to the specified URI. 4471e41f4b71Sopenharmony_ci 4472e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 4473e41f4b71Sopenharmony_ci 4474e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4475e41f4b71Sopenharmony_ci 4476e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 4477e41f4b71Sopenharmony_ci 4478e41f4b71Sopenharmony_ci**Parameters** 4479e41f4b71Sopenharmony_ci 4480e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 4481e41f4b71Sopenharmony_ci| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 4482e41f4b71Sopenharmony_ci| resourceType | [ResourceType](#resourcetype11) | Yes | Resource type of the moving photo content to request.| 4483e41f4b71Sopenharmony_ci| fileUri | string | Yes |URI to which the moving photo content is to be written.| 4484e41f4b71Sopenharmony_ci 4485e41f4b71Sopenharmony_ci**Return value** 4486e41f4b71Sopenharmony_ci 4487e41f4b71Sopenharmony_ci| Type | Description | 4488e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 4489e41f4b71Sopenharmony_ci| Promise\<void> | Promise that returns no value.| 4490e41f4b71Sopenharmony_ci 4491e41f4b71Sopenharmony_ci**Error codes** 4492e41f4b71Sopenharmony_ci 4493e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 4494e41f4b71Sopenharmony_ci 4495e41f4b71Sopenharmony_ci| ID| Error Message| 4496e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 4497e41f4b71Sopenharmony_ci| 201 | Permission denied | 4498e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4499e41f4b71Sopenharmony_ci| 14000011 | System inner fail | 4500e41f4b71Sopenharmony_ci 4501e41f4b71Sopenharmony_ci**Example** 4502e41f4b71Sopenharmony_ci 4503e41f4b71Sopenharmony_ci```ts 4504e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 4505e41f4b71Sopenharmony_ci 4506e41f4b71Sopenharmony_ciclass MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> { 4507e41f4b71Sopenharmony_ci async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) { 4508e41f4b71Sopenharmony_ci if (movingPhoto === undefined) { 4509e41f4b71Sopenharmony_ci console.error('Error occurred when preparing data'); 4510e41f4b71Sopenharmony_ci return; 4511e41f4b71Sopenharmony_ci } 4512e41f4b71Sopenharmony_ci // The URIs must be valid. 4513e41f4b71Sopenharmony_ci let imageFileUri: string = "file://com.example.temptest/data/storage/el2/base/haps/ImageFile.jpg"; 4514e41f4b71Sopenharmony_ci try { 4515e41f4b71Sopenharmony_ci await movingPhoto.requestContent(photoAccessHelper.ResourceType.IMAGE_RESOURCE, imageFileUri); 4516e41f4b71Sopenharmony_ci console.log("moving photo image content retrieved successfully"); 4517e41f4b71Sopenharmony_ci } catch (err) { 4518e41f4b71Sopenharmony_ci console.error(`failed to retrieve image content of moving photo, error code is ${err.code}, message is ${err.message}`); 4519e41f4b71Sopenharmony_ci } 4520e41f4b71Sopenharmony_ci } 4521e41f4b71Sopenharmony_ci} 4522e41f4b71Sopenharmony_ci 4523e41f4b71Sopenharmony_ciasync function example() { 4524e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 4525e41f4b71Sopenharmony_ci predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO); 4526e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 4527e41f4b71Sopenharmony_ci fetchColumns: [], 4528e41f4b71Sopenharmony_ci predicates: predicates 4529e41f4b71Sopenharmony_ci }; 4530e41f4b71Sopenharmony_ci // Ensure that there are moving photos in Gallery. 4531e41f4b71Sopenharmony_ci let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 4532e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); 4533e41f4b71Sopenharmony_ci let requestOptions: photoAccessHelper.RequestOptions = { 4534e41f4b71Sopenharmony_ci deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE, 4535e41f4b71Sopenharmony_ci } 4536e41f4b71Sopenharmony_ci const handler = new MovingPhotoHandler(); 4537e41f4b71Sopenharmony_ci try { 4538e41f4b71Sopenharmony_ci let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler); 4539e41f4b71Sopenharmony_ci console.info("moving photo requested successfully, requestId: " + requestId); 4540e41f4b71Sopenharmony_ci } catch (err) { 4541e41f4b71Sopenharmony_ci console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`); 4542e41f4b71Sopenharmony_ci } 4543e41f4b71Sopenharmony_ci} 4544e41f4b71Sopenharmony_ci``` 4545e41f4b71Sopenharmony_ci 4546e41f4b71Sopenharmony_ci### requestContent<sup>12+</sup> 4547e41f4b71Sopenharmony_ci 4548e41f4b71Sopenharmony_cirequestContent(resourceType: ResourceType): Promise\<ArrayBuffer> 4549e41f4b71Sopenharmony_ci 4550e41f4b71Sopenharmony_ciRequests the moving photo content of the specified resource type and returns it in ArrayBuffer format. 4551e41f4b71Sopenharmony_ci 4552e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 4553e41f4b71Sopenharmony_ci 4554e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4555e41f4b71Sopenharmony_ci 4556e41f4b71Sopenharmony_ci**Required permissions**: ohos.permission.READ_IMAGEVIDEO 4557e41f4b71Sopenharmony_ci 4558e41f4b71Sopenharmony_ci**Parameters** 4559e41f4b71Sopenharmony_ci 4560e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 4561e41f4b71Sopenharmony_ci| -------- |----------------------------------------------------------------------| ---- | ------------------------- | 4562e41f4b71Sopenharmony_ci| resourceType | [ResourceType](#resourcetype11) | Yes | Resource type of the moving photo content to request.| 4563e41f4b71Sopenharmony_ci 4564e41f4b71Sopenharmony_ci**Return value** 4565e41f4b71Sopenharmony_ci 4566e41f4b71Sopenharmony_ci| Type | Description | 4567e41f4b71Sopenharmony_ci| --------------------------------------- | ----------------- | 4568e41f4b71Sopenharmony_ci| Promise\<ArrayBuffer> | Promise used to return the requested content in an ArrayBuffer.| 4569e41f4b71Sopenharmony_ci 4570e41f4b71Sopenharmony_ci**Error codes** 4571e41f4b71Sopenharmony_ci 4572e41f4b71Sopenharmony_ciFor details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 4573e41f4b71Sopenharmony_ci 4574e41f4b71Sopenharmony_ci| ID| Error Message| 4575e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | 4576e41f4b71Sopenharmony_ci| 201 | Permission denied | 4577e41f4b71Sopenharmony_ci| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 4578e41f4b71Sopenharmony_ci| 14000011 | System inner fail | 4579e41f4b71Sopenharmony_ci 4580e41f4b71Sopenharmony_ci**Example** 4581e41f4b71Sopenharmony_ci 4582e41f4b71Sopenharmony_ci```ts 4583e41f4b71Sopenharmony_ciimport { dataSharePredicates } from '@kit.ArkData'; 4584e41f4b71Sopenharmony_ci 4585e41f4b71Sopenharmony_ciclass MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> { 4586e41f4b71Sopenharmony_ci async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) { 4587e41f4b71Sopenharmony_ci if (movingPhoto === undefined) { 4588e41f4b71Sopenharmony_ci console.error('Error occurred when preparing data'); 4589e41f4b71Sopenharmony_ci return; 4590e41f4b71Sopenharmony_ci } 4591e41f4b71Sopenharmony_ci try { 4592e41f4b71Sopenharmony_ci let buffer: ArrayBuffer = await movingPhoto.requestContent(photoAccessHelper.ResourceType.IMAGE_RESOURCE); 4593e41f4b71Sopenharmony_ci console.log("moving photo image content retrieved successfully, buffer length: " + buffer.byteLength); 4594e41f4b71Sopenharmony_ci } catch (err) { 4595e41f4b71Sopenharmony_ci console.error(`failed to retrieve image content of moving photo, error code is ${err.code}, message is ${err.message}`); 4596e41f4b71Sopenharmony_ci } 4597e41f4b71Sopenharmony_ci } 4598e41f4b71Sopenharmony_ci} 4599e41f4b71Sopenharmony_ci 4600e41f4b71Sopenharmony_ciasync function example() { 4601e41f4b71Sopenharmony_ci let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 4602e41f4b71Sopenharmony_ci predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO); 4603e41f4b71Sopenharmony_ci let fetchOptions: photoAccessHelper.FetchOptions = { 4604e41f4b71Sopenharmony_ci fetchColumns: [], 4605e41f4b71Sopenharmony_ci predicates: predicates 4606e41f4b71Sopenharmony_ci }; 4607e41f4b71Sopenharmony_ci // Ensure that there are moving photos in Gallery. 4608e41f4b71Sopenharmony_ci let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 4609e41f4b71Sopenharmony_ci let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject(); 4610e41f4b71Sopenharmony_ci let requestOptions: photoAccessHelper.RequestOptions = { 4611e41f4b71Sopenharmony_ci deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE, 4612e41f4b71Sopenharmony_ci } 4613e41f4b71Sopenharmony_ci const handler = new MovingPhotoHandler(); 4614e41f4b71Sopenharmony_ci try { 4615e41f4b71Sopenharmony_ci let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler); 4616e41f4b71Sopenharmony_ci console.info("moving photo requested successfully, requestId: " + requestId); 4617e41f4b71Sopenharmony_ci } catch (err) { 4618e41f4b71Sopenharmony_ci console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`); 4619e41f4b71Sopenharmony_ci } 4620e41f4b71Sopenharmony_ci} 4621e41f4b71Sopenharmony_ci``` 4622e41f4b71Sopenharmony_ci 4623e41f4b71Sopenharmony_ci## MemberType 4624e41f4b71Sopenharmony_ci 4625e41f4b71Sopenharmony_citype MemberType = number | string | boolean 4626e41f4b71Sopenharmony_ci 4627e41f4b71Sopenharmony_ciDefines the types of the **PhotoAsset** members. 4628e41f4b71Sopenharmony_ci 4629e41f4b71Sopenharmony_ciThe member types are the union of the types listed in the following table. 4630e41f4b71Sopenharmony_ci 4631e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4632e41f4b71Sopenharmony_ci 4633e41f4b71Sopenharmony_ci| Type| Description| 4634e41f4b71Sopenharmony_ci| ---- | ---- | 4635e41f4b71Sopenharmony_ci| number | The member value is a number.| 4636e41f4b71Sopenharmony_ci| string | The member value is a string.| 4637e41f4b71Sopenharmony_ci| boolean | The member value is true or false.| 4638e41f4b71Sopenharmony_ci 4639e41f4b71Sopenharmony_ci## PhotoType 4640e41f4b71Sopenharmony_ci 4641e41f4b71Sopenharmony_ciEnumerates media file types. 4642e41f4b71Sopenharmony_ci 4643e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 4644e41f4b71Sopenharmony_ci 4645e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4646e41f4b71Sopenharmony_ci 4647e41f4b71Sopenharmony_ci| Name | Value| Description| 4648e41f4b71Sopenharmony_ci| ----- | ---- | ---- | 4649e41f4b71Sopenharmony_ci| IMAGE | 1 | Image.| 4650e41f4b71Sopenharmony_ci| VIDEO | 2 | Video.| 4651e41f4b71Sopenharmony_ci 4652e41f4b71Sopenharmony_ci## PhotoSubtype<sup>12+</sup> 4653e41f4b71Sopenharmony_ci 4654e41f4b71Sopenharmony_ciEnumerates the [PhotoAsset](#photoasset) types. 4655e41f4b71Sopenharmony_ci 4656e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 4657e41f4b71Sopenharmony_ci 4658e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4659e41f4b71Sopenharmony_ci 4660e41f4b71Sopenharmony_ci| Name | Value| Description| 4661e41f4b71Sopenharmony_ci| ----- | ---- | ---- | 4662e41f4b71Sopenharmony_ci| DEFAULT | 0 | Photo, which is the default type.| 4663e41f4b71Sopenharmony_ci| MOVING_PHOTO | 3 | Moving photo.| 4664e41f4b71Sopenharmony_ci| BURST | 4 | Burst photo.| 4665e41f4b71Sopenharmony_ci 4666e41f4b71Sopenharmony_ci## DynamicRangeType<sup>12+</sup> 4667e41f4b71Sopenharmony_ci 4668e41f4b71Sopenharmony_ciEnumerates the formats for displaying media assets. 4669e41f4b71Sopenharmony_ci 4670e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4671e41f4b71Sopenharmony_ci 4672e41f4b71Sopenharmony_ci| Name | Value| Description| 4673e41f4b71Sopenharmony_ci| ----- | ---- | ---- | 4674e41f4b71Sopenharmony_ci| SDR | 0 | Standard dynamic range (SDR).| 4675e41f4b71Sopenharmony_ci| HDR | 1 | High dynamic range (HDR). | 4676e41f4b71Sopenharmony_ci 4677e41f4b71Sopenharmony_ci## AlbumType 4678e41f4b71Sopenharmony_ci 4679e41f4b71Sopenharmony_ciEnumerates the album types. 4680e41f4b71Sopenharmony_ci 4681e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4682e41f4b71Sopenharmony_ci 4683e41f4b71Sopenharmony_ci| Name | Value | Description | 4684e41f4b71Sopenharmony_ci| ------------------- | ---- | ------------------------- | 4685e41f4b71Sopenharmony_ci| USER | 0 | User album. | 4686e41f4b71Sopenharmony_ci| SYSTEM | 1024 | System album. | 4687e41f4b71Sopenharmony_ci 4688e41f4b71Sopenharmony_ci## AlbumSubtype 4689e41f4b71Sopenharmony_ci 4690e41f4b71Sopenharmony_ciEnumerate the album subtypes. 4691e41f4b71Sopenharmony_ci 4692e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4693e41f4b71Sopenharmony_ci 4694e41f4b71Sopenharmony_ci| Name | Value | Description | 4695e41f4b71Sopenharmony_ci| --------------------------------- | ---------- | ------------------------------- | 4696e41f4b71Sopenharmony_ci| USER\_GENERIC | 1 | User album. | 4697e41f4b71Sopenharmony_ci| FAVORITE | 1025 | Favorites. | 4698e41f4b71Sopenharmony_ci| VIDEO | 1026 | Video album. | 4699e41f4b71Sopenharmony_ci| IMAGE<sup>12+</sup> | 1031 | Photo album. | 4700e41f4b71Sopenharmony_ci| ANY | 2147483647 | Any album. | 4701e41f4b71Sopenharmony_ci 4702e41f4b71Sopenharmony_ci## PhotoKeys 4703e41f4b71Sopenharmony_ci 4704e41f4b71Sopenharmony_ciDefines the key information about an image or video file. 4705e41f4b71Sopenharmony_ci 4706e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4707e41f4b71Sopenharmony_ci 4708e41f4b71Sopenharmony_ci| Name | Value | Description | 4709e41f4b71Sopenharmony_ci| ------------- | ------------------- | ---------------------------------------------------------- | 4710e41f4b71Sopenharmony_ci| URI | 'uri' | URI of the file.<br>**NOTE**: The photos queried cannot be sorted based on this field. | 4711e41f4b71Sopenharmony_ci| PHOTO_TYPE | 'media_type' | Type of the file. | 4712e41f4b71Sopenharmony_ci| DISPLAY_NAME | 'display_name' | File name displayed. | 4713e41f4b71Sopenharmony_ci| SIZE | 'size' | File size, in bytes. | 4714e41f4b71Sopenharmony_ci| DATE_ADDED | 'date_added' | Date when the file was added. The value is the number of seconds elapsed since the Epoch time (00:00:00 UTC on January 1, 1970). | 4715e41f4b71Sopenharmony_ci| DATE_MODIFIED | 'date_modified' | Date when the file content (not the file name) was last modified. The value is the number of seconds elapsed since the Epoch time.| 4716e41f4b71Sopenharmony_ci| DURATION | 'duration' | Duration, in ms. | 4717e41f4b71Sopenharmony_ci| WIDTH | 'width' | Image width, in pixels. | 4718e41f4b71Sopenharmony_ci| HEIGHT | 'height' | Image height, in pixels. | 4719e41f4b71Sopenharmony_ci| DATE_TAKEN | 'date_taken' | Date when the file (photo) was taken. The value is the number of seconds elapsed since the Epoch time. | 4720e41f4b71Sopenharmony_ci| ORIENTATION | 'orientation' | Orientation of the file, in degrees. | 4721e41f4b71Sopenharmony_ci| FAVORITE | 'is_favorite' | Whether the file is added to favorites. | 4722e41f4b71Sopenharmony_ci| TITLE | 'title' | Title in the file. | 4723e41f4b71Sopenharmony_ci| DATE_ADDED_MS<sup>12+</sup> | 'date_added_ms' | Date when the file was added. The value is the number of milliseconds elapsed since the Epoch time (00:00:00 UTC on January 1, 1970).<br>**NOTE**: The photos queried cannot be sorted based on this field. | 4724e41f4b71Sopenharmony_ci| DATE_MODIFIED_MS<sup>12+</sup> | 'date_modified_ms' | Date when the album file content (not the album name) was last modified. The value is the number of milliseconds elapsed since the Epoch time.<br>**NOTE**: The photos queried cannot be sorted based on this field.| 4725e41f4b71Sopenharmony_ci| PHOTO_SUBTYPE<sup>12+</sup> | 'subtype' | Subtype of the media file. | 4726e41f4b71Sopenharmony_ci| DYNAMIC_RANGE_TYPE<sup>12+</sup> | 'dynamic_range_type' | Dynamic range type of the media asset. | 4727e41f4b71Sopenharmony_ci| COVER_POSITION<sup>12+</sup> | 'cover_position' | Position of the moving photo cover, which is the video timestamp (in μs) corresponding to the cover frame.| 4728e41f4b71Sopenharmony_ci| BURST_KEY<sup>12+</sup> | 'burst_key' | Unique ID of a group of burst photos.| 4729e41f4b71Sopenharmony_ci| LCD_SIZE<sup>12+</sup> | 'lcd_size' | Width and height of an LCD image, in the format of a **width:height** string.| 4730e41f4b71Sopenharmony_ci| THM_SIZE<sup>12+</sup> | 'thm_size' | Width and height of a thumbnail image, in the format of a **width:height** string.| 4731e41f4b71Sopenharmony_ci 4732e41f4b71Sopenharmony_ci## AlbumKeys 4733e41f4b71Sopenharmony_ci 4734e41f4b71Sopenharmony_ciEnumerates the key album attributes. 4735e41f4b71Sopenharmony_ci 4736e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4737e41f4b71Sopenharmony_ci 4738e41f4b71Sopenharmony_ci| Name | Value | Description | 4739e41f4b71Sopenharmony_ci| ------------- | ------------------- | ---------------------------------------------------------- | 4740e41f4b71Sopenharmony_ci| URI | 'uri' | URI of the album. | 4741e41f4b71Sopenharmony_ci| ALBUM_NAME | 'album_name' | Name of the album. | 4742e41f4b71Sopenharmony_ci 4743e41f4b71Sopenharmony_ci## CreateOptions 4744e41f4b71Sopenharmony_ci 4745e41f4b71Sopenharmony_ciOptions for creating an image or video asset. 4746e41f4b71Sopenharmony_ci 4747e41f4b71Sopenharmony_ciNote that the title cannot: 4748e41f4b71Sopenharmony_ci- Contain the filename extension. 4749e41f4b71Sopenharmony_ci- Exceed 255 characters. 4750e41f4b71Sopenharmony_ci- Contain any of the following characters:<br>. .. \ / : * ? " ' ` < > | { } [ ] 4751e41f4b71Sopenharmony_ci 4752e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 4753e41f4b71Sopenharmony_ci 4754e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4755e41f4b71Sopenharmony_ci 4756e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 4757e41f4b71Sopenharmony_ci| ---------------------- | ------------------- | ---- | ------------------------------------------------ | 4758e41f4b71Sopenharmony_ci| title | string | No | Title of the image or video. | 4759e41f4b71Sopenharmony_ci| subtype<sup>12+</sup> | [PhotoSubtype](#photosubtype12) | No | Subtype of the image or video file.<br>**Atomic service API**: This API can be used in atomic services since API version 12. | 4760e41f4b71Sopenharmony_ci 4761e41f4b71Sopenharmony_ci 4762e41f4b71Sopenharmony_ci## FetchOptions 4763e41f4b71Sopenharmony_ci 4764e41f4b71Sopenharmony_ciDefines the options for fetching media files. 4765e41f4b71Sopenharmony_ci 4766e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4767e41f4b71Sopenharmony_ci 4768e41f4b71Sopenharmony_ci| Name | Type | Readable| Writable| Description | 4769e41f4b71Sopenharmony_ci| ---------------------- | ------------------- | ---- |---- | ------------------------------------------------ | 4770e41f4b71Sopenharmony_ci| fetchColumns | Array<string> | Yes | Yes | Names of the columns specified for query.<br>If this parameter is left blank for photos, photos are fetched by **'uri'**, **'media_type'**, **'subtype'**, and **'display_name'** by default. An error will be thrown if [get](#get) is used to obtain other attributes of this object. <br>Example: **fetchColumns: ['uri', 'title']**.<br>If this parameter is left blank for albums, albums are fetched by **'uri'** and **'album_name'** by default.| 4771e41f4b71Sopenharmony_ci| predicates | [dataSharePredicates.DataSharePredicates](../apis-arkdata/js-apis-data-dataSharePredicates.md#datasharepredicates) | Yes | Yes | Predicates that specify the fetch criteria.| 4772e41f4b71Sopenharmony_ci 4773e41f4b71Sopenharmony_ci## RequestOptions<sup>11+</sup> 4774e41f4b71Sopenharmony_ci 4775e41f4b71Sopenharmony_ciRepresents request options. 4776e41f4b71Sopenharmony_ci 4777e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4778e41f4b71Sopenharmony_ci 4779e41f4b71Sopenharmony_ci| Name | Type | Readable| Writable| Description | 4780e41f4b71Sopenharmony_ci| ---------------------- |---------------------------------| ---- |---- | ------------------------------------------------ | 4781e41f4b71Sopenharmony_ci| deliveryMode | [DeliveryMode](#deliverymode11) | Yes | Yes | Delivery mode of the requested asset. The value can be **FAST_MODE**, **HIGH_QUALITY_MODE**, or **BALANCE_MODE**.| 4782e41f4b71Sopenharmony_ci 4783e41f4b71Sopenharmony_ci## MediaChangeRequest<sup>11+</sup> 4784e41f4b71Sopenharmony_ci 4785e41f4b71Sopenharmony_ciMedia change request, which is the parent class of the asset change request and album change request. 4786e41f4b71Sopenharmony_ci 4787e41f4b71Sopenharmony_ci> **NOTE**<br>**MediaChangeRequest** takes effect only after [applyChanges](#applychanges11) is called. 4788e41f4b71Sopenharmony_ci 4789e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4790e41f4b71Sopenharmony_ci 4791e41f4b71Sopenharmony_ci## ResourceType<sup>11+</sup> 4792e41f4b71Sopenharmony_ci 4793e41f4b71Sopenharmony_ciEnumerates the types of the resources to write. 4794e41f4b71Sopenharmony_ci 4795e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 4796e41f4b71Sopenharmony_ci 4797e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4798e41f4b71Sopenharmony_ci 4799e41f4b71Sopenharmony_ci| Name | Value| Description| 4800e41f4b71Sopenharmony_ci| ----- | ---- | ---- | 4801e41f4b71Sopenharmony_ci| IMAGE_RESOURCE | 1 | Image resource.| 4802e41f4b71Sopenharmony_ci| VIDEO_RESOURCE | 2 | Video resource.| 4803e41f4b71Sopenharmony_ci 4804e41f4b71Sopenharmony_ci## ChangeData 4805e41f4b71Sopenharmony_ci 4806e41f4b71Sopenharmony_ciDefines the return value of the listener callback. 4807e41f4b71Sopenharmony_ci 4808e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4809e41f4b71Sopenharmony_ci 4810e41f4b71Sopenharmony_ci| Name | Type | Readable| Writable| Description | 4811e41f4b71Sopenharmony_ci| ------- | --------------------------- | ---- | ---- | ------------------------------------------------------------ | 4812e41f4b71Sopenharmony_ci| type | [NotifyType](#notifytype) | Yes | No | Notification type. | 4813e41f4b71Sopenharmony_ci| uris | Array<string> | Yes | No | All URIs with the same [NotifyType](#notifytype), which can be **PhotoAsset** or **Album**.| 4814e41f4b71Sopenharmony_ci| extraUris | Array<string> | Yes | No | URIs of the changed files in the album. | 4815e41f4b71Sopenharmony_ci 4816e41f4b71Sopenharmony_ci## NotifyType 4817e41f4b71Sopenharmony_ci 4818e41f4b71Sopenharmony_ciEnumerates the notification event types. 4819e41f4b71Sopenharmony_ci 4820e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4821e41f4b71Sopenharmony_ci 4822e41f4b71Sopenharmony_ci| Name | Value | Description | 4823e41f4b71Sopenharmony_ci| ------------------------- | ---- | -------------------------------- | 4824e41f4b71Sopenharmony_ci| NOTIFY_ADD | 0 | A file asset or album is added. | 4825e41f4b71Sopenharmony_ci| NOTIFY_UPDATE | 1 | A file asset or album is updated. | 4826e41f4b71Sopenharmony_ci| NOTIFY_REMOVE | 2 | A file asset or album is removed. | 4827e41f4b71Sopenharmony_ci| NOTIFY_ALBUM_ADD_ASSET | 3 | A file asset is added to the album.| 4828e41f4b71Sopenharmony_ci| NOTIFY_ALBUM_REMOVE_ASSET | 4 | A file asset is removed from the album.| 4829e41f4b71Sopenharmony_ci 4830e41f4b71Sopenharmony_ci## DefaultChangeUri 4831e41f4b71Sopenharmony_ci 4832e41f4b71Sopenharmony_ciEnumerates the **DefaultChangeUri** subtypes. 4833e41f4b71Sopenharmony_ci 4834e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4835e41f4b71Sopenharmony_ci 4836e41f4b71Sopenharmony_ci| Name | Value | Description | 4837e41f4b71Sopenharmony_ci| ----------------- | ----------------------- | ------------------------------------------------------------ | 4838e41f4b71Sopenharmony_ci| DEFAULT_PHOTO_URI | 'file://media/Photo' | Default **PhotoAsset** URI, which must be used with **forChildUris{true}** to subscribe to change notifications of all photo assets.| 4839e41f4b71Sopenharmony_ci| DEFAULT_ALBUM_URI | 'file://media/PhotoAlbum' | Default album URI, which must be used with **forChildUris{true}** to subscribe to change notifications of all albums.| 4840e41f4b71Sopenharmony_ci 4841e41f4b71Sopenharmony_ci## PhotoViewMIMETypes 4842e41f4b71Sopenharmony_ci 4843e41f4b71Sopenharmony_ciEnumerates the media file types that can be selected. 4844e41f4b71Sopenharmony_ci 4845e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 4846e41f4b71Sopenharmony_ci 4847e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4848e41f4b71Sopenharmony_ci 4849e41f4b71Sopenharmony_ci| Name | Value| Description | 4850e41f4b71Sopenharmony_ci|---------------------------------------| ---- |----------| 4851e41f4b71Sopenharmony_ci| IMAGE_TYPE | 'image/*' | Image. | 4852e41f4b71Sopenharmony_ci| VIDEO_TYPE | 'video/*' | Video. | 4853e41f4b71Sopenharmony_ci| IMAGE_VIDEO_TYPE | '\*/*' | Image and video.| 4854e41f4b71Sopenharmony_ci| MOVING_PHOTO_IMAGE_TYPE<sup>12+</sup> | 'image/movingPhoto' | Moving photo.<br>**Atomic service API**: This API can be used in atomic services since API version 12. | 4855e41f4b71Sopenharmony_ci 4856e41f4b71Sopenharmony_ci## RecommendationType<sup>11+</sup> 4857e41f4b71Sopenharmony_ci 4858e41f4b71Sopenharmony_ciEnumerates the types of recommended images. 4859e41f4b71Sopenharmony_ci 4860e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 4861e41f4b71Sopenharmony_ci 4862e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4863e41f4b71Sopenharmony_ci 4864e41f4b71Sopenharmony_ci| Name | Value| Description| 4865e41f4b71Sopenharmony_ci| ----- | ---- | ---- | 4866e41f4b71Sopenharmony_ci| QR_OR_BAR_CODE | 1 | QR code or barcode.| 4867e41f4b71Sopenharmony_ci| QR_CODE | 2 | QR code.| 4868e41f4b71Sopenharmony_ci| BAR_CODE | 3 | Barcode.| 4869e41f4b71Sopenharmony_ci| ID_CARD | 4 | ID card.| 4870e41f4b71Sopenharmony_ci| PROFILE_PICTURE | 5 | Profile.| 4871e41f4b71Sopenharmony_ci| PASSPORT<sup>12+</sup> | 6 | passport.<br>**Atomic service API**: This API can be used in atomic services since API version 12.| 4872e41f4b71Sopenharmony_ci| BANK_CARD<sup>12+</sup> | 7 | Bank card.<br>**Atomic service API**: This API can be used in atomic services since API version 12.| 4873e41f4b71Sopenharmony_ci| DRIVER_LICENSE<sup>12+</sup> | 8 | Driver license.<br>**Atomic service API**: This API can be used in atomic services since API version 12.| 4874e41f4b71Sopenharmony_ci| DRIVING_LICENSE<sup>12+</sup> | 9 | Vehicle license<br>**Atomic service API**: This API can be used in atomic services since API version 12.| 4875e41f4b71Sopenharmony_ci| FEATURED_SINGLE_PORTRAIT<sup>12+</sup> | 10 | Featured single portrait.<br>**Atomic service API**: This API can be used in atomic services since API version 12.| 4876e41f4b71Sopenharmony_ci 4877e41f4b71Sopenharmony_ci**Example** 4878e41f4b71Sopenharmony_ci 4879e41f4b71Sopenharmony_ci```ts 4880e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 4881e41f4b71Sopenharmony_ciasync function example() { 4882e41f4b71Sopenharmony_ci try { 4883e41f4b71Sopenharmony_ci let recommendOptions: photoAccessHelper.RecommendationOptions = { 4884e41f4b71Sopenharmony_ci recommendationType: photoAccessHelper.RecommendationType.ID_CARD 4885e41f4b71Sopenharmony_ci } 4886e41f4b71Sopenharmony_ci let options: photoAccessHelper.PhotoSelectOptions = { 4887e41f4b71Sopenharmony_ci MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE, 4888e41f4b71Sopenharmony_ci maxSelectNumber: 1, 4889e41f4b71Sopenharmony_ci recommendationOptions: recommendOptions 4890e41f4b71Sopenharmony_ci } 4891e41f4b71Sopenharmony_ci let photoPicker = new photoAccessHelper.PhotoViewPicker(); 4892e41f4b71Sopenharmony_ci photoPicker.select(options).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { 4893e41f4b71Sopenharmony_ci console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); 4894e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 4895e41f4b71Sopenharmony_ci console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`); 4896e41f4b71Sopenharmony_ci }); 4897e41f4b71Sopenharmony_ci } catch (error) { 4898e41f4b71Sopenharmony_ci let err: BusinessError = error as BusinessError; 4899e41f4b71Sopenharmony_ci console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`); 4900e41f4b71Sopenharmony_ci } 4901e41f4b71Sopenharmony_ci} 4902e41f4b71Sopenharmony_ci``` 4903e41f4b71Sopenharmony_ci 4904e41f4b71Sopenharmony_ci## TextContextInfo<sup>12+</sup> 4905e41f4b71Sopenharmony_ci 4906e41f4b71Sopenharmony_ciRepresents the text information of the recommended images. 4907e41f4b71Sopenharmony_ci 4908e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 4909e41f4b71Sopenharmony_ci 4910e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4911e41f4b71Sopenharmony_ci 4912e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 4913e41f4b71Sopenharmony_ci| ----------------------- | ------------------- | ---- | -------------------------------- | 4914e41f4b71Sopenharmony_ci| text | string | No | Text based on which images are recommended. The text cannot exceed 250 simplified Chinese characters.| 4915e41f4b71Sopenharmony_ci 4916e41f4b71Sopenharmony_ci**Example** 4917e41f4b71Sopenharmony_ci 4918e41f4b71Sopenharmony_ci```ts 4919e41f4b71Sopenharmony_ciimport { BusinessError } from '@kit.BasicServicesKit'; 4920e41f4b71Sopenharmony_ciasync function example() { 4921e41f4b71Sopenharmony_ci try { 4922e41f4b71Sopenharmony_ci let textInfo: photoAccessHelper.TextContextInfo = { 4923e41f4b71Sopenharmony_ci text: 'Panda at Shanghai Wild Zoo' 4924e41f4b71Sopenharmony_ci } 4925e41f4b71Sopenharmony_ci let recommendOptions: photoAccessHelper.RecommendationOptions = { 4926e41f4b71Sopenharmony_ci textContextInfo: textInfo 4927e41f4b71Sopenharmony_ci } 4928e41f4b71Sopenharmony_ci let options: photoAccessHelper.PhotoSelectOptions = { 4929e41f4b71Sopenharmony_ci MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE, 4930e41f4b71Sopenharmony_ci maxSelectNumber: 1, 4931e41f4b71Sopenharmony_ci recommendationOptions: recommendOptions 4932e41f4b71Sopenharmony_ci } 4933e41f4b71Sopenharmony_ci let photoPicker = new photoAccessHelper.PhotoViewPicker(); 4934e41f4b71Sopenharmony_ci photoPicker.select(options).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => { 4935e41f4b71Sopenharmony_ci console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult)); 4936e41f4b71Sopenharmony_ci }).catch((err: BusinessError) => { 4937e41f4b71Sopenharmony_ci console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`); 4938e41f4b71Sopenharmony_ci }); 4939e41f4b71Sopenharmony_ci } catch (error) { 4940e41f4b71Sopenharmony_ci let err: BusinessError = error as BusinessError; 4941e41f4b71Sopenharmony_ci console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`); 4942e41f4b71Sopenharmony_ci } 4943e41f4b71Sopenharmony_ci} 4944e41f4b71Sopenharmony_ci``` 4945e41f4b71Sopenharmony_ci 4946e41f4b71Sopenharmony_ci## RecommendationOptions<sup>11+</sup> 4947e41f4b71Sopenharmony_ci 4948e41f4b71Sopenharmony_ciDefines the image recommendation options. The image recommendation feature depends on the image data analysis capability, which varies with devices. 4949e41f4b71Sopenharmony_ci 4950e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 4951e41f4b71Sopenharmony_ci 4952e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4953e41f4b71Sopenharmony_ci 4954e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 4955e41f4b71Sopenharmony_ci| ----------------------- | ------------------- | ---- | -------------------------------- | 4956e41f4b71Sopenharmony_ci| recommendationType | [RecommendationType](#recommendationtype11) | No | Type of the recommended image.| 4957e41f4b71Sopenharmony_ci| textContextInfo<sup>12+</sup> | [TextContextInfo](#textcontextinfo12) | No | Text based on which images are recommended. If both **recommendationType** and **textContextInfo** are set, **textContextInfo** takes precedence over **recommendationType**.<br>**Atomic service API**: This API can be used in atomic services since API version 12.| 4958e41f4b71Sopenharmony_ci 4959e41f4b71Sopenharmony_ci## BaseSelectOptions<sup>12+</sup> 4960e41f4b71Sopenharmony_ci 4961e41f4b71Sopenharmony_ciDefines the basic options for selecting media assets from Gallery. 4962e41f4b71Sopenharmony_ci 4963e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4964e41f4b71Sopenharmony_ci 4965e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 4966e41f4b71Sopenharmony_ci| ----------------------- | ------------------- | ---- | -------------------------------- | 4967e41f4b71Sopenharmony_ci| MIMEType<sup>10+</sup> | [PhotoViewMIMETypes](#photoviewmimetypes) | No | Available media file types. **IMAGE_VIDEO_TYPE** is used by default.<br>**Atomic service API**: This API can be used in atomic services since API version 11.| 4968e41f4b71Sopenharmony_ci| maxSelectNumber<sup>10+</sup> | number | No | Maximum number of media files that can be selected.<br>Maximum value: **500**<br>Default value: **50**<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 4969e41f4b71Sopenharmony_ci| isPhotoTakingSupported<sup>11+</sup> | boolean | No | Whether photo taking is supported.<br>The value **true** means photo taking is supported; the value **false** means the opposite.<br>**Atomic service API**: This API can be used in atomic services since API version 11.| 4970e41f4b71Sopenharmony_ci| isSearchSupported<sup>11+</sup> | boolean | No | Whether the image is searchable.<br>The value **true** means the image is searchable; the value **false** means the opposite.<br>**Atomic service API**: This API can be used in atomic services since API version 11.| 4971e41f4b71Sopenharmony_ci| recommendationOptions<sup>11+</sup> | [RecommendationOptions](#recommendationoptions11) | No | Image recommendation parameters.<br>**Atomic service API**: This API can be used in atomic services since API version 11.| 4972e41f4b71Sopenharmony_ci| preselectedUris<sup>11+</sup> | Array<string> | No | URI of the preselected image.<br>**Atomic service API**: This API can be used in atomic services since API version 11.| 4973e41f4b71Sopenharmony_ci| isPreviewForSingleSelectionSupported<sup>12+</sup> | boolean | No | Whether to enable full image preview if a single image is selected.<br>The value **true** means to enable full image preview; the value **false** means the opposite.<br>Default value: **true**<br>**Atomic service API**: This API can be used in atomic services since API version 12.| 4974e41f4b71Sopenharmony_ci 4975e41f4b71Sopenharmony_ci## PhotoSelectOptions 4976e41f4b71Sopenharmony_ci 4977e41f4b71Sopenharmony_ciDefines additional options for selecting media assets from Gallery. It inherits from **BaseSelectOptions**. 4978e41f4b71Sopenharmony_ci 4979e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 4980e41f4b71Sopenharmony_ci 4981e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4982e41f4b71Sopenharmony_ci 4983e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 4984e41f4b71Sopenharmony_ci| ----------------------- | ------------------- | ---- | -------------------------------- | 4985e41f4b71Sopenharmony_ci| isEditSupported<sup>11+</sup> | boolean | No | Whether the image can be edited.<br>The value **true** means the image can be edited; the value **false** means the opposite. | 4986e41f4b71Sopenharmony_ci| isOriginalSupported<sup>12+</sup> | boolean | No | Whether to display the button for selecting the original image. <br>The value **true** means to display the button; the value **false** means the opposite.<br>Default value: **true**<br>**Atomic service API**: This API can be used in atomic services since API version 12. | 4987e41f4b71Sopenharmony_ci| subWindowName<sup>12+</sup> | string | No | Name of the sub-window.<br>**Atomic service API**: This API can be used in atomic services since API version 12. | 4988e41f4b71Sopenharmony_ci 4989e41f4b71Sopenharmony_ci## PhotoSelectResult 4990e41f4b71Sopenharmony_ci 4991e41f4b71Sopenharmony_ciDefines information about the images or videos selected. 4992e41f4b71Sopenharmony_ci 4993e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 11. 4994e41f4b71Sopenharmony_ci 4995e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 4996e41f4b71Sopenharmony_ci 4997e41f4b71Sopenharmony_ci| Name | Type | Readable| Writable| Description | 4998e41f4b71Sopenharmony_ci| ----------------------- | ------------------- | ---- | ---- | ------------------------------ | 4999e41f4b71Sopenharmony_ci| photoUris | Array<string> | Yes | Yes | URIs of the images or videos selected. The URI array can be used only by calling [photoAccessHelper.getAssets](#getassets) with temporary authorization. For details about how to use the media file URI, see [Using a Media File URI](../../file-management/user-file-uri-intro.md#using-a-media-file-uri).| 5000e41f4b71Sopenharmony_ci| isOriginalPhoto | boolean | Yes | Yes | Whether the selected media asset is the original image.| 5001e41f4b71Sopenharmony_ci 5002e41f4b71Sopenharmony_ci 5003e41f4b71Sopenharmony_ci## DeliveryMode<sup>11+</sup> 5004e41f4b71Sopenharmony_ci 5005e41f4b71Sopenharmony_ciEnumerates the asset delivery modes. 5006e41f4b71Sopenharmony_ci 5007e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 5008e41f4b71Sopenharmony_ci 5009e41f4b71Sopenharmony_ci| Name | Value| Description| 5010e41f4b71Sopenharmony_ci| ----- | ---- | ---- | 5011e41f4b71Sopenharmony_ci| FAST_MODE | 0 | Fast mode.| 5012e41f4b71Sopenharmony_ci| HIGH_QUALITY_MODE | 1 | High-quality mode.| 5013e41f4b71Sopenharmony_ci| BALANCE_MODE | 2 | Balance mode.| 5014e41f4b71Sopenharmony_ci 5015e41f4b71Sopenharmony_ci## PhotoCreationConfig<sup>12+</sup> 5016e41f4b71Sopenharmony_ci 5017e41f4b71Sopenharmony_ciRepresents the configuration for saving a media asset (image or video) to the media library, including the file name. 5018e41f4b71Sopenharmony_ci 5019e41f4b71Sopenharmony_ci**Atomic service API**: This API can be used in atomic services since API version 12. 5020e41f4b71Sopenharmony_ci 5021e41f4b71Sopenharmony_ci**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 5022e41f4b71Sopenharmony_ci 5023e41f4b71Sopenharmony_ci| Name | Type | Mandatory| Description | 5024e41f4b71Sopenharmony_ci| ---------------------- | ------------------- | ---- | ------------------------------------------------ | 5025e41f4b71Sopenharmony_ci| title | string | No | Title of the image or video.| 5026e41f4b71Sopenharmony_ci| fileNameExtension | string | Yes | File name extension, for example, **'jpg'**.| 5027e41f4b71Sopenharmony_ci| photoType | [PhotoType](#phototype) | Yes | Type of the file to create, which can be **IMAGE** or **VIDEO**.| 5028e41f4b71Sopenharmony_ci| subtype | [PhotoSubtype](#photosubtype12) | No | Subtype of the image or video file, which can be **DEFAULT** or **MOVING_PHOTO**.| 5029