• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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&lt;PhotoAsset&gt;): Promise&lt;void&gt;
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&lt;[PhotoAsset](arkts-apis-photoAccessHelper-PhotoAsset.md)&gt; | Yes  | Array of assets to delete.|
251
252**Return value**
253
254| Type                                   | Description             |
255| --------------------------------------- | ----------------- |
256| Promise&lt;void&gt;| 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&lt;string&gt;): Promise&lt;void&gt;
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&lt;string&gt; | Yes  | URIs of the media files to delete.|
309
310**Return value**
311
312| Type                                   | Description             |
313| --------------------------------------- | ----------------- |
314| Promise&lt;void&gt;| 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&lt;number&gt;
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&lt;number&gt; | 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