1# Class (MediaAssetChangeRequest) 2<!--Kit: Media Library Kit--> 3<!--Subsystem: Multimedia--> 4<!--Owner: @yixiaoff--> 5<!--SE: @liweilu1--> 6<!--TSE: @xchaosioda--> 7 8> **NOTE** 9> 10> - 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. 11> - The initial APIs of this class are supported since API version 11. 12 13MediaAssetChangeRequest implements [MediaChangeRequest](arkts-apis-photoAccessHelper-i.md#mediachangerequest11) 14 15MediaAssetChangeRequest represents a media asset change request. 16 17**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 18 19## Modules to Import 20 21```ts 22import { photoAccessHelper } from '@kit.MediaLibraryKit'; 23``` 24 25## constructor<sup>11+</sup> 26 27constructor(asset: PhotoAsset) 28 29Constructor used to initialize an asset change request. 30 31**Atomic service API**: This API can be used in atomic services since API version 12. 32 33**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 34 35**Parameters** 36 37| Name | Type | Mandatory| Description | 38| -------- | ------------------------- | ---- | ---------- | 39| asset | [PhotoAsset](arkts-apis-photoAccessHelper-PhotoAsset.md) | Yes | Assets to change.| 40 41**Error codes** 42 43For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 44 45| ID| Error Message| 46| -------- | ---------------------------------------- | 47| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 48| 14000011 | System inner fail. | 49 50**Example** 51 52For details about how to create a phAccessHelper instance, see the example provided in [photoAccessHelper.getPhotoAccessHelper](arkts-apis-photoAccessHelper-f.md#photoaccesshelpergetphotoaccesshelper). 53 54```ts 55import { dataSharePredicates } from '@kit.ArkData'; 56 57async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper) { 58 console.info('MediaAssetChangeRequest constructorDemo'); 59 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 60 let fetchOptions: photoAccessHelper.FetchOptions = { 61 fetchColumns: [], 62 predicates: predicates 63 }; 64 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 65 let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 66 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(photoAsset); 67} 68``` 69 70## createImageAssetRequest<sup>11+</sup> 71 72static createImageAssetRequest(context: Context, fileUri: string): MediaAssetChangeRequest 73 74Creates an image asset change request. 75 76Use **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). 77 78**Atomic service API**: This API can be used in atomic services since API version 12. 79 80**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 81 82**Parameters** 83 84| Name | Type | Mandatory| Description | 85| ------- | ------- | ---- | -------------------------- | 86| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 87| fileUri | string | Yes | Data source of the image asset, which is specified by a URI in the application sandbox directory. Example: **'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'**.| 88 89**Return value** 90 91| Type | Description | 92| --------------------------------------- | ----------------- | 93| [MediaAssetChangeRequest](arkts-apis-photoAccessHelper-MediaAssetChangeRequest.md) | **MediaAssetChangeRequest** created.| 94 95**Error codes** 96 97For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 98 99| ID| Error Message| 100| -------- | ---------------------------------------- | 101| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 102| 13900002 | The file corresponding to the URI is not in the app sandbox. | 103| 14000011 | System inner fail. | 104 105**Example** 106 107For details about how to create a phAccessHelper instance, see the example provided in [photoAccessHelper.getPhotoAccessHelper](arkts-apis-photoAccessHelper-f.md#photoaccesshelpergetphotoaccesshelper). 108 109```ts 110async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper, context: Context) { 111 console.info('createImageAssetRequestDemo'); 112 try { 113 // Ensure that the asset specified by fileUri exists. 114 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; 115 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createImageAssetRequest(context, fileUri); 116 await phAccessHelper.applyChanges(assetChangeRequest); 117 console.info('apply createImageAssetRequest successfully'); 118 } catch (err) { 119 console.error(`createImageAssetRequestDemo failed with error: ${err.code}, ${err.message}`); 120 } 121} 122``` 123 124## createVideoAssetRequest<sup>11+</sup> 125 126static createVideoAssetRequest(context: Context, fileUri: string): MediaAssetChangeRequest 127 128Creates a video asset change request. 129 130Use **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). 131 132**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 133 134**Parameters** 135 136| Name | Type | Mandatory| Description | 137| ------- | ------- | ---- | -------------------------- | 138| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 139| fileUri | string | Yes | Data source of the video asset, which is specified by a URI in the application sandbox directory. Example: **'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.mp4'**.| 140 141**Return value** 142 143| Type | Description | 144| --------------------------------------- | ----------------- | 145| [MediaAssetChangeRequest](arkts-apis-photoAccessHelper-MediaAssetChangeRequest.md) | **MediaAssetChangeRequest** created.| 146 147**Error codes** 148 149For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 150 151| ID| Error Message| 152| -------- | ---------------------------------------- | 153| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 154| 13900002 | The file corresponding to the URI is not in the app sandbox. | 155| 14000011 | System inner fail. | 156 157**Example** 158 159For details about how to create a phAccessHelper instance, see the example provided in [photoAccessHelper.getPhotoAccessHelper](arkts-apis-photoAccessHelper-f.md#photoaccesshelpergetphotoaccesshelper). 160 161```ts 162async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper, context: Context) { 163 console.info('createVideoAssetRequestDemo'); 164 try { 165 // Ensure that the asset specified by fileUri exists. 166 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.mp4'; 167 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createVideoAssetRequest(context, fileUri); 168 await phAccessHelper.applyChanges(assetChangeRequest); 169 console.info('apply createVideoAssetRequest successfully'); 170 } catch (err) { 171 console.error(`createVideoAssetRequestDemo failed with error: ${err.code}, ${err.message}`); 172 } 173} 174``` 175 176## createAssetRequest<sup>11+</sup> 177 178static createAssetRequest(context: Context, photoType: PhotoType, extension: string, options?: CreateOptions): MediaAssetChangeRequest 179 180Create an asset change request based on the file type and filename extension. 181 182**Atomic service API**: This API can be used in atomic services since API version 11. 183 184**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 185 186**Parameters** 187 188| Name | Type | Mandatory| Description | 189| ------- | ------- | ---- | -------------------------- | 190| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 191| photoType | [PhotoType](arkts-apis-photoAccessHelper-e.md#phototype) | Yes | Type of the file to create, which can be **IMAGE** or **VIDEO**. | 192| extension | string | Yes | File name extension, for example, **'jpg'**. | 193| options | [CreateOptions](arkts-apis-photoAccessHelper-i.md#createoptions) | No | Options for creating the image or video asset, for example, **{title: 'testPhoto'}**. | 194 195**Return value** 196 197| Type | Description | 198| --------------------------------------- | ----------------- | 199| [MediaAssetChangeRequest](arkts-apis-photoAccessHelper-MediaAssetChangeRequest.md) | **MediaAssetChangeRequest** created.| 200 201**Error codes** 202 203For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 204 205| ID| Error Message| 206| -------- | ---------------------------------------- | 207| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 208| 14000011 | System inner fail. | 209 210**Example** 211 212For details about how to create a phAccessHelper instance, see the example provided in [photoAccessHelper.getPhotoAccessHelper](arkts-apis-photoAccessHelper-f.md#photoaccesshelpergetphotoaccesshelper). 213 214```ts 215async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper, context: Context) { 216 console.info('createAssetRequestDemo'); 217 try { 218 let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; 219 let extension: string = 'jpg'; 220 let options: photoAccessHelper.CreateOptions = { 221 title: 'testPhoto' 222 } 223 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension, options); 224 // Ensure that the asset specified by fileUri exists. 225 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; 226 assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, fileUri); 227 await phAccessHelper.applyChanges(assetChangeRequest); 228 console.info('apply createAssetRequest successfully'); 229 } catch (err) { 230 console.error(`createAssetRequestDemo failed with error: ${err.code}, ${err.message}`); 231 } 232} 233``` 234 235## deleteAssets<sup>11+</sup> 236 237static deleteAssets(context: Context, assets: Array<PhotoAsset>): Promise<void> 238 239Deletes media assets. This API uses a promise to return the result. The deleted assets are moved to the trash. 240 241**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 242 243**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 244 245**Parameters** 246 247| Name | Type | Mandatory| Description | 248| ------- | ------- | ---- | -------------------------- | 249| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 250| assets | Array<[PhotoAsset](arkts-apis-photoAccessHelper-PhotoAsset.md)> | Yes | Array of assets to delete.| 251 252**Return value** 253 254| Type | Description | 255| --------------------------------------- | ----------------- | 256| Promise<void>| Promise that returns no value.| 257 258**Error codes** 259 260For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 261 262| ID| Error Message| 263| -------- | ---------------------------------------- | 264| 201 | Permission denied. | 265| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 266| 14000011 | System inner fail. | 267 268**Example** 269 270For details about how to create a phAccessHelper instance, see the example provided in [photoAccessHelper.getPhotoAccessHelper](arkts-apis-photoAccessHelper-f.md#photoaccesshelpergetphotoaccesshelper). 271 272```ts 273import { dataSharePredicates } from '@kit.ArkData'; 274 275async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper, context: Context) { 276 console.info('deleteAssetsDemo'); 277 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 278 let fetchOptions: photoAccessHelper.FetchOptions = { 279 fetchColumns: [], 280 predicates: predicates 281 }; 282 try { 283 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 284 let photoAssetList: Array<photoAccessHelper.PhotoAsset> = await fetchResult.getAllObjects(); 285 await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, photoAssetList); 286 console.info('deleteAssets successfully'); 287 } catch (err) { 288 console.error(`deleteAssetsDemo failed with error: ${err.code}, ${err.message}`); 289 } 290} 291``` 292 293## deleteAssets<sup>11+</sup> 294 295static deleteAssets(context: Context, uriList: Array<string>): Promise<void> 296 297Deletes media assets. This API uses a promise to return the result. The deleted assets are moved to the trash. 298 299**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 300 301**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 302 303**Parameters** 304 305| Name | Type | Mandatory| Description | 306| ------- | ------- | ---- | -------------------------- | 307| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes | Context of the ability instance.| 308| uriList | Array<string> | Yes | URIs of the media files to delete.| 309 310**Return value** 311 312| Type | Description | 313| --------------------------------------- | ----------------- | 314| Promise<void>| Promise that returns no value.| 315 316**Error codes** 317 318For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 319 320| ID| Error Message| 321| -------- | ---------------------------------------- | 322| 201 | Permission denied. | 323| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 324| 14000002 | The uri format is incorrect or does not exist. | 325| 14000011 | System inner fail. | 326 327**Example** 328 329For details about how to create a phAccessHelper instance, see the example provided in [photoAccessHelper.getPhotoAccessHelper](arkts-apis-photoAccessHelper-f.md#photoaccesshelpergetphotoaccesshelper). 330 331```ts 332import { dataSharePredicates } from '@kit.ArkData'; 333 334async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper, context: Context) { 335 console.info('deleteAssetsDemo'); 336 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 337 let fetchOptions: photoAccessHelper.FetchOptions = { 338 fetchColumns: [], 339 predicates: predicates 340 }; 341 try { 342 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions); 343 let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject(); 344 await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [asset.uri]); 345 console.info('deleteAssets successfully'); 346 } catch (err) { 347 console.error(`deleteAssetsDemo failed with error: ${err.code}, ${err.message}`); 348 } 349} 350``` 351 352## getAsset<sup>11+</sup> 353 354getAsset(): PhotoAsset 355 356Obtains the asset in this asset change request. 357 358**NOTE**: For the change request used to create an asset, this API returns **null** before [applyChanges](arkts-apis-photoAccessHelper-PhotoAccessHelper.md#applychanges11) is called to apply the changes. 359 360**Atomic service API**: This API can be used in atomic services since API version 12. 361 362**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 363 364**Return value** 365 366| Type | Description | 367| --------------------------------------- | ----------------- | 368| [PhotoAsset](arkts-apis-photoAccessHelper-PhotoAsset.md) | Asset obtained.| 369 370**Error codes** 371 372For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 373 374| ID| Error Message| 375| -------- | ---------------------------------------- | 376| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 377| 14000011 | System inner fail. | 378 379**Example** 380 381For details about how to create a phAccessHelper instance, see the example provided in [photoAccessHelper.getPhotoAccessHelper](arkts-apis-photoAccessHelper-f.md#photoaccesshelpergetphotoaccesshelper). 382 383```ts 384async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper, context: Context) { 385 console.info('getAssetDemo'); 386 try { 387 // Ensure that the asset specified by fileUri exists. 388 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; 389 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createImageAssetRequest(context, fileUri); 390 await phAccessHelper.applyChanges(assetChangeRequest); 391 let asset: photoAccessHelper.PhotoAsset = assetChangeRequest.getAsset(); 392 console.info('create asset successfully with uri = ' + asset.uri); 393 } catch (err) { 394 console.error(`getAssetDemo failed with error: ${err.code}, ${err.message}`); 395 } 396} 397``` 398 399## setTitle<sup>11+</sup> 400 401setTitle(title: string): void 402 403Sets the media asset title. 404 405**Atomic service API**: This API can be used in atomic services since API version 12. 406 407**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 408 409**Parameters** 410 411| Name | Type | Mandatory | Description | 412| ---------- | ------- | ---- | ---------------------------------- | 413| title | string | Yes | Title to set.| 414 415The title must meet the following requirements: 416- It does not contain a file name extension. 417- The file name cannot exceed 255 characters. 418- It does not contain any of the following characters:<br> . \ / : * ? " ' ` < > | { } [ ] 419 420**Error codes** 421 422For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 423 424| ID| Error Message| 425| -------- | ---------------------------------------- | 426| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 427| 14000011 | System inner fail. | 428 429**Example** 430 431For details about how to create a phAccessHelper instance, see the example provided in [photoAccessHelper.getPhotoAccessHelper](arkts-apis-photoAccessHelper-f.md#photoaccesshelpergetphotoaccesshelper). 432 433```ts 434import { dataSharePredicates } from '@kit.ArkData'; 435import { BusinessError } from '@kit.BasicServicesKit'; 436 437async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper) { 438 console.info('setTitleDemo'); 439 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 440 let fetchOption: photoAccessHelper.FetchOptions = { 441 fetchColumns: [], 442 predicates: predicates 443 }; 444 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 445 let asset = await fetchResult.getFirstObject(); 446 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); 447 let newTitle: string = 'newTitle'; 448 assetChangeRequest.setTitle(newTitle); 449 phAccessHelper.applyChanges(assetChangeRequest).then(() => { 450 console.info('apply setTitle successfully'); 451 }).catch((err: BusinessError) => { 452 console.error(`apply setTitle failed with error: ${err.code}, ${err.message}`); 453 }); 454} 455``` 456 457## getWriteCacheHandler<sup>11+</sup> 458 459getWriteCacheHandler(): Promise<number> 460 461Obtains the handler used for writing a file to cache. 462 463**NOTE**: For the same asset change request, this API cannot be repeatedly called after a temporary file write handle is successfully obtained. 464 465**Required permissions**: ohos.permission.WRITE_IMAGEVIDEO 466 467**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 468 469**Return value** 470 471| Type | Description | 472| --------------------------------------- | ----------------- | 473| Promise<number> | Promise used to return the write handle obtained.| 474 475**Error codes** 476 477For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 478 479| ID| Error Message| 480| -------- | ---------------------------------------- | 481| 201 | Permission denied. | 482| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 483| 14000011 | System inner fail. | 484| 14000016 | Operation Not Support. | 485 486**Example** 487 488For details about how to create a phAccessHelper instance, see the example provided in [photoAccessHelper.getPhotoAccessHelper](arkts-apis-photoAccessHelper-f.md#photoaccesshelpergetphotoaccesshelper). 489 490```ts 491import { fileIo } from '@kit.CoreFileKit'; 492 493async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper, context: Context) { 494 console.info('getWriteCacheHandlerDemo'); 495 try { 496 let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.VIDEO; 497 let extension: string = 'mp4'; 498 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension); 499 let fd: number = await assetChangeRequest.getWriteCacheHandler(); 500 console.info('getWriteCacheHandler successfully'); 501 // write date into fd.. 502 await fileIo.close(fd); 503 await phAccessHelper.applyChanges(assetChangeRequest); 504 } catch (err) { 505 console.error(`getWriteCacheHandlerDemo failed with error: ${err.code}, ${err.message}`); 506 } 507} 508``` 509 510## addResource<sup>11+</sup> 511 512addResource(type: ResourceType, fileUri: string): void 513 514Adds a resource using [fileUri](../apis-core-file-kit/js-apis-file-fileuri.md). 515 516**NOTE**: 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. 517 518**Atomic service API**: This API can be used in atomic services since API version 11. 519 520**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 521 522**Parameters** 523 524| Name | Type | Mandatory| Description | 525| ------- | ------- | ---- | -------------------------- | 526| type | [ResourceType](arkts-apis-photoAccessHelper-e.md#resourcetype11) | Yes | Type of the resource to add.| 527| fileUri | string | Yes | Data source of the resource to be added, which is specified by a URI in the application sandbox directory. Example: **'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'**.| 528 529**Error codes** 530 531For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 532 533| ID| Error Message| 534| -------- | ---------------------------------------- | 535| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 536| 13900002 | The file corresponding to the URI is not in the app sandbox. | 537| 14000011 | System inner fail. | 538| 14000016 | Operation Not Support. | 539 540**Example** 541 542For details about how to create a phAccessHelper instance, see the example provided in [photoAccessHelper.getPhotoAccessHelper](arkts-apis-photoAccessHelper-f.md#photoaccesshelpergetphotoaccesshelper). 543 544```ts 545async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper, context: Context) { 546 console.info('addResourceByFileUriDemo'); 547 try { 548 let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; 549 let extension: string = 'jpg'; 550 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension); 551 // Ensure that the asset specified by fileUri exists. 552 let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg'; 553 assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, fileUri); 554 await phAccessHelper.applyChanges(assetChangeRequest); 555 console.info('addResourceByFileUri successfully'); 556 } catch (err) { 557 console.error(`addResourceByFileUriDemo failed with error: ${err.code}, ${err.message}`); 558 } 559} 560``` 561 562## addResource<sup>11+</sup> 563 564addResource(type: ResourceType, data: ArrayBuffer): void 565 566Adds a resource using **ArrayBuffer** data. 567 568**NOTE**: 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. 569 570**Atomic service API**: This API can be used in atomic services since API version 11. 571 572**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 573 574**Parameters** 575 576| Name | Type | Mandatory| Description | 577| ------- | ------- | ---- | -------------------------- | 578| type | [ResourceType](arkts-apis-photoAccessHelper-e.md#resourcetype11) | Yes | Type of the resource to add.| 579| data | ArrayBuffer | Yes | Data of the resource to add.| 580 581**Error codes** 582 583For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 584 585| ID| Error Message| 586| -------- | ---------------------------------------- | 587| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 588| 14000011 | System inner fail. | 589| 14000016 | Operation Not Support. | 590 591**Example** 592 593For details about how to create a phAccessHelper instance, see the example provided in [photoAccessHelper.getPhotoAccessHelper](arkts-apis-photoAccessHelper-f.md#photoaccesshelpergetphotoaccesshelper). 594 595```ts 596async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper, context: Context) { 597 console.info('addResourceByArrayBufferDemo'); 598 try { 599 let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE; 600 let extension: string = 'jpg'; 601 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension); 602 let buffer: ArrayBuffer = new ArrayBuffer(2048); 603 assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, buffer); 604 await phAccessHelper.applyChanges(assetChangeRequest); 605 console.info('addResourceByArrayBuffer successfully'); 606 } catch (err) { 607 console.error(`addResourceByArrayBufferDemo failed with error: ${err.code}, ${err.message}`); 608 } 609} 610``` 611 612## saveCameraPhoto<sup>12+</sup> 613 614saveCameraPhoto(): void 615 616Saves the photo taken by the camera. 617 618**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 619 620**Error codes** 621 622For details about the error codes, see [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 623 624| ID| Error Message| 625| -------- | ---------------------------------------- | 626| 14000011 | System inner fail. | 627| 14000016 | Operation Not Support. | 628 629**Example** 630 631For details about how to create a phAccessHelper instance, see the example provided in [photoAccessHelper.getPhotoAccessHelper](arkts-apis-photoAccessHelper-f.md#photoaccesshelpergetphotoaccesshelper). 632 633```ts 634async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper, asset: photoAccessHelper.PhotoAsset) { 635 console.info('saveCameraPhotoDemo'); 636 try { 637 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); 638 assetChangeRequest.saveCameraPhoto(); 639 await phAccessHelper.applyChanges(assetChangeRequest); 640 console.info('apply saveCameraPhoto successfully'); 641 } catch (err) { 642 console.error(`apply saveCameraPhoto failed with error: ${err.code}, ${err.message}`); 643 } 644} 645``` 646 647## saveCameraPhoto<sup>13+</sup> 648 649saveCameraPhoto(imageFileType: ImageFileType): void 650 651Saves the photo taken by the camera. 652 653**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 654 655**Parameters** 656 657| Name | Type | Mandatory| Description | 658| -------- | ------------------------- | ---- | ---------- | 659| imageFileType | [ImageFileType](arkts-apis-photoAccessHelper-e.md#imagefiletype13) | Yes | File type of the photo to save.| 660 661**Error codes** 662 663For details about the error codes, see [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 664 665| ID| Error Message| 666| -------- | ---------------------------------------- | 667| 14000011 | System inner fail. | 668| 14000016 | Operation Not Support. | 669 670**Example** 671 672For details about how to create a phAccessHelper instance, see the example provided in [photoAccessHelper.getPhotoAccessHelper](arkts-apis-photoAccessHelper-f.md#photoaccesshelpergetphotoaccesshelper). 673 674```ts 675import { dataSharePredicates } from '@kit.ArkData'; 676import { image } from '@kit.ImageKit'; 677 678async function example(context: Context, asset: photoAccessHelper.PhotoAsset) { 679 console.info('saveCameraPhotoDemo'); 680 try { 681 let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context); 682 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); 683 assetChangeRequest.saveCameraPhoto(photoAccessHelper.ImageFileType.JPEG); 684 await phAccessHelper.applyChanges(assetChangeRequest); 685 console.info('apply saveCameraPhoto successfully'); 686 } catch (err) { 687 console.error(`apply saveCameraPhoto failed with error: ${err.code}, ${err.message}`); 688 } 689} 690``` 691 692## discardCameraPhoto<sup>12+</sup> 693 694discardCameraPhoto(): void 695 696Discards the photo taken by the camera. 697 698**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 699 700**Error codes** 701 702For details about the error codes, see [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 703 704| ID| Error Message| 705| -------- | ---------------------------------------- | 706| 14000011 | Internal system error. | 707| 14000016 | Operation Not Support. | 708 709**Example** 710 711For details about how to create a phAccessHelper instance, see the example provided in [photoAccessHelper.getPhotoAccessHelper](arkts-apis-photoAccessHelper-f.md#photoaccesshelpergetphotoaccesshelper). 712 713```ts 714async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper, asset: photoAccessHelper.PhotoAsset) { 715 console.info('discardCameraPhotoDemo'); 716 try { 717 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); 718 assetChangeRequest.discardCameraPhoto(); 719 await phAccessHelper.applyChanges(assetChangeRequest); 720 console.info('apply discardCameraPhoto successfully'); 721 } catch (err) { 722 console.error(`apply discardCameraPhoto failed with error: ${err.code}, ${err.message}`); 723 } 724} 725``` 726 727## setOrientation<sup>15+</sup> 728 729setOrientation(orientation: number): void 730 731Sets the orientation of this image. 732 733**System capability**: SystemCapability.FileManagement.PhotoAccessHelper.Core 734 735**Parameters** 736 737| Name | Type | Mandatory | Description | 738| ---------- | ------- | ---- | ---------------------------------- | 739| orientation | number | Yes | Rotation angle of the image to set. The value can only be **0**, **90**, **180**, or **270**.| 740 741**Error codes** 742 743For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [File Management Error Codes](../apis-core-file-kit/errorcode-filemanagement.md). 744 745| ID| Error Message| 746| -------- | ---------------------------------------- | 747| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. | 748| 14000011 | Internal system error. | 749 750**Example** 751 752For details about how to create a phAccessHelper instance, see the example provided in [photoAccessHelper.getPhotoAccessHelper](arkts-apis-photoAccessHelper-f.md#photoaccesshelpergetphotoaccesshelper). 753 754```ts 755import { dataSharePredicates } from '@kit.ArkData'; 756import { BusinessError } from '@kit.BasicServicesKit'; 757 758async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper) { 759 console.info('setOrientationDemo'); 760 let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates(); 761 let fetchOption: photoAccessHelper.FetchOptions = { 762 fetchColumns: [], 763 predicates: predicates 764 }; 765 let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption); 766 let asset = await fetchResult.getFirstObject(); 767 let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset); 768 assetChangeRequest.setOrientation(90); 769 phAccessHelper.applyChanges(assetChangeRequest).then(() => { 770 console.info('apply setOrientation successfully'); 771 }).catch((err: BusinessError) => { 772 console.error(`apply setOrientation failed with error: ${err.code}, ${err.message}`); 773 }); 774} 775``` 776