• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.file.photoAccessHelper (相册管理模块)
2
3该模块提供相册管理模块能力,包括创建相册以及访问、修改相册中的媒体数据信息等。
4
5> **说明:**
6>
7> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```ts
12import { photoAccessHelper } from '@kit.MediaLibraryKit';
13```
14
15## photoAccessHelper.getPhotoAccessHelper
16
17getPhotoAccessHelper(context: Context): PhotoAccessHelper
18
19获取相册管理模块的实例,用于访问和修改相册中的媒体文件。
20
21**模型约束**: 此接口仅可在Stage模型下使用。
22
23**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
24
25**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
26
27**参数:**
28
29| 参数名  | 类型    | 必填 | 说明                       |
30| ------- | ------- | ---- | -------------------------- |
31| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是   | 传入Ability实例的Context。 |
32
33**返回值:**
34
35| 类型                            | 说明    |
36| ----------------------------- | :---- |
37| [PhotoAccessHelper](#photoaccesshelper) | 相册管理模块的实例。 |
38
39**错误码:**
40
41接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
42
43| 错误码ID | 错误信息 |
44| -------- | ---------------------------------------- |
45| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
46
47**示例:**
48
49```ts
50//此处获取的phAccessHelper实例为全局对象,后续使用到phAccessHelper的地方默认为使用此处获取的对象,如未添加此段代码报phAccessHelper未定义的错误请自行添加。
51let context = getContext(this);
52let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
53```
54
55## PhotoAccessHelper
56
57### getAssets
58
59getAssets(options: FetchOptions, callback: AsyncCallback<FetchResult<PhotoAsset>>): void
60
61获取图片和视频资源,使用callback方式返回结果。
62
63**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
64
65**需要权限**:ohos.permission.READ_IMAGEVIDEO
66
67 通过picker的方式调用该接口来查询指定uri对应的图片或视频资源,不需要申请'ohos.permission.READ_IMAGEVIDEO'权限,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。
68
69**参数:**
70
71| 参数名   | 类型                     | 必填 | 说明                      |
72| -------- | ------------------------ | ---- | ------------------------- |
73| options  | [FetchOptions](#fetchoptions)        | 是   | 图片和视频检索选项。              |
74| callback |  AsyncCallback<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | 是   | callback返回图片和视频检索结果集。 |
75
76**错误码:**
77
78接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
79
80| 错误码ID | 错误信息 |
81| -------- | ---------------------------------------- |
82| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
83| 13900012     | Permission denied.         |
84| 13900020     | Invalid argument.         |
85| 14000011       | System inner fail.         |
86
87**示例:**
88
89```ts
90import { dataSharePredicates } from '@kit.ArkData';
91
92async function example() {
93  console.info('getAssets');
94  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
95  let fetchOptions: photoAccessHelper.FetchOptions = {
96    fetchColumns: [],
97    predicates: predicates
98  };
99
100  phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => {
101    if (fetchResult !== undefined) {
102      console.info('fetchResult success');
103      let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
104      if (photoAsset !== undefined) {
105        console.info('photoAsset.displayName : ' + photoAsset.displayName);
106      }
107    } else {
108      console.error(`fetchResult fail with error: ${err.code}, ${err.message}`);
109    }
110  });
111}
112```
113
114### getAssets
115
116getAssets(options: FetchOptions): Promise<FetchResult<PhotoAsset>>
117
118获取图片和视频资源,使用Promise方式返回结果。
119
120**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
121
122**需要权限**:ohos.permission.READ_IMAGEVIDEO
123
124 通过picker的方式调用该接口来查询指定uri对应的图片或视频资源,不需要申请'ohos.permission.READ_IMAGEVIDEO'权限,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。
125
126**参数:**
127
128| 参数名  | 类型                | 必填 | 说明             |
129| ------- | ------------------- | ---- | ---------------- |
130| options | [FetchOptions](#fetchoptions)   | 是   | 图片和视频检索选项。     |
131
132**返回值:**
133
134| 类型                        | 说明           |
135| --------------------------- | -------------- |
136| Promise<[FetchResult](#fetchresult)<[PhotoAsset](#photoasset)>> | Promise对象,返回图片和视频数据结果集。 |
137
138**错误码:**
139
140接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
141
142| 错误码ID | 错误信息 |
143| -------- | ---------------------------------------- |
144| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
145| 13900012     | Permission denied.         |
146| 13900020     | Invalid argument.         |
147| 14000011       | System inner fail.         |
148
149**示例:**
150
151```ts
152import { dataSharePredicates } from '@kit.ArkData';
153
154async function example() {
155  console.info('getAssets');
156  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
157  let fetchOptions: photoAccessHelper.FetchOptions = {
158    fetchColumns: [],
159    predicates: predicates
160  };
161  try {
162    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
163    if (fetchResult !== undefined) {
164      console.info('fetchResult success');
165      let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
166      if (photoAsset !== undefined) {
167        console.info('photoAsset.displayName :' + photoAsset.displayName);
168      }
169    }
170  } catch (err) {
171    console.error(`getAssets failed, error: ${err.code}, ${err.message}`);
172  }
173}
174```
175
176### getBurstAssets<sup>12+</sup>
177
178getBurstAssets(burstKey: string, options: FetchOptions): Promise&lt;FetchResult&lt;PhotoAsset&gt;&gt;
179
180获取连拍照片资源,使用Promise方式返回结果。
181
182**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
183
184**需要权限**:ohos.permission.READ_IMAGEVIDEO
185
186**参数:**
187
188| 参数名  | 类型                | 必填 | 说明             |
189| ------- | ------------------- | ---- | ---------------- |
190| burstKey | string   | 是   | 一组连拍照片的唯一标识:uuid(可传入[PhotoKeys](#photokeys)的BURST_KEY)     |
191| options | [FetchOptions](#fetchoptions)   | 是   | 连拍照片检索选项。     |
192
193**返回值:**
194
195| 类型                        | 说明           |
196| --------------------------- | -------------- |
197| Promise&lt;[FetchResult](#fetchresult)&lt;[PhotoAsset](#photoasset)&gt;&gt; | Promise对象,返回连拍照片数据结果集。 |
198
199**错误码:**
200
201接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
202
203| 错误码ID | 错误信息 |
204| -------- | ---------------------------------------- |
205| 201   | Permission denied.         |
206| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
207| 14000011       | Internal system error.         |
208
209**示例:**
210
211```ts
212import { photoAccessHelper } from '@kit.MediaLibraryKit';
213import { dataSharePredicates } from '@kit.ArkData';
214
215async function example() {
216  console.info('getBurstAssets');
217  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
218  let fetchOptions: photoAccessHelper.FetchOptions = {
219    fetchColumns: [],
220    predicates: predicates
221  };
222  // burstKey为36位的uuid,可以根据photoAccessHelper.PhotoKeys获取。
223  let burstKey: string = "e719d696-09fa-44f8-ec3f215aa62a";
224  try {
225    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await
226      phAccessHelper.getBurstAssets(burstKey, fetchOptions);
227    if (fetchResult !== undefined) {
228      console.info('fetchResult success');
229      let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
230      if (photoAsset !== undefined) {
231        console.info('photoAsset.displayName :' + photoAsset.displayName);
232      }
233    }
234  } catch (err) {
235    console.error(`getBurstAssets failed, error: ${err.code}, ${err.message}`);
236  }
237}
238```
239
240### createAsset
241
242createAsset(photoType: PhotoType, extension: string, options: CreateOptions, callback: AsyncCallback&lt;string&gt;): void
243
244指定待创建的文件类型、后缀和创建选项,创建图片或视频资源,使用callback方式返回结果。
245
246此接口在未申请相册管理模块权限'ohos.permission.WRITE_IMAGEVIDEO'时,可以使用安全控件创建媒体资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-savebutton.md)。
247
248**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
249
250**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
251
252**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
253
254**参数:**
255
256| 参数名   | 类型                     | 必填 | 说明                      |
257| -------- | ------------------------ | ---- | ------------------------- |
258| photoType  | [PhotoType](#phototype)        | 是   | 创建的文件类型,IMAGE或者VIDEO类型。              |
259| extension  | string        | 是   | 文件名后缀参数,例如:'jpg'。              |
260| options  | [CreateOptions](#createoptions)        | 是   | 创建选项,例如{title: 'testPhoto'}。              |
261| callback |  AsyncCallback&lt;string&gt; | 是   | callback返回创建的图片和视频的uri。 |
262
263**错误码:**
264
265接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
266
267| 错误码ID | 错误信息 |
268| -------- | ---------------------------------------- |
269| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
270| 13900012     | Permission denied.         |
271| 13900020     | Invalid argument.         |
272| 14000011       | System inner fail.         |
273
274**示例:**
275
276```ts
277async function example() {
278  console.info('createAssetDemo');
279  let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE;
280  let extension:string = 'jpg';
281  let options: photoAccessHelper.CreateOptions = {
282    title: 'testPhoto'
283  }
284  phAccessHelper.createAsset(photoType, extension, options, (err, uri) => {
285    if (uri !== undefined) {
286      console.info('createAsset uri' + uri);
287      console.info('createAsset successfully');
288    } else {
289      console.error(`createAsset failed, error: ${err.code}, ${err.message}`);
290    }
291  });
292}
293```
294
295### createAsset
296
297createAsset(photoType: PhotoType, extension: string, callback: AsyncCallback&lt;string&gt;): void
298
299指定待创建的文件类型和后缀,创建图片或视频资源,使用callback方式返回结果。
300
301此接口在未申请相册管理模块权限'ohos.permission.WRITE_IMAGEVIDEO'时,可以使用安全控件创建媒体资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-savebutton.md)。
302
303**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
304
305**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
306
307**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
308
309**参数:**
310
311| 参数名   | 类型                     | 必填 | 说明                      |
312| -------- | ------------------------ | ---- | ------------------------- |
313| photoType  | [PhotoType](#phototype)        | 是   | 创建的文件类型,IMAGE或者VIDEO类型。              |
314| extension  | string        | 是   | 文件名后缀参数,例如:'jpg'。              |
315| callback |  AsyncCallback&lt;string&gt; | 是   | callback返回创建的图片和视频的uri。 |
316
317**错误码:**
318
319接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
320
321| 错误码ID | 错误信息 |
322| -------- | ---------------------------------------- |
323| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
324| 13900012     | Permission denied.         |
325| 13900020     | Invalid argument.         |
326| 14000011       | System inner fail.         |
327
328**示例:**
329
330```ts
331async function example() {
332  console.info('createAssetDemo');
333  let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE;
334  let extension: string = 'jpg';
335  phAccessHelper.createAsset(photoType, extension, (err, uri) => {
336    if (uri !== undefined) {
337      console.info('createAsset uri' + uri);
338      console.info('createAsset successfully');
339    } else {
340      console.error(`createAsset failed, error: ${err.code}, ${err.message}`);
341    }
342  });
343}
344```
345
346### createAsset
347
348createAsset(photoType: PhotoType, extension: string, options?: CreateOptions): Promise&lt;string&gt;
349
350指定待创建的文件类型、后缀和创建选项,创建图片或视频资源,使用Promise方式返回结果。
351
352此接口在未申请相册管理模块权限'ohos.permission.WRITE_IMAGEVIDEO'时,可以使用安全控件创建媒体资源,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-savebutton.md)。
353
354**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
355
356**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
357
358**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
359
360**参数:**
361
362| 参数名   | 类型                     | 必填 | 说明                      |
363| -------- | ------------------------ | ---- | ------------------------- |
364| photoType  | [PhotoType](#phototype)        | 是   | 创建的文件类型,IMAGE或者VIDEO类型。              |
365| extension  | string        | 是   | 文件名后缀参数,例如:'jpg'。              |
366| options  | [CreateOptions](#createoptions)        | 否   | 创建选项,例如{title: 'testPhoto'}。              |
367
368**返回值:**
369
370| 类型                        | 说明           |
371| --------------------------- | -------------- |
372| Promise&lt;string&gt; | Promise对象,返回创建的图片和视频的uri。 |
373
374**错误码:**
375
376接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
377
378| 错误码ID | 错误信息 |
379| -------- | ---------------------------------------- |
380| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
381| 13900012     | Permission denied.         |
382| 13900020     | Invalid argument.         |
383| 14000011       | System inner fail.         |
384
385**示例:**
386
387```ts
388async function example() {
389  console.info('createAssetDemo');
390  try {
391    let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE;
392    let extension: string = 'jpg';
393    let options: photoAccessHelper.CreateOptions = {
394      title: 'testPhoto'
395    }
396    let uri: string = await phAccessHelper.createAsset(photoType, extension, options);
397    console.info('createAsset uri' + uri);
398    console.info('createAsset successfully');
399  } catch (err) {
400    console.error(`createAsset failed, error: ${err.code}, ${err.message}`);
401  }
402}
403```
404
405### getAlbums
406
407getAlbums(type: AlbumType, subtype: AlbumSubtype, options: FetchOptions, callback: AsyncCallback&lt;FetchResult&lt;Album&gt;&gt;): void
408
409根据检索选项和相册类型获取相册,使用callback方式返回结果。
410
411获取相册前需先保证相册存在。
412
413**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
414
415**需要权限**:ohos.permission.READ_IMAGEVIDEO
416
417**参数:**
418
419| 参数名   | 类型                     | 必填 | 说明                      |
420| -------- | ------------------------ | ---- | ------------------------- |
421| type  | [AlbumType](#albumtype)         | 是   | 相册类型。              |
422| subtype  | [AlbumSubtype](#albumsubtype)         | 是   | 相册子类型。              |
423| options  | [FetchOptions](#fetchoptions)         | 是   |  检索选项。              |
424| callback |  AsyncCallback&lt;[FetchResult](#fetchresult)&lt;[Album](#album)&gt;&gt; | 是   | callback返回获取相册的结果集。 |
425
426**错误码:**
427
428接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
429
430| 错误码ID | 错误信息 |
431| -------- | ---------------------------------------- |
432| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
433| 13900012     | Permission denied.         |
434| 13900020     | Invalid argument.         |
435| 14000011       | System inner fail.         |
436
437**示例:**
438
439```ts
440import { dataSharePredicates } from '@kit.ArkData';
441
442async function example() {
443  // 示例代码中为获取相册名为newAlbumName的相册。
444  console.info('getAlbumsDemo');
445  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
446  predicates.equalTo('album_name', 'newAlbumName');
447  let fetchOptions: photoAccessHelper.FetchOptions = {
448    fetchColumns: [],
449    predicates: predicates
450  };
451  phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions, async (err, fetchResult) => {
452    if (err) {
453      console.error(`getAlbumsCallback failed with err: ${err.code}, ${err.message}`);
454      return;
455    }
456    if (fetchResult === undefined) {
457      console.error('getAlbumsCallback fetchResult is undefined');
458      return;
459    }
460    let album = await fetchResult.getFirstObject();
461    console.info('getAlbumsCallback successfully, albumName: ' + album.albumName);
462    fetchResult.close();
463  });
464}
465```
466
467### getAlbums
468
469getAlbums(type: AlbumType, subtype: AlbumSubtype, callback: AsyncCallback&lt;FetchResult&lt;Album&gt;&gt;): void
470
471根据相册类型获取相册,使用callback方式返回结果。
472
473获取相册前需先保证相册存在。
474
475**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
476
477**需要权限**:ohos.permission.READ_IMAGEVIDEO
478
479**参数:**
480
481| 参数名   | 类型                     | 必填 | 说明                      |
482| -------- | ------------------------ | ---- | ------------------------- |
483| type  | [AlbumType](#albumtype)         | 是   | 相册类型。              |
484| subtype  | [AlbumSubtype](#albumsubtype)         | 是   | 相册子类型。              |
485| callback |  AsyncCallback&lt;[FetchResult](#fetchresult)&lt;[Album](#album)&gt;&gt; | 是   | callback返回获取相册的结果集。 |
486
487**错误码:**
488
489接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
490
491| 错误码ID | 错误信息 |
492| -------- | ---------------------------------------- |
493| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
494| 13900012     | Permission denied.         |
495| 13900020     | Invalid argument.         |
496| 14000011       | System inner fail.         |
497
498**示例:**
499
500```ts
501async function example() {
502  // 示例代码中为获取统相册VIDEO,默认已预置。
503  console.info('getAlbumsDemo');
504  phAccessHelper.getAlbums(photoAccessHelper.AlbumType.SYSTEM, photoAccessHelper.AlbumSubtype.VIDEO, async (err, fetchResult) => {
505    if (err) {
506      console.error(`getAlbumsCallback failed with err: ${err.code}, ${err.message}`);
507      return;
508    }
509    if (fetchResult === undefined) {
510      console.error('getAlbumsCallback fetchResult is undefined');
511      return;
512    }
513    let album: photoAccessHelper.Album = await fetchResult.getFirstObject();
514    console.info('getAlbumsCallback successfully, albumUri: ' + album.albumUri);
515    fetchResult.close();
516  });
517}
518```
519
520### getAlbums
521
522getAlbums(type: AlbumType, subtype: AlbumSubtype, options?: FetchOptions): Promise&lt;FetchResult&lt;Album&gt;&gt;
523
524根据检索选项和相册类型获取相册,使用Promise方式返回结果。
525
526获取相册前需先保证相册存在。
527
528**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
529
530**需要权限**:ohos.permission.READ_IMAGEVIDEO
531
532**参数:**
533
534| 参数名   | 类型                     | 必填 | 说明                      |
535| -------- | ------------------------ | ---- | ------------------------- |
536| type  | [AlbumType](#albumtype)         | 是   | 相册类型。              |
537| subtype  | [AlbumSubtype](#albumsubtype)         | 是   | 相册子类型。              |
538| options  | [FetchOptions](#fetchoptions)         | 否   |  检索选项,不填时默认根据相册类型检索。              |
539
540**返回值:**
541
542| 类型                        | 说明           |
543| --------------------------- | -------------- |
544| Promise&lt;[FetchResult](#fetchresult)&lt;[Album](#album)&gt;&gt; | Promise对象,返回获取相册的结果集。 |
545
546**错误码:**
547
548接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
549
550| 错误码ID | 错误信息 |
551| -------- | ---------------------------------------- |
552| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
553| 13900012     | Permission denied.         |
554| 13900020     | Invalid argument.         |
555| 14000011       | System inner fail.         |
556
557**示例:**
558
559```ts
560import { dataSharePredicates } from '@kit.ArkData';
561import { BusinessError } from '@kit.BasicServicesKit';
562
563async function example() {
564  // 示例代码中为获取相册名为newAlbumName的相册。
565  console.info('getAlbumsDemo');
566  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
567  predicates.equalTo('album_name', 'newAlbumName');
568  let fetchOptions: photoAccessHelper.FetchOptions = {
569    fetchColumns: [],
570    predicates: predicates
571  };
572  phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions).then( async (fetchResult) => {
573    if (fetchResult === undefined) {
574      console.error('getAlbumsPromise fetchResult is undefined');
575      return;
576    }
577    let album: photoAccessHelper.Album = await fetchResult.getFirstObject();
578    console.info('getAlbumsPromise successfully, albumName: ' + album.albumName);
579    fetchResult.close();
580  }).catch((err: BusinessError) => {
581    console.error(`getAlbumsPromise failed with err: ${err.code}, ${err.message}`);
582  });
583}
584```
585
586### registerChange
587
588registerChange(uri: string, forChildUris: boolean, callback: Callback&lt;ChangeData&gt;) : void
589
590注册对指定uri的监听,使用callback方式返回异步结果。
591
592**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
593
594**参数:**
595
596| 参数名    | 类型                                        | 必填 | 说明                                                         |
597| --------- | ------------------------------------------- | ---- | ------------------------------------------------------------ |
598| uri       | string                                      | 是   | PhotoAsset的uri, Album的uri或[DefaultChangeUri](#defaultchangeuri)的值。 |
599| forChildUris | boolean                                     | 是   | 是否模糊监听。uri为相册uri时:forChildUris为true,能监听到相册中文件的变化。如果是false,只能监听相册本身变化;uri为photoAsset时:forChildUris为true、false没有区别;uri为DefaultChangeUri时:forChildUris必须为true,如果为false将找不到该uri,收不到任何消息。 |
600| callback  | Callback&lt;[ChangeData](#changedata)&gt; | 是   | 返回要监听的[ChangeData](#changedata)。注:uri可以注册多个不同的callback监听,[unRegisterChange](#unregisterchange)可以关闭该uri所有监听,也可以关闭指定callback的监听。 |
601
602**错误码:**
603
604接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
605
606| 错误码ID | 错误信息 |
607| -------- | ---------------------------------------- |
608| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
609| 13900012     | Permission denied.         |
610| 13900020     | Invalid argument.         |
611
612**示例:**
613
614```ts
615import { dataSharePredicates } from '@kit.ArkData';
616
617async function example() {
618  console.info('registerChangeDemo');
619  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
620  let fetchOptions: photoAccessHelper.FetchOptions = {
621    fetchColumns: [],
622    predicates: predicates
623  };
624  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
625  let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
626  if (photoAsset !== undefined) {
627    console.info('photoAsset.displayName : ' + photoAsset.displayName);
628  }
629  let onCallback1 = (changeData: photoAccessHelper.ChangeData) => {
630      console.info('onCallback1 success, changData: ' + JSON.stringify(changeData));
631    //file had changed, do something.
632  }
633  let onCallback2 = (changeData: photoAccessHelper.ChangeData) => {
634      console.info('onCallback2 success, changData: ' + JSON.stringify(changeData));
635    //file had changed, do something.
636  }
637  // 注册onCallback1监听。
638  phAccessHelper.registerChange(photoAsset.uri, false, onCallback1);
639  // 注册onCallback2监听。
640  phAccessHelper.registerChange(photoAsset.uri, false, onCallback2);
641
642  await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [photoAsset]);
643}
644```
645
646### unRegisterChange
647
648unRegisterChange(uri: string, callback?: Callback&lt;ChangeData&gt;): void
649
650取消指定uri的监听,一个uri可以注册多个监听,存在多个callback监听时,可以取消指定注册的callback的监听;不指定callback时取消该uri的所有监听。
651
652**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
653
654**参数:**
655
656| 参数名   | 类型                                        | 必填 | 说明                                                         |
657| -------- | ------------------------------------------- | ---- | ------------------------------------------------------------ |
658| uri      | string                                      | 是   | PhotoAsset的uri, Album的uri或[DefaultChangeUri](#defaultchangeuri)的值。 |
659| callback | Callback&lt;[ChangeData](#changedata)&gt; | 否   | 取消[registerChange](#registerchange)注册时的callback的监听,不填时,取消该uri的所有监听。注:off指定注册的callback后不会进入此回调。 |
660
661**错误码:**
662
663接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
664
665| 错误码ID | 错误信息 |
666| -------- | ---------------------------------------- |
667| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
668| 13900012     | Permission denied.         |
669| 13900020     | Invalid argument.         |
670
671**示例:**
672
673```ts
674import { dataSharePredicates } from '@kit.ArkData';
675
676async function example() {
677  console.info('offDemo');
678  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
679  let fetchOptions: photoAccessHelper.FetchOptions = {
680    fetchColumns: [],
681    predicates: predicates
682  };
683  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
684  let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
685  if (photoAsset !== undefined) {
686    console.info('photoAsset.displayName : ' + photoAsset.displayName);
687  }
688  let onCallback1 = (changeData: photoAccessHelper.ChangeData) => {
689    console.info('onCallback1 on');
690  }
691  let onCallback2 = (changeData: photoAccessHelper.ChangeData) => {
692    console.info('onCallback2 on');
693  }
694  // 注册onCallback1监听。
695  phAccessHelper.registerChange(photoAsset.uri, false, onCallback1);
696  // 注册onCallback2监听。
697  phAccessHelper.registerChange(photoAsset.uri, false, onCallback2);
698  // 关闭onCallback1监听,onCallback2 继续监听。
699  phAccessHelper.unRegisterChange(photoAsset.uri, onCallback1);
700  await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [photoAsset]);
701}
702```
703
704### createDeleteRequest<sup>(deprecated)</sup>
705
706createDeleteRequest(uriList: Array&lt;string&gt;, callback: AsyncCallback&lt;void&gt;): void
707
708创建一个弹出框来删除照片,删除的文件进入到回收站,使用callback方式返回结果。
709
710> **说明:**
711>
712> 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAssetChangeRequest.deleteAssets](#deleteassets11-1)替代。
713
714**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
715
716**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
717
718**参数:**
719
720| 参数名   | 类型                      | 必填 | 说明       |
721| -------- | ------------------------- | ---- | ---------- |
722| uriList | Array&lt;string&gt; | 是   | 待删除的媒体文件uri数组,最大删除数量300。 |
723| callback | AsyncCallback&lt;void&gt; | 是   | callback返回void。 |
724
725**错误码:**
726
727接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
728
729| 错误码ID | 错误信息 |
730| -------- | ---------------------------------------- |
731| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
732| 13900012     | Permission denied.         |
733| 13900020     | Invalid argument.         |
734| 14000011       | System inner fail.         |
735
736**示例:**
737
738```ts
739import { dataSharePredicates } from '@kit.ArkData';
740
741async function example() {
742  console.info('createDeleteRequestDemo');
743  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
744  let fetchOptions: photoAccessHelper.FetchOptions = {
745    fetchColumns: [],
746    predicates: predicates
747  };
748  try {
749    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
750    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
751    if (asset === undefined) {
752      console.error('asset not exist');
753      return;
754    }
755    phAccessHelper.createDeleteRequest([asset.uri], (err) => {
756      if (err === undefined) {
757        console.info('createDeleteRequest successfully');
758      } else {
759        console.error(`createDeleteRequest failed with error: ${err.code}, ${err.message}`);
760      }
761    });
762  } catch (err) {
763    console.error(`fetch failed, error: ${err.code}, ${err.message}`);
764  }
765}
766```
767
768### createDeleteRequest<sup>(deprecated)</sup>
769
770createDeleteRequest(uriList: Array&lt;string&gt;): Promise&lt;void&gt;
771
772创建一个弹出框来删除照片,删除的文件进入到回收站,使用Promise方式返回结果。
773
774> **说明:**
775>
776> 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAssetChangeRequest.deleteAssets](#deleteassets11-1)替代。
777
778**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
779
780**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
781
782**参数:**
783
784| 参数名   | 类型                      | 必填 | 说明       |
785| -------- | ------------------------- | ---- | ---------- |
786| uriList | Array&lt;string&gt; | 是   | 待删除的媒体文件uri数组,最大删除数量300。 |
787
788**返回值:**
789
790| 类型                                    | 说明              |
791| --------------------------------------- | ----------------- |
792| Promise&lt;void&gt;| Promise对象,返回void。 |
793
794**错误码:**
795
796接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
797
798| 错误码ID | 错误信息 |
799| -------- | ---------------------------------------- |
800| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
801| 13900012     | Permission denied.         |
802| 13900020     | Invalid argument.         |
803| 14000011       | System inner fail.         |
804
805**示例:**
806
807```ts
808import { dataSharePredicates } from '@kit.ArkData';
809
810async function example() {
811  console.info('createDeleteRequestDemo');
812  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
813  let fetchOptions: photoAccessHelper.FetchOptions = {
814    fetchColumns: [],
815    predicates: predicates
816  };
817  try {
818    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
819    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
820    if (asset === undefined) {
821      console.error('asset not exist');
822      return;
823    }
824    await phAccessHelper.createDeleteRequest([asset.uri]);
825    console.info('createDeleteRequest successfully');
826  } catch (err) {
827    console.error(`createDeleteRequest failed with error: ${err.code}, ${err.message}`);
828  }
829}
830```
831
832### applyChanges<sup>11+</sup>
833
834applyChanges(mediaChangeRequest: MediaChangeRequest): Promise&lt;void&gt;
835
836提交媒体变更请求,使用Promise方式返回结果。
837
838**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
839
840在提交创建资产的变更请求时,用安全控件的方式调用该接口来创建媒体资源,不需要申请'ohos.permission.WRITE_IMAGEVIDEO'权限,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-savebutton.md)。
841
842**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
843
844**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
845
846**参数:**
847
848| 参数名   | 类型                     | 必填 | 说明                      |
849| -------- | ------------------------ | ---- | ------------------------- |
850| mediaChangeRequest  | [MediaChangeRequest](#mediachangerequest11)  | 是  |  媒体变更请求,支持资产变更请求和相册变更请求。 |
851
852**返回值:**
853
854| 类型                                    | 说明              |
855| --------------------------------------- | ----------------- |
856| Promise&lt;void&gt;| Promise对象,返回void。 |
857
858**错误码:**
859
860接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
861
862| 错误码ID | 错误信息 |
863| -------- | ---------------------------------------- |
864| 201   | Permission denied.         |
865| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
866| 14000011  | System inner fail.     |
867
868**示例:**
869
870该接口依赖于[MediaChangeRequest](#mediachangerequest11)对象,详细代码示例请参见[MediaAssetChangeRequest](#mediaassetchangerequest11)和[MediaAlbumChangeRequest](#mediaalbumchangerequest11)中的接口示例。
871
872### release
873
874release(callback: AsyncCallback&lt;void&gt;): void
875
876释放PhotoAccessHelper实例,使用callback方式返回结果。
877当后续不需要使用PhotoAccessHelper实例中的方法时调用。
878
879**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
880
881**参数:**
882
883| 参数名   | 类型                      | 必填 | 说明                 |
884| -------- | ------------------------- | ---- | -------------------- |
885| callback | AsyncCallback&lt;void&gt; | 是   | 回调表示成功还是失败。 |
886
887**错误码:**
888
889接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
890
891| 错误码ID | 错误信息 |
892| -------- | ---------------------------------------- |
893| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
894| 13900020     | Invalid argument.         |
895| 14000011       | System inner fail.         |
896
897**示例:**
898
899```ts
900async function example() {
901  console.info('releaseDemo');
902  phAccessHelper.release((err) => {
903    if (err !== undefined) {
904      console.error(`release failed. error: ${err.code}, ${err.message}`);
905    } else {
906      console.info('release ok.');
907    }
908  });
909}
910```
911
912### release
913
914release(): Promise&lt;void&gt;
915
916释放PhotoAccessHelper实例,使用Promise方式返回结果。
917当后续不需要使用PhotoAccessHelper 实例中的方法时调用。
918
919**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
920
921**返回值:**
922
923| 类型                | 说明                              |
924| ------------------- | --------------------------------- |
925| Promise&lt;void&gt; | Promise对象,返回void。 |
926
927**错误码:**
928
929接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
930
931| 错误码ID | 错误信息 |
932| -------- | ---------------------------------------- |
933| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
934| 13900020     | Invalid argument.         |
935| 14000011       | System inner fail.         |
936
937**示例:**
938
939```ts
940async function example() {
941  console.info('releaseDemo');
942  try {
943    await phAccessHelper.release();
944    console.info('release ok.');
945  } catch (err) {
946    console.error(`release failed. error: ${err.code}, ${err.message}`);
947  }
948}
949```
950
951### showAssetsCreationDialog<sup>12+</sup>
952
953showAssetsCreationDialog(srcFileUris: Array&lt;string&gt;, photoCreationConfigs: Array&lt;PhotoCreationConfig&gt;): Promise&lt;Array&lt;string&gt;&gt;
954
955调用接口拉起保存确认弹窗。用户同意保存后,返回已创建并授予保存权限的uri列表,该列表永久生效,应用可使用该uri写入图片/视频。如果用户拒绝保存,将返回空列表。弹框需要显示应用名称,无法直接获取应用名称,依赖于配置项的label和icon,因此调用此接口时请确保module.json5文件中的abilities标签中配置了label和icon项。
956
957> **说明:**
958> 当传入uri为沙箱路径时,可正常保存图片/视频,但无界面预览。
959
960**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
961
962**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
963
964**参数:**
965
966| 参数名   | 类型                                                                   | 必填 | 说明                      |
967| -------- |----------------------------------------------------------------------| ---- | ------------------------- |
968| srcFileUris | Array&lt;string&gt; | 是 | 需保存到媒体库中的图片/视频文件对应的[媒体库uri](../../file-management/user-file-uri-intro.md#媒体文件uri)。<br>**注意:**<br>- 仅支持处理图片、视频uri。<br>- 不支持手动拼接的uri,需调用接口获取,获取方式参考[媒体文件uri获取方式](../../file-management/user-file-uri-intro.md#媒体文件uri获取方式)。  |
969| photoCreationConfigs | Array&lt;[PhotoCreationConfig](#photocreationconfig12)&gt; | 是 | 保存图片/视频到媒体库的配置,包括保存的文件名等,与srcFileUris保持一一对应。 |
970
971**返回值:**
972
973| 类型                                    | 说明              |
974| --------------------------------------- | ----------------- |
975| Promise&lt;Array&lt;string&gt;&gt; | Promise对象,返回给应用的媒体库文件uri列表。Uri已对应用授权,支持应用写入数据。如果生成uri异常,则返回批量创建错误码。<br>返回-3006表不允许出现非法字符;返回-2004表示图片类型和后缀不符;返回-203表示文件操作异常。 |
976
977**错误码:**
978
979接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
980
981| 错误码ID | 错误信息 |
982| -------- | ---------------------------------------- |
983| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
984| 14000011 |  Internal system error |
985
986**示例:**
987
988```ts
989import { dataSharePredicates } from '@kit.ArkData';
990import { photoAccessHelper } from '@kit.MediaLibraryKit';
991
992async function example() {
993  console.info('ShowAssetsCreationDialogDemo.');
994
995  try {
996    // 获取需要保存到媒体库的位于应用沙箱的图片/视频uri。
997    let srcFileUris: Array<string> = [
998      'file://fileUriDemo1' // 实际场景请使用真实的uri。
999    ];
1000    let photoCreationConfigs: Array<photoAccessHelper.PhotoCreationConfig> = [
1001      {
1002        title: 'test2', // 可选。
1003        fileNameExtension: 'jpg',
1004        photoType: photoAccessHelper.PhotoType.IMAGE,
1005        subtype: photoAccessHelper.PhotoSubtype.DEFAULT, // 可选。
1006      }
1007    ];
1008    let desFileUris: Array<string> = await phAccessHelper.showAssetsCreationDialog(srcFileUris, photoCreationConfigs);
1009    console.info('showAssetsCreationDialog success, data is ' + desFileUris);
1010  } catch (err) {
1011    console.error('showAssetsCreationDialog failed, errCode is ' + err.code + ', errMsg is ' + err.message);
1012  }
1013}
1014```
1015
1016### createAssetWithShortTermPermission<sup>12+</sup>
1017
1018createAssetWithShortTermPermission(photoCreationConfig: PhotoCreationConfig): Promise&lt;string&gt;
1019
1020接口提供给应用调用,支持首次调用后拉起保存确认弹框。在用户同意保存后返回已创建并授予保存权限的uri,支持应用使用uri写入图片/视频;
1021在用户"同意"后的5min之内,同一个应用再次调用接口,支持无需弹框确认自动返回已授权的uri给应用,支持应用保存图片/视频。
1022
1023**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1024
1025**需要权限:** ohos.permission.SHORT_TERM_WRITE_IMAGEVIDEO
1026
1027**参数:**
1028
1029| 参数名   | 类型                                                                   | 必填 | 说明                      |
1030| -------- |----------------------------------------------------------------------| ---- | ------------------------- |
1031| photoCreationConfig | [PhotoCreationConfig](#photocreationconfig12); | 是 | 保存图片/视频到媒体库的配置,包括保存的文件名等。 |
1032
1033**返回值:**
1034
1035| 类型                                    | 说明              |
1036| --------------------------------------- | ----------------- |
1037| Promise&lt;string&gt; | Promise对象,返回给应用的媒体库文件uri。Uri已对应用授权,支持应用写入数据。如果生成uri异常,则返回批量创建错误码。<br>返回-3006表不允许出现非法字符;返回-2004表示图片类型和后缀不符;返回-203表示文件操作异常。 |
1038
1039**错误码:**
1040
1041接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1042
1043| 错误码ID | 错误信息 |
1044| -------- | ---------------------------------------- |
1045| 201 | Permission denied |
1046| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
1047| 14000011 |  Internal system error |
1048
1049**示例:**
1050
1051```ts
1052import { fileIo } from '@kit.CoreFileKit';
1053
1054async function example() {
1055    console.info('createAssetWithShortTermPermissionDemo.');
1056
1057    try {
1058        let photoCreationConfig: photoAccessHelper.PhotoCreationConfig = {
1059            title: '123456',
1060            fileNameExtension: 'jpg',
1061            photoType: photoAccessHelper.PhotoType.IMAGE,
1062            subtype: photoAccessHelper.PhotoSubtype.DEFAULT,
1063        };
1064
1065        let resultUri: string = await phAccessHelper.createAssetWithShortTermPermission(photoCreationConfig);
1066        let resultFile: fileIo.File = fileIo.openSync(resultUri, fileIo.OpenMode.READ_WRITE);
1067        // 实际场景请使用真实的uri和文件大小。
1068        let srcFile:  fileIo.File = fileIo.openSync("file://test.jpg", fileIo.OpenMode.READ_ONLY);
1069        let bufSize: number = 2000000;
1070        let readSize: number = 0;
1071        let buf = new ArrayBuffer(bufSize);
1072        let readLen = fileIo.readSync(srcFile.fd, buf, {
1073            offset: readSize,
1074            length: bufSize
1075        });
1076        if (readLen > 0) {
1077            readSize += readLen;
1078            fileIo.writeSync(resultFile.fd, buf, { length: readLen });
1079        }
1080        fileIo.closeSync(srcFile);
1081        fileIo.closeSync(resultFile);
1082    } catch (err) {
1083        console.error('createAssetWithShortTermPermission failed, errCode is ' + err.code + ', errMsg is ' + err.message);
1084    }
1085
1086}
1087```
1088
1089### requestPhotoUrisReadPermission<sup>14+</sup>
1090
1091requestPhotoUrisReadPermission(srcFileUris: Array&lt;string&gt;): Promise&lt;Array&lt;string&gt;&gt;
1092
1093<!--RP1--><!--RP1End-->调用接口给未授权的uri进行授权,返回已创建并授予保存权限的uri列表。
1094
1095**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
1096
1097**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1098
1099**参数:**
1100
1101| 参数名   | 类型                                                                   | 必填 | 说明                      |
1102| -------- |----------------------------------------------------------------------| ---- | ------------------------- |
1103| srcFileUris | Array&lt;string&gt; | 是 | 需进行授权的图片/视频文件对应的[媒体库uri](../../file-management/user-file-uri-intro.md#媒体文件uri)。<br>**注意:** 仅支持处理图片、视频uri。|
1104
1105**返回值:**
1106
1107| 类型                                    | 说明              |
1108| --------------------------------------- | ----------------- |
1109| Promise&lt;Array&lt;string&gt;&gt; | Promise对象,返回已授权的uri列表。 |
1110
1111**错误码:**
1112
1113接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1114
1115| 错误码ID | 错误信息 |
1116| -------- | ---------------------------------------- |
1117| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
1118| 14000011 |  Internal system error |
1119
1120**示例:**
1121
1122```ts
1123import { dataSharePredicates } from '@kit.ArkData';
1124import { photoAccessHelper } from '@kit.MediaLibraryKit';
1125
1126async function example() {
1127  console.info('requestPhotoUrisReadPermissionDemo.');
1128
1129  try {
1130    let phAccessHelper: photoAccessHelper.PhotoAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
1131    // 获取需要进行授权的图片/视频uri。
1132    let srcFileUris: Array<string> = [
1133      'file://fileUriDemo1' // 实际场景请使用真实的uri。
1134    ];
1135    let desFileUris: Array<string> = await phAccessHelper.requestPhotoUrisReadPermission(srcFileUris);
1136    console.info('requestPhotoUrisReadPermission success, data is ' + desFileUris);
1137  } catch (err) {
1138    console.error('requestPhotoUrisReadPermission failed, errCode is ' + err.code + ', errMsg is ' + err.message);
1139  }
1140}
1141```
1142
1143## PhotoAsset
1144
1145提供封装文件属性的方法。
1146
1147### 属性
1148
1149**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1150
1151| 名称                      | 类型                     | 可读 | 可写 | 说明                                                   |
1152| ------------------------- | ------------------------ | ---- | ---- | ------------------------------------------------------ |
1153| uri                       | string                   | 是   | 否   | 媒体文件资源uri(如:file://media/Photo/1/IMG_datetime_0001/displayName.jpg),详情参见用户文件uri介绍中的[媒体文件uri](../../file-management/user-file-uri-intro.md#媒体文件uri)<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。         |
1154| photoType   | [PhotoType](#phototype) | 是   | 否   | 媒体文件类型。                                               |
1155| displayName               | string                   | 是   | 否   | 显示文件名,包含后缀名。                                 |
1156
1157### get
1158
1159get(member: string): MemberType
1160
1161获取PhotoAsset成员参数。
1162
1163**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1164
1165**参数:**
1166
1167| 参数名      | 类型                        | 必填   | 说明    |
1168| -------- | ------------------------- | ---- | ----- |
1169| member | string | 是    | 成员参数名称,在get时,除了'uri'、'media_type'、'subtype'和'display_name'四个属性之外,其他的属性都需要在fetchColumns中填入需要get的[PhotoKeys](#photokeys),例如:get title属性fetchColumns: ['title']。 |
1170
1171**返回值:**
1172
1173| 类型                | 说明                              |
1174| ------------------- | --------------------------------- |
1175| [MemberType](#membertype) | 获取PhotoAsset成员参数的值。 |
1176
1177**错误码:**
1178
1179接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1180
1181| 错误码ID | 错误信息 |
1182| -------- | ---------------------------------------- |
1183| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
1184| 13900020     | Invalid argument.         |
1185| 14000014     | Member is not a valid PhotoKey.         |
1186
1187**示例:**
1188
1189```ts
1190import { dataSharePredicates } from '@kit.ArkData';
1191
1192async function example() {
1193  console.info('photoAssetGetDemo');
1194  try {
1195    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1196    let fetchOption: photoAccessHelper.FetchOptions = {
1197      fetchColumns: ['title'],
1198      predicates: predicates
1199    };
1200    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
1201    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
1202    let title: photoAccessHelper.PhotoKeys = photoAccessHelper.PhotoKeys.TITLE;
1203    let photoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title.toString());
1204    console.info('photoAsset Get photoAssetTitle = ', photoAssetTitle);
1205  } catch (err) {
1206    console.error(`release failed. error: ${err.code}, ${err.message}`);
1207  }
1208}
1209```
1210
1211### set
1212
1213set(member: string, value: string): void
1214
1215设置PhotoAsset成员参数。
1216
1217**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1218
1219**参数:**
1220
1221| 参数名      | 类型                        | 必填   | 说明    |
1222| -------- | ------------------------- | ---- | ----- |
1223| member | string | 是    | 成员参数名称例如:[PhotoKeys](#photokeys).TITLE。 |
1224| value | string | 是    | 设置成员参数名称,只能修改[PhotoKeys](#photokeys).TITLE的值。 |
1225
1226**错误码:**
1227
1228接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1229
1230| 错误码ID | 错误信息 |
1231| -------- | ---------------------------------------- |
1232| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
1233| 13900020     | Invalid argument.         |
1234| 14000014     | Member is not a valid PhotoKey.         |
1235
1236**示例:**
1237
1238```ts
1239import { dataSharePredicates } from '@kit.ArkData';
1240
1241async function example() {
1242  console.info('photoAssetSetDemo');
1243  try {
1244    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1245    let fetchOption: photoAccessHelper.FetchOptions = {
1246      fetchColumns: ['title'],
1247      predicates: predicates
1248    };
1249    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
1250    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
1251    let title: string = photoAccessHelper.PhotoKeys.TITLE.toString();
1252    photoAsset.set(title, 'newTitle');
1253  } catch (err) {
1254    console.error(`release failed. error: ${err.code}, ${err.message}`);
1255  }
1256}
1257```
1258
1259### commitModify
1260
1261commitModify(callback: AsyncCallback&lt;void&gt;): void
1262
1263修改文件的元数据,使用callback方式返回异步结果。
1264
1265**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
1266
1267**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1268
1269**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1270
1271**参数:**
1272
1273| 参数名      | 类型                        | 必填   | 说明    |
1274| -------- | ------------------------- | ---- | ----- |
1275| callback | AsyncCallback&lt;void&gt; | 是    | callback返回void。 |
1276
1277**错误码:**
1278
1279接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1280
1281| 错误码ID | 错误信息 |
1282| -------- | ---------------------------------------- |
1283| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
1284| 13900012     | Permission denied.         |
1285| 13900020     | Invalid argument.         |
1286| 14000001      | Invalid display name.         |
1287| 14000011       | System inner fail.         |
1288
1289**示例:**
1290
1291```ts
1292import { dataSharePredicates } from '@kit.ArkData';
1293
1294async function example() {
1295  console.info('commitModifyDemo');
1296  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1297  let fetchOption: photoAccessHelper.FetchOptions = {
1298    fetchColumns: ['title'],
1299    predicates: predicates
1300  };
1301  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
1302  let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
1303  let title: string = photoAccessHelper.PhotoKeys.TITLE.toString();
1304  let photoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title);
1305  console.info('photoAsset get photoAssetTitle = ', photoAssetTitle);
1306  photoAsset.set(title, 'newTitle2');
1307  photoAsset.commitModify((err) => {
1308    if (err === undefined) {
1309      let newPhotoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title);
1310      console.info('photoAsset get newPhotoAssetTitle = ', newPhotoAssetTitle);
1311    } else {
1312      console.error(`commitModify failed, error: ${err.code}, ${err.message}`);
1313    }
1314  });
1315}
1316```
1317
1318### commitModify
1319
1320commitModify(): Promise&lt;void&gt;
1321
1322修改文件的元数据,使用promise方式返回异步结果。
1323
1324**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
1325
1326**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1327
1328**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1329
1330**返回值:**
1331
1332| 类型                  | 说明         |
1333| ------------------- | ---------- |
1334| Promise&lt;void&gt; | Promise对象,返回void。 |
1335
1336**错误码:**
1337
1338接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1339
1340| 错误码ID | 错误信息 |
1341| -------- | ---------------------------------------- |
1342| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
1343| 13900012     | Permission denied.         |
1344| 13900020     | Invalid argument.         |
1345| 14000001      | Invalid display name.         |
1346| 14000011       | System inner fail.         |
1347
1348**示例:**
1349
1350```ts
1351import { dataSharePredicates } from '@kit.ArkData';
1352
1353async function example() {
1354  console.info('commitModifyDemo');
1355  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1356  let fetchOption: photoAccessHelper.FetchOptions = {
1357    fetchColumns: ['title'],
1358    predicates: predicates
1359  };
1360  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
1361  let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
1362  let title: string = photoAccessHelper.PhotoKeys.TITLE.toString();
1363  let photoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title);
1364  console.info('photoAsset get photoAssetTitle = ', photoAssetTitle);
1365  photoAsset.set(title, 'newTitle3');
1366  try {
1367    await photoAsset.commitModify();
1368    let newPhotoAssetTitle: photoAccessHelper.MemberType = photoAsset.get(title);
1369    console.info('photoAsset get newPhotoAssetTitle = ', newPhotoAssetTitle);
1370  } catch (err) {
1371    console.error(`release failed. error: ${err.code}, ${err.message}`);
1372  }
1373}
1374```
1375
1376### getReadOnlyFd<sup>(deprecated)</sup>
1377
1378getReadOnlyFd(callback: AsyncCallback&lt;number&gt;): void
1379
1380以只读方式打开当前文件,使用callback方式返回异步结果。
1381
1382> **说明:**
1383>
1384> 从API version 10开始支持,从API version 11开始废弃。出于安全考量,不再提供获取正式媒体文件句柄的接口。
1385
1386**注意**:返回的文件描述符在使用完毕后需要调用close进行释放。
1387
1388**需要权限**:ohos.permission.READ_IMAGEVIDEO
1389
1390**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1391
1392**参数:**
1393
1394| 参数名      | 类型                          | 必填   | 说明                                  |
1395| -------- | --------------------------- | ---- | ----------------------------------- |
1396| callback | AsyncCallback&lt;number&gt; | 是    | callback返回文件描述符。                            |
1397
1398**错误码:**
1399
1400接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1401
1402| 错误码ID | 错误信息 |
1403| -------- | ---------------------------------------- |
1404| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
1405| 13900012     | Permission denied.         |
1406| 13900020     | Invalid argument.         |
1407| 14000011       | System inner fail.         |
1408
1409**示例:**
1410
1411```ts
1412async function example() {
1413  console.info('getReadOnlyFdDemo');
1414  // 需要保证设备中存在可读取图片视频文件。
1415  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1416  let fetchOptions: photoAccessHelper.FetchOptions = {
1417    fetchColumns: [],
1418    predicates: predicates
1419  };
1420  let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
1421  let photoAsset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject();
1422  photoAsset.getReadOnlyFd((err, fd) => {
1423    if (fd !== undefined) {
1424      console.info('File fd' + fd);
1425      photoAsset.close(fd);
1426    } else {
1427      console.error(`getReadOnlyFd err: ${err.code}, ${err.message}`);
1428    }
1429  });
1430}
1431```
1432
1433### getReadOnlyFd<sup>(deprecated)</sup>
1434
1435getReadOnlyFd(): Promise&lt;number&gt;
1436
1437以只读方式打开当前文件,使用promise方式返回异步结果。
1438
1439> **说明:**
1440>
1441> 从API version 10开始支持,从API version 11开始废弃。出于安全考量,不再提供获取正式媒体文件句柄的接口。
1442
1443**注意**:返回的文件描述符在使用完毕后需要调用close进行释放。
1444
1445**需要权限**:ohos.permission.READ_IMAGEVIDEO
1446
1447**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1448
1449**返回值:**
1450
1451| 类型                    | 说明            |
1452| --------------------- | ------------- |
1453| Promise&lt;number&gt; | Promise对象,返回文件描述符。 |
1454
1455**错误码:**
1456
1457接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1458
1459| 错误码ID | 错误信息 |
1460| -------- | ---------------------------------------- |
1461| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
1462| 13900012     | Permission denied.         |
1463| 13900020     | Invalid argument.         |
1464| 14000011       | System inner fail.         |
1465
1466**示例:**
1467
1468```ts
1469async function example() {
1470  console.info('getReadOnlyFdDemo');
1471  try {
1472    // 需要保证设备中存在可读取图片视频文件。
1473    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1474    let fetchOptions: photoAccessHelper.FetchOptions = {
1475      fetchColumns: [],
1476      predicates: predicates
1477    };
1478    let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
1479    let photoAsset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject();
1480    let fd: number = await photoAsset.getReadOnlyFd();
1481    if (fd !== undefined) {
1482      console.info('File fd' + fd);
1483      photoAsset.close(fd);
1484    } else {
1485      console.error('getReadOnlyFd fail');
1486    }
1487  } catch (err) {
1488    console.error(`getReadOnlyFd demo err: ${err.code}, ${err.message}`);
1489  }
1490}
1491```
1492
1493### close<sup>(deprecated)</sup>
1494
1495close(fd: number, callback: AsyncCallback&lt;void&gt;): void
1496
1497关闭当前文件,使用callback方式返回异步结果。
1498
1499> **说明:**
1500>
1501> 从API version 10开始支持,从API version 11开始废弃。出于安全考量,不再提供获取正式媒体文件句柄的接口。对应的close接口一并废弃。
1502
1503**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1504
1505**参数:**
1506
1507| 参数名      | 类型                        | 必填   | 说明    |
1508| -------- | ------------------------- | ---- | ----- |
1509| fd       | number                    | 是    | 文件描述符。 |
1510| callback | AsyncCallback&lt;void&gt; | 是    | callback返回void。 |
1511
1512**错误码:**
1513
1514接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1515
1516| 错误码ID | 错误信息 |
1517| -------- | ---------------------------------------- |
1518| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
1519| 13900020     | Invalid argument.         |
1520| 14000011       | System inner fail.         |
1521
1522**示例:**
1523
1524```ts
1525import { dataSharePredicates } from '@kit.ArkData';
1526
1527async function example() {
1528  console.info('closeDemo');
1529  try {
1530    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1531    let fetchOption: photoAccessHelper.FetchOptions = {
1532      fetchColumns: [],
1533      predicates: predicates
1534    };
1535    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
1536    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
1537    let fd: number = await photoAsset.open('rw');
1538    console.info('file fd', fd);
1539    photoAsset.close(fd, (err) => {
1540      if (err === undefined) {
1541        console.info('asset close succeed.');
1542      } else {
1543        console.error(`close failed, error: ${err.code}, ${err.message}`);
1544      }
1545    });
1546  } catch (err) {
1547    console.error(`close failed, error: ${err.code}, ${err.message}`);
1548  }
1549}
1550```
1551
1552### close<sup>(deprecated)</sup>
1553
1554close(fd: number): Promise&lt;void&gt;
1555
1556关闭当前文件,使用promise方式返回异步结果。
1557
1558> **说明:**
1559>
1560> 从API version 10开始支持,从API version 11开始废弃。出于安全考量,不再提供获取正式媒体文件句柄的接口。对应的close接口一并废弃。
1561
1562**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1563
1564**参数:**
1565
1566| 参数名  | 类型     | 必填   | 说明    |
1567| ---- | ------ | ---- | ----- |
1568| fd   | number | 是    | 文件描述符。 |
1569
1570**返回值:**
1571
1572| 类型                  | 说明         |
1573| ------------------- | ---------- |
1574| Promise&lt;void&gt; | Promise对象,返回void。 |
1575
1576**错误码:**
1577
1578接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1579
1580| 错误码ID | 错误信息 |
1581| -------- | ---------------------------------------- |
1582| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
1583| 13900020     | Invalid argument.         |
1584| 14000011       | System inner fail.         |
1585
1586**示例:**
1587
1588```ts
1589import { dataSharePredicates } from '@kit.ArkData';
1590
1591async function example() {
1592  console.info('closeDemo');
1593  try {
1594    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1595    let fetchOption: photoAccessHelper.FetchOptions = {
1596      fetchColumns: [],
1597      predicates: predicates
1598    };
1599    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
1600    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
1601    let fd = await asset.open('rw');
1602    console.info('file fd', fd);
1603    await asset.close(fd);
1604    console.info('asset close succeed.');
1605  } catch (err) {
1606    console.error(`close failed, error: ${err.code}, ${err.message}`);
1607  }
1608}
1609```
1610
1611### getThumbnail
1612
1613getThumbnail(callback: AsyncCallback&lt;image.PixelMap&gt;): void
1614
1615获取文件的缩略图,使用callback方式返回异步结果。
1616
1617**需要权限**:ohos.permission.READ_IMAGEVIDEO
1618
1619**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1620
1621**参数:**
1622
1623| 参数名      | 类型                                  | 必填   | 说明               |
1624| -------- | ----------------------------------- | ---- | ---------------- |
1625| callback | AsyncCallback&lt;[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)&gt; | 是    | callback返回缩略图的PixelMap。 |
1626
1627**错误码:**
1628
1629接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1630
1631| 错误码ID | 错误信息 |
1632| -------- | ---------------------------------------- |
1633| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
1634| 13900012     | Permission denied.         |
1635| 13900020     | Invalid argument.         |
1636| 14000011       | System inner fail.         |
1637
1638**示例:**
1639
1640```ts
1641import { dataSharePredicates } from '@kit.ArkData';
1642
1643async function example() {
1644  console.info('getThumbnailDemo');
1645  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1646  let fetchOption: photoAccessHelper.FetchOptions = {
1647    fetchColumns: [],
1648    predicates: predicates
1649  };
1650  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
1651  let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
1652  console.info('asset displayName = ', asset.displayName);
1653  asset.getThumbnail((err, pixelMap) => {
1654    if (err === undefined) {
1655      console.info('getThumbnail successful ' + pixelMap);
1656    } else {
1657      console.error(`getThumbnail fail with error: ${err.code}, ${err.message}`);
1658    }
1659  });
1660}
1661```
1662
1663### getThumbnail
1664
1665getThumbnail(size: image.Size, callback: AsyncCallback&lt;image.PixelMap&gt;): void
1666
1667获取文件的缩略图,传入缩略图尺寸,使用callback方式返回异步结果。
1668
1669**需要权限**:ohos.permission.READ_IMAGEVIDEO
1670
1671**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1672
1673**参数:**
1674
1675| 参数名      | 类型                                  | 必填   | 说明               |
1676| -------- | ----------------------------------- | ---- | ---------------- |
1677| size     | [image.Size](../apis-image-kit/js-apis-image.md#size) | 是    | 缩略图尺寸。            |
1678| callback | AsyncCallback&lt;[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)&gt; | 是    | callback返回缩略图的PixelMap。 |
1679
1680**错误码:**
1681
1682接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1683
1684| 错误码ID | 错误信息 |
1685| -------- | ---------------------------------------- |
1686| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
1687| 13900012     | Permission denied.         |
1688| 13900020     | Invalid argument.         |
1689| 14000011       | System inner fail.         |
1690
1691**示例:**
1692
1693```ts
1694import { dataSharePredicates } from '@kit.ArkData';
1695import { image } from '@kit.ImageKit';
1696
1697async function example() {
1698  console.info('getThumbnailDemo');
1699  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1700  let fetchOption: photoAccessHelper.FetchOptions = {
1701    fetchColumns: [],
1702    predicates: predicates
1703  };
1704  let size: image.Size = { width: 720, height: 720 };
1705  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
1706  let asset = await fetchResult.getFirstObject();
1707  console.info('asset displayName = ', asset.displayName);
1708  asset.getThumbnail(size, (err, pixelMap) => {
1709    if (err === undefined) {
1710      console.info('getThumbnail successful ' + pixelMap);
1711    } else {
1712      console.error(`getThumbnail fail with error: ${err.code}, ${err.message}`);
1713    }
1714  });
1715}
1716```
1717
1718### getThumbnail
1719
1720getThumbnail(size?: image.Size): Promise&lt;image.PixelMap&gt;
1721
1722获取文件的缩略图,传入缩略图尺寸,使用promise方式返回异步结果。
1723
1724**需要权限**:ohos.permission.READ_IMAGEVIDEO
1725
1726**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1727
1728**参数:**
1729
1730| 参数名  | 类型             | 必填   | 说明    |
1731| ---- | -------------- | ---- | ----- |
1732| size | [image.Size](../apis-image-kit/js-apis-image.md#size) | 否    | 缩略图尺寸。 |
1733
1734**返回值:**
1735
1736| 类型                            | 说明                    |
1737| ----------------------------- | --------------------- |
1738| Promise&lt;[image.PixelMap](../apis-image-kit/js-apis-image.md#pixelmap7)&gt; | Promise对象,返回缩略图的PixelMap。 |
1739
1740**错误码:**
1741
1742接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1743
1744| 错误码ID | 错误信息 |
1745| -------- | ---------------------------------------- |
1746| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
1747| 13900012     | Permission denied.         |
1748| 13900020     | Invalid argument.         |
1749| 14000011       | System inner fail.         |
1750
1751**示例:**
1752
1753```ts
1754import { dataSharePredicates } from '@kit.ArkData';
1755import { image } from '@kit.ImageKit';
1756import { BusinessError } from '@kit.BasicServicesKit';
1757
1758async function example() {
1759  console.info('getThumbnailDemo');
1760  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1761  let fetchOption: photoAccessHelper.FetchOptions = {
1762    fetchColumns: [],
1763    predicates: predicates
1764  };
1765  let size: image.Size = { width: 720, height: 720 };
1766  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
1767  let asset = await fetchResult.getFirstObject();
1768  console.info('asset displayName = ', asset.displayName);
1769  asset.getThumbnail(size).then((pixelMap) => {
1770    console.info('getThumbnail successful ' + pixelMap);
1771  }).catch((err: BusinessError) => {
1772    console.error(`getThumbnail fail with error: ${err.code}, ${err.message}`);
1773  });
1774}
1775```
1776
1777### clone<sup>14+</sup>
1778
1779clone(title: string): Promise&lt;PhotoAsset&gt;
1780
1781将一个资产进行克隆,支持设置文件名,不支持修改文件类型。
1782
1783**需要权限**:ohos.permission.WRITE\_IMAGEVIDEO
1784
1785**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1786
1787**参数:**
1788
1789| 参数名        | 类型      | 必填   | 说明                                 |
1790| ---------- | ------- | ---- | ---------------------------------- |
1791| title| string | 是    | 克隆后资产的标题。参数规格为:<br>- 不应包含扩展名。<br>- 文件名字符串长度为1~255(资产文件名为标题+扩展名)。<br>- 不允许出现非法字符,包括:. \ / : * ? " ' ` < > \| { } [ ] |
1792
1793**返回值:**
1794
1795| 类型                | 说明                    |
1796| ------------------- | ----------------------- |
1797| Promise&lt;PhotoAsset&gt; | Promise对象,返回[PhotoAsset](#photoasset)。 |
1798
1799**错误码:**
1800
1801接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1802
1803| 错误码ID    | 错误信息                              |
1804| :------- | :-------------------------------- |
1805| 201 | Permission denied. |
1806| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
1807| 14000011 | Internal system error. It is recommended to retry and check the logs.Possible causes: 1. Database corrupted; 2. The file system is abnormal; 3. The IPC request timed out. |
1808
1809**示例:**
1810
1811```ts
1812import { dataSharePredicates } from '@kit.ArkData';
1813import { systemDateTime } from '@kit.BasicServicesKit';
1814
1815async function example() {
1816  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
1817  let fetchOptions: photoAccessHelper.FetchOptions = {
1818    fetchColumns: [],
1819    predicates: predicates
1820  };
1821  try {
1822    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
1823    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
1824    let title: string = systemDateTime.getTime().toString();
1825    let newAsset: photoAccessHelper.PhotoAsset = await photoAsset.clone(title);
1826    console.info('get new asset successfully');
1827  } catch (error) {
1828    console.error(`failed to get new asset. message =  ${error.code}, ${error.message}`);
1829  }
1830}
1831```
1832
1833## PhotoViewPicker
1834
1835图库选择器对象,用来支撑选择图片/视频等用户场景。在使用前,需要先创建PhotoViewPicker实例。
1836
1837**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1838
1839**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1840
1841**示例:**
1842
1843```ts
1844let photoPicker = new photoAccessHelper.PhotoViewPicker();
1845```
1846
1847### select
1848
1849select(option?: PhotoSelectOptions) : Promise&lt;PhotoSelectResult&gt;
1850
1851通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用promise异步返回形式,传入可选参数PhotoSelectOptions对象,返回PhotoSelectResult对象。
1852
1853**注意**:此接口返回的PhotoSelectResult对象中的photoUris具有永久授权,可通过调用[photoAccessHelper.getAssets接口](#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。
1854
1855**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1856
1857**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1858
1859**参数:**
1860
1861| 参数名  | 类型    | 必填 | 说明                       |
1862| ------- | ------- | ---- | -------------------------- |
1863| option | [PhotoSelectOptions](#photoselectoptions) | 否   | photoPicker选择选项,若无此参数,则默认选择媒体文件类型为图片和视频类型,默认选择媒体文件数量的最大值为50。 |
1864
1865**返回值:**
1866
1867| 类型                            | 说明    |
1868| ----------------------------- | :---- |
1869| Promise&lt;[PhotoSelectResult](#photoselectresult)&gt; | Promise对象。返回photoPicker选择后的结果集 |
1870
1871**错误码:**
1872
1873接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1874
1875| 错误码ID | 错误信息 |
1876| -------- | ---------------------------------------- |
1877| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
1878| 13900042      | Unknown error.         |
1879
1880**示例:**
1881
1882```ts
1883import { BusinessError } from '@kit.BasicServicesKit';
1884async function example01() {
1885  try {
1886    let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
1887    PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
1888    PhotoSelectOptions.maxSelectNumber = 5;
1889    let photoPicker = new photoAccessHelper.PhotoViewPicker();
1890    photoPicker.select(PhotoSelectOptions).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => {
1891      console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult));
1892    }).catch((err: BusinessError) => {
1893      console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`);
1894    });
1895  } catch (error) {
1896    let err: BusinessError = error as BusinessError;
1897    console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`);
1898  }
1899}
1900```
1901
1902### select
1903
1904select(option: PhotoSelectOptions, callback: AsyncCallback&lt;PhotoSelectResult&gt;) : void
1905
1906通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用callback异步返回形式,传入参数PhotoSelectOptions对象,返回PhotoSelectResult对象。
1907
1908**注意**:此接口返回的PhotoSelectResult对象中的photoUris具有永久授权,可通过调用[photoAccessHelper.getAssets接口](#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。
1909
1910**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1911
1912**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1913
1914**参数:**
1915
1916| 参数名  | 类型    | 必填 | 说明                       |
1917| ------- | ------- | ---- | -------------------------- |
1918| option | [PhotoSelectOptions](#photoselectoptions) | 是   | photoPicker选择选项 |
1919| callback | AsyncCallback&lt;[PhotoSelectResult](#photoselectresult)&gt;      | 是   | callback 返回photoPicker选择后的结果集。 |
1920
1921**错误码:**
1922
1923接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1924
1925| 错误码ID | 错误信息 |
1926| -------- | ---------------------------------------- |
1927| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
1928| 13900042      | Unknown error.         |
1929
1930**示例:**
1931
1932```ts
1933import { BusinessError } from '@kit.BasicServicesKit';
1934async function example02() {
1935  try {
1936    let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
1937    PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
1938    PhotoSelectOptions.maxSelectNumber = 5;
1939    let photoPicker = new photoAccessHelper.PhotoViewPicker();
1940    photoPicker.select(PhotoSelectOptions, (err: BusinessError, PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => {
1941      if (err) {
1942        console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`);
1943        return;
1944      }
1945      console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult));
1946    });
1947  } catch (error) {
1948    let err: BusinessError = error as BusinessError;
1949    console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`);
1950  }
1951}
1952```
1953
1954### select
1955
1956select(callback: AsyncCallback&lt;PhotoSelectResult&gt;) : void
1957
1958通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用callback异步返回形式,返回PhotoSelectResult对象。
1959
1960**注意**:此接口返回的PhotoSelectResult对象中的photoUris具有永久授权,可通过调用[photoAccessHelper.getAssets接口](#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。
1961
1962**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1963
1964**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
1965
1966**参数:**
1967
1968| 参数名  | 类型    | 必填 | 说明                       |
1969| ------- | ------- | ---- | -------------------------- |
1970| callback | AsyncCallback&lt;[PhotoSelectResult](#photoselectresult)&gt;      | 是   | callback 返回photoPicker选择后的结果集。 |
1971
1972**错误码:**
1973
1974接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
1975
1976| 错误码ID | 错误信息 |
1977| -------- | ---------------------------------------- |
1978| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
1979| 13900042      | Unknown error.         |
1980
1981**示例:**
1982
1983```ts
1984import { BusinessError } from '@kit.BasicServicesKit';
1985async function example03() {
1986  try {
1987    let photoPicker = new photoAccessHelper.PhotoViewPicker();
1988    photoPicker.select((err: BusinessError, PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => {
1989      if (err) {
1990        console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`);
1991        return;
1992      }
1993      console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult));
1994    });
1995  } catch (error) {
1996    let err: BusinessError = error as BusinessError;
1997    console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`);
1998  }
1999}
2000```
2001
2002## FetchResult
2003
2004文件检索结果集。
2005
2006### getCount
2007
2008getCount(): number
2009
2010获取文件检索结果中的文件总数。
2011
2012**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2013
2014**返回值:**
2015
2016| 类型     | 说明       |
2017| ------ | -------- |
2018| number | 检索到的文件总数。 |
2019
2020**错误码:**
2021
2022接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2023
2024| 错误码ID | 错误信息 |
2025| -------- | ---------------------------------------- |
2026| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
2027| 13900020     | Invalid argument.         |
2028| 14000011       | System inner fail.         |
2029
2030**示例:**
2031
2032```ts
2033import { dataSharePredicates } from '@kit.ArkData';
2034
2035async function example() {
2036  console.info('getCountDemo');
2037  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2038  let fetchOption: photoAccessHelper.FetchOptions = {
2039    fetchColumns: [],
2040    predicates: predicates
2041  };
2042  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
2043  let fetchCount = fetchResult.getCount();
2044  console.info('fetchCount = ', fetchCount);
2045}
2046```
2047
2048### isAfterLast
2049
2050isAfterLast(): boolean
2051
2052检查结果集是否指向最后一行。
2053
2054**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2055
2056**返回值:**
2057
2058| 类型      | 说明                                 |
2059| ------- | ---------------------------------- |
2060| boolean | 当读到最后一条记录后,后续没有记录返回true,否则返回false。 |
2061
2062**错误码:**
2063
2064接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2065
2066| 错误码ID | 错误信息 |
2067| -------- | ---------------------------------------- |
2068| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
2069| 13900020     | Invalid argument.         |
2070| 14000011       | System inner fail.         |
2071
2072**示例:**
2073
2074```ts
2075import { dataSharePredicates } from '@kit.ArkData';
2076
2077async function example() {
2078  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2079  let fetchOption: photoAccessHelper.FetchOptions = {
2080    fetchColumns: [],
2081    predicates: predicates
2082  };
2083  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
2084  let fetchCount = fetchResult.getCount();
2085  console.info('count:' + fetchCount);
2086  let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getLastObject();
2087  if (fetchResult.isAfterLast()) {
2088    console.info('photoAsset isAfterLast displayName = ', photoAsset.displayName);
2089  } else {
2090    console.info('photoAsset not isAfterLast.');
2091  }
2092}
2093```
2094
2095### close
2096
2097close(): void
2098
2099释放FetchResult实例并使其失效。无法调用其他方法。
2100
2101**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2102
2103**错误码:**
2104
2105接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2106
2107| 错误码ID | 错误信息 |
2108| -------- | ---------------------------------------- |
2109| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
2110| 13900020     | Invalid argument.         |
2111| 14000011       | System inner fail.         |
2112
2113**示例:**
2114
2115```ts
2116import { dataSharePredicates } from '@kit.ArkData';
2117
2118async function example() {
2119  console.info('fetchResultCloseDemo');
2120  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2121  let fetchOption: photoAccessHelper.FetchOptions = {
2122    fetchColumns: [],
2123    predicates: predicates
2124  };
2125  try {
2126    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
2127    fetchResult.close();
2128    console.info('close succeed.');
2129  } catch (err) {
2130    console.error(`close fail. error: ${err.code}, ${err.message}`);
2131  }
2132}
2133```
2134
2135### getFirstObject
2136
2137getFirstObject(callback: AsyncCallback&lt;T&gt;): void
2138
2139获取文件检索结果中的第一个文件资产。此方法使用callback形式返回结果。
2140
2141**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2142
2143**参数:**
2144
2145| 参数名   | 类型                                          | 必填 | 说明                                        |
2146| -------- | --------------------------------------------- | ---- | ------------------------------------------- |
2147| callback | AsyncCallback&lt;T&gt; | 是   | 异步获取结果集中的第一个完成后的回调。 |
2148
2149**错误码:**
2150
2151接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2152
2153| 错误码ID | 错误信息 |
2154| -------- | ---------------------------------------- |
2155| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
2156| 13900020     | Invalid argument.         |
2157| 14000011       | System inner fail.         |
2158
2159**示例:**
2160
2161```ts
2162import { dataSharePredicates } from '@kit.ArkData';
2163
2164async function example() {
2165  console.info('getFirstObjectDemo');
2166  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2167  let fetchOption: photoAccessHelper.FetchOptions = {
2168    fetchColumns: [],
2169    predicates: predicates
2170  };
2171  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
2172  fetchResult.getFirstObject((err, photoAsset) => {
2173    if (photoAsset !== undefined) {
2174      console.info('photoAsset displayName: ', photoAsset.displayName);
2175    } else {
2176      console.error(`photoAsset failed with err:${err.code}, ${err.message}`);
2177    }
2178  });
2179}
2180```
2181
2182### getFirstObject
2183
2184getFirstObject(): Promise&lt;T&gt;
2185
2186获取文件检索结果中的第一个文件资产。此方法使用promise方式来异步返回。
2187
2188**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2189
2190**返回值:**
2191
2192| 类型                                    | 说明                       |
2193| --------------------------------------- | -------------------------- |
2194| Promise&lt;T&gt; | Promise对象,返回结果集中第一个对象。 |
2195
2196**错误码:**
2197
2198接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2199
2200| 错误码ID | 错误信息 |
2201| -------- | ---------------------------------------- |
2202| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
2203| 13900020     | Invalid argument.         |
2204| 14000011       | System inner fail.         |
2205
2206**示例:**
2207
2208```ts
2209import { dataSharePredicates } from '@kit.ArkData';
2210
2211async function example() {
2212  console.info('getFirstObjectDemo');
2213  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2214  let fetchOption: photoAccessHelper.FetchOptions = {
2215    fetchColumns: [],
2216    predicates: predicates
2217  };
2218  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
2219  let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
2220  console.info('photoAsset displayName: ', photoAsset.displayName);
2221}
2222```
2223
2224### getNextObject
2225
2226getNextObject(callback: AsyncCallback&lt;T&gt;): void
2227
2228获取文件检索结果中的下一个文件资产。此方法使用callback形式返回结果。
2229在调用此方法之前,必须使用[isAfterLast()](#isafterlast)来检查当前位置是否为最后一行。
2230
2231**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2232
2233**参数:**
2234
2235| 参数名    | 类型                                          | 必填 | 说明                                      |
2236| --------- | --------------------------------------------- | ---- | ----------------------------------------- |
2237| callback | AsyncCallback&lt;T&gt; | 是   | 异步返回结果集中下一个之后的回调。 |
2238
2239**错误码:**
2240
2241接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2242
2243| 错误码ID | 错误信息 |
2244| -------- | ---------------------------------------- |
2245| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
2246| 13900020     | Invalid argument.         |
2247| 14000011       | System inner fail.         |
2248
2249**示例:**
2250
2251```ts
2252import { dataSharePredicates } from '@kit.ArkData';
2253
2254async function example() {
2255  console.info('getNextObjectDemo');
2256  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2257  let fetchOption: photoAccessHelper.FetchOptions = {
2258    fetchColumns: [],
2259    predicates: predicates
2260  };
2261  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
2262  await fetchResult.getFirstObject();
2263  if (!fetchResult.isAfterLast()) {
2264    fetchResult.getNextObject((err, photoAsset) => {
2265      if (photoAsset !== undefined) {
2266        console.info('photoAsset displayName: ', photoAsset.displayName);
2267      } else {
2268        console.error(`photoAsset failed with err: ${err.code}, ${err.message}`);
2269      }
2270    });
2271  }
2272}
2273```
2274
2275### getNextObject
2276
2277getNextObject(): Promise&lt;T&gt;
2278
2279获取文件检索结果中的下一个文件资产。此方法使用promise方式来异步返回。
2280在调用此方法之前,必须使用[isAfterLast()](#isafterlast)来检查当前位置是否为最后一行。
2281
2282**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2283
2284**返回值:**
2285
2286| 类型                                    | 说明              |
2287| --------------------------------------- | ----------------- |
2288| Promise&lt;T&gt; | Promise对象,返回结果集中下一个对象。 |
2289
2290**错误码:**
2291
2292接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2293
2294| 错误码ID | 错误信息 |
2295| -------- | ---------------------------------------- |
2296| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
2297| 13900020     | Invalid argument.         |
2298| 14000011       | System inner fail.         |
2299
2300**示例:**
2301
2302```ts
2303import { dataSharePredicates } from '@kit.ArkData';
2304
2305async function example() {
2306  console.info('getNextObjectDemo');
2307  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2308  let fetchOption: photoAccessHelper.FetchOptions = {
2309    fetchColumns: [],
2310    predicates: predicates
2311  };
2312  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
2313  await fetchResult.getFirstObject();
2314  if (!fetchResult.isAfterLast()) {
2315    let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getNextObject();
2316    console.info('photoAsset displayName: ', photoAsset.displayName);
2317  }
2318}
2319```
2320
2321### getLastObject
2322
2323getLastObject(callback: AsyncCallback&lt;T&gt;): void
2324
2325获取文件检索结果中的最后一个文件资产。此方法使用callback回调来返回。
2326
2327**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2328
2329**参数:**
2330
2331| 参数名   | 类型                                          | 必填 | 说明                        |
2332| -------- | --------------------------------------------- | ---- | --------------------------- |
2333| callback | AsyncCallback&lt;T&gt; | 是   | 异步返回结果集中最后一个的回调。 |
2334
2335**错误码:**
2336
2337接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2338
2339| 错误码ID | 错误信息 |
2340| -------- | ---------------------------------------- |
2341| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
2342| 13900020     | Invalid argument.         |
2343| 14000011       | System inner fail.         |
2344
2345**示例:**
2346
2347```ts
2348import { dataSharePredicates } from '@kit.ArkData';
2349
2350async function example() {
2351  console.info('getLastObjectDemo');
2352  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2353  let fetchOption: photoAccessHelper.FetchOptions = {
2354    fetchColumns: [],
2355    predicates: predicates
2356  };
2357  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
2358  fetchResult.getLastObject((err, photoAsset) => {
2359    if (photoAsset !== undefined) {
2360      console.info('photoAsset displayName: ', photoAsset.displayName);
2361    } else {
2362      console.error(`photoAsset failed with err: ${err.code}, ${err.message}`);
2363    }
2364  });
2365}
2366```
2367
2368### getLastObject
2369
2370getLastObject(): Promise&lt;T&gt;
2371
2372获取文件检索结果中的最后一个文件资产。此方法使用Promise方式来返回。
2373
2374**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2375
2376**返回值:**
2377
2378| 类型                                    | 说明              |
2379| --------------------------------------- | ----------------- |
2380| Promise&lt;T&gt; | Promise对象,返回结果集中最后一个对象。 |
2381
2382**错误码:**
2383
2384接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2385
2386| 错误码ID | 错误信息 |
2387| -------- | ---------------------------------------- |
2388| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
2389| 13900020     | Invalid argument.         |
2390| 14000011       | System inner fail.         |
2391
2392**示例:**
2393
2394```ts
2395import { dataSharePredicates } from '@kit.ArkData';
2396
2397async function example() {
2398  console.info('getLastObjectDemo');
2399  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2400  let fetchOption: photoAccessHelper.FetchOptions = {
2401    fetchColumns: [],
2402    predicates: predicates
2403  };
2404  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
2405  let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getLastObject();
2406  console.info('photoAsset displayName: ', photoAsset.displayName);
2407}
2408```
2409
2410### getObjectByPosition
2411
2412getObjectByPosition(index: number, callback: AsyncCallback&lt;T&gt;): void
2413
2414获取文件检索结果中具有指定索引的文件资产。此方法使用callback来返回。
2415
2416**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2417
2418**参数:**
2419
2420| 参数名       | 类型                                       | 必填   | 说明                 |
2421| -------- | ---------------------------------------- | ---- | ------------------ |
2422| index    | number                                   | 是    | 要获取的文件的索引,从0开始。     |
2423| callback | AsyncCallback&lt;T&gt; | 是    | 异步返回指定索引的文件资产的回调。 |
2424
2425**错误码:**
2426
2427接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2428
2429| 错误码ID | 错误信息 |
2430| -------- | ---------------------------------------- |
2431| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
2432| 13900020     | Invalid argument.         |
2433| 14000011       | System inner fail.         |
2434
2435**示例:**
2436
2437```ts
2438import { dataSharePredicates } from '@kit.ArkData';
2439
2440async function example() {
2441  console.info('getObjectByPositionDemo');
2442  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2443  let fetchOption: photoAccessHelper.FetchOptions = {
2444    fetchColumns: [],
2445    predicates: predicates
2446  };
2447  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
2448  fetchResult.getObjectByPosition(0, (err, photoAsset) => {
2449    if (photoAsset !== undefined) {
2450      console.info('photoAsset displayName: ', photoAsset.displayName);
2451    } else {
2452      console.error(`photoAsset failed with err: ${err.code}, ${err.message}`);
2453    }
2454  });
2455}
2456```
2457
2458### getObjectByPosition
2459
2460getObjectByPosition(index: number): Promise&lt;T&gt;
2461
2462获取文件检索结果中具有指定索引的文件资产。此方法使用Promise形式返回文件Asset。
2463
2464**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2465
2466**参数:**
2467
2468| 参数名    | 类型     | 必填   | 说明             |
2469| ----- | ------ | ---- | -------------- |
2470| index | number | 是    | 要获取的文件的索引,从0开始。 |
2471
2472**返回值:**
2473
2474| 类型                                    | 说明              |
2475| --------------------------------------- | ----------------- |
2476| Promise&lt;T&gt; | Promise对象,返回结果集中指定索引的一个对象。 |
2477
2478**错误码:**
2479
2480接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2481
2482| 错误码ID | 错误信息 |
2483| -------- | ---------------------------------------- |
2484| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
2485| 13900020     | Invalid argument.         |
2486| 14000011       | System inner fail.         |
2487
2488**示例:**
2489
2490```ts
2491import { dataSharePredicates } from '@kit.ArkData';
2492
2493async function example() {
2494  console.info('getObjectByPositionDemo');
2495  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2496  let fetchOption: photoAccessHelper.FetchOptions = {
2497    fetchColumns: [],
2498    predicates: predicates
2499  };
2500  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
2501  let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getObjectByPosition(0);
2502  console.info('photoAsset displayName: ', photoAsset.displayName);
2503}
2504```
2505
2506### getAllObjects
2507
2508getAllObjects(callback: AsyncCallback&lt;Array&lt;T&gt;&gt;): void
2509
2510获取文件检索结果中的所有文件资产。此方法使用callback形式返回结果。
2511
2512**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2513
2514**参数:**
2515
2516| 参数名   | 类型                                          | 必填 | 说明                                        |
2517| -------- | --------------------------------------------- | ---- | ------------------------------------------- |
2518| callback | AsyncCallback&lt;Array&lt;T&gt;&gt; | 是   | 异步获取结果集中的所有文件资产完成后的回调。 |
2519
2520**错误码:**
2521
2522接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2523
2524| 错误码ID | 错误信息 |
2525| -------- | ---------------------------------------- |
2526| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
2527| 13900020     | Invalid argument.         |
2528| 14000011       | System inner fail.         |
2529
2530**示例:**
2531
2532```ts
2533import { dataSharePredicates } from '@kit.ArkData';
2534
2535async function example() {
2536  console.info('getAllObjectDemo');
2537  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2538  let fetchOption: photoAccessHelper.FetchOptions = {
2539    fetchColumns: [],
2540    predicates: predicates
2541  };
2542  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
2543  fetchResult.getAllObjects((err, photoAssetList) => {
2544    if (photoAssetList !== undefined) {
2545      console.info('photoAssetList length: ', photoAssetList.length);
2546    } else {
2547      console.error(`photoAssetList failed with err:${err.code}, ${err.message}`);
2548    }
2549  });
2550}
2551```
2552
2553### getAllObjects
2554
2555getAllObjects(): Promise&lt;Array&lt;T&gt;&gt;
2556
2557获取文件检索结果中的所有文件资产。此方法使用promise方式来异步返回。
2558
2559**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2560
2561**返回值:**
2562
2563| 类型                                    | 说明                       |
2564| --------------------------------------- | -------------------------- |
2565| Promise&lt;Array&lt;T&gt;&gt; | Promise对象,返回结果集中所有文件资产数组。 |
2566
2567**错误码:**
2568
2569接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2570
2571| 错误码ID | 错误信息 |
2572| -------- | ---------------------------------------- |
2573| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
2574| 13900020     | Invalid argument.         |
2575| 14000011       | System inner fail.         |
2576
2577**示例:**
2578
2579```ts
2580import { dataSharePredicates } from '@kit.ArkData';
2581
2582async function example() {
2583  console.info('getAllObjectDemo');
2584  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2585  let fetchOption: photoAccessHelper.FetchOptions = {
2586    fetchColumns: [],
2587    predicates: predicates
2588  };
2589  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
2590  let photoAssetList: Array<photoAccessHelper.PhotoAsset> = await fetchResult.getAllObjects();
2591  console.info('photoAssetList length: ', photoAssetList.length);
2592}
2593```
2594
2595## Album
2596
2597实体相册
2598
2599### 属性
2600
2601**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2602
2603| 名称           | 类型    | 可读   | 可写  | 说明   |
2604| ------------ | ------ | ---- | ---- | ------- |
2605| albumType | [AlbumType](#albumtype) | 是    | 否    | 相册类型。    |
2606| albumSubtype | [AlbumSubtype](#albumsubtype) | 是    | 否   | 相册子类型。    |
2607| albumName | string | 是    | 用户相册可写,预置相册不可写   | 相册名称。    |
2608| albumUri | string | 是    | 否    | 相册Uri。   |
2609| count | number | 是    | 否    |  相册中文件数量。 |
2610| coverUri | string | 是    | 否    | 封面文件Uri。 |
2611| imageCount<sup>11+</sup> | number | 是   | 否   | 相册中图片数量。|
2612| videoCount<sup>11+</sup> | number | 是   | 否   | 相册中视频数量。|
2613
2614### getAssets
2615
2616getAssets(options: FetchOptions, callback: AsyncCallback&lt;FetchResult&lt;PhotoAsset&gt;&gt;): void
2617
2618获取相册中的文件。该方法使用callback形式来返回文件。
2619
2620**需要权限**:ohos.permission.READ_IMAGEVIDEO
2621
2622**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2623
2624**参数:**
2625
2626| 参数名   | 类型                      | 必填 | 说明       |
2627| -------- | ------------------------- | ---- | ---------- |
2628| options | [FetchOptions](#fetchoptions) | 是   | 检索选项。 |
2629| callback | AsyncCallback&lt;[FetchResult](#fetchresult)&lt;[PhotoAsset](#photoasset)&gt;&gt; | 是   | callback返回图片和视频数据结果集。 |
2630
2631**错误码:**
2632
2633接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2634
2635| 错误码ID | 错误信息 |
2636| -------- | ---------------------------------------- |
2637| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
2638| 13900012     | Permission denied.         |
2639| 13900020     | Invalid argument.         |
2640| 14000011       | System inner fail.         |
2641
2642**示例:**
2643
2644```ts
2645import { dataSharePredicates } from '@kit.ArkData';
2646
2647async function example() {
2648  console.info('albumGetAssetsDemoCallback');
2649  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2650  let albumFetchOptions: photoAccessHelper.FetchOptions = {
2651    fetchColumns: [],
2652    predicates: predicates
2653  };
2654  let fetchOption: photoAccessHelper.FetchOptions = {
2655    fetchColumns: [],
2656    predicates: predicates
2657  };
2658  let albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions);
2659  let album: photoAccessHelper.Album = await albumList.getFirstObject();
2660  album.getAssets(fetchOption, (err, albumFetchResult) => {
2661    if (albumFetchResult !== undefined) {
2662      console.info('album getAssets successfully, getCount: ' + albumFetchResult.getCount());
2663    } else {
2664      console.error(`album getAssets failed with error: ${err.code}, ${err.message}`);
2665    }
2666  });
2667}
2668```
2669
2670### getAssets
2671
2672getAssets(options: FetchOptions): Promise&lt;FetchResult&lt;PhotoAsset&gt;&gt;
2673
2674获取相册中的文件。该方法使用Promise来返回文件。
2675
2676**需要权限**:ohos.permission.READ_IMAGEVIDEO
2677
2678**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2679
2680**参数:**
2681
2682| 参数名   | 类型                      | 必填 | 说明       |
2683| -------- | ------------------------- | ---- | ---------- |
2684| options | [FetchOptions](#fetchoptions) | 是   | 检索选项。 |
2685
2686**返回值:**
2687
2688| 类型                                    | 说明              |
2689| --------------------------------------- | ----------------- |
2690| Promise&lt;[FetchResult](#fetchresult)&lt;[PhotoAsset](#photoasset)&gt;&gt; | Promise对象,返回图片和视频数据结果集。 |
2691
2692**错误码:**
2693
2694接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2695
2696| 错误码ID | 错误信息 |
2697| -------- | ---------------------------------------- |
2698| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
2699| 13900012     | Permission denied.         |
2700| 13900020     | Invalid argument.         |
2701| 14000011       | System inner fail.         |
2702
2703**示例:**
2704
2705```ts
2706import { dataSharePredicates } from '@kit.ArkData';
2707import { BusinessError } from '@kit.BasicServicesKit';
2708
2709async function example() {
2710  console.info('albumGetAssetsDemoPromise');
2711  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2712  let albumFetchOptions: photoAccessHelper.FetchOptions = {
2713    fetchColumns: [],
2714    predicates: predicates
2715  };
2716  let fetchOption: photoAccessHelper.FetchOptions = {
2717    fetchColumns: [],
2718    predicates: predicates
2719  };
2720  let albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions);
2721  let album: photoAccessHelper.Album = await albumList.getFirstObject();
2722  album.getAssets(fetchOption).then((albumFetchResult) => {
2723    console.info('album getAssets successfully, getCount: ' + albumFetchResult.getCount());
2724  }).catch((err: BusinessError) => {
2725    console.error(`album getAssets failed with error: ${err.code}, ${err.message}`);
2726  });
2727}
2728```
2729
2730### commitModify
2731
2732commitModify(callback: AsyncCallback&lt;void&gt;): void
2733
2734更新相册属性修改到数据库中。该方法使用callback形式来返回结果。
2735
2736**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
2737
2738**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2739
2740**参数:**
2741
2742| 参数名   | 类型                      | 必填 | 说明       |
2743| -------- | ------------------------- | ---- | ---------- |
2744| callback | AsyncCallback&lt;void&gt; | 是   | callback返回void。 |
2745
2746**错误码:**
2747
2748接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2749
2750| 错误码ID | 错误信息 |
2751| -------- | ---------------------------------------- |
2752| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
2753| 13900012     | Permission denied.         |
2754| 13900020     | Invalid argument.         |
2755| 14000011       | System inner fail.         |
2756
2757**示例:**
2758
2759```ts
2760import { dataSharePredicates } from '@kit.ArkData';
2761
2762async function example() {
2763  console.info('albumCommitModifyDemo');
2764  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2765  let albumFetchOptions: photoAccessHelper.FetchOptions = {
2766    fetchColumns: [],
2767    predicates: predicates
2768  };
2769  let albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions);
2770  let album: photoAccessHelper.Album = await albumList.getFirstObject();
2771  album.albumName = 'hello';
2772  album.commitModify((err) => {
2773    if (err !== undefined) {
2774      console.error(`commitModify failed with error: ${err.code}, ${err.message}`);
2775    } else {
2776      console.info('commitModify successfully');
2777    }
2778  });
2779}
2780```
2781
2782### commitModify
2783
2784commitModify(): Promise&lt;void&gt;
2785
2786更新相册属性修改到数据库中。该方法使用Promise来返回结果。
2787
2788**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
2789
2790**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2791
2792**返回值:**
2793
2794| 类型                  | 说明           |
2795| ------------------- | ------------ |
2796| Promise&lt;void&gt; | Promise对象,返回void。 |
2797
2798**错误码:**
2799
2800接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2801
2802| 错误码ID | 错误信息 |
2803| -------- | ---------------------------------------- |
2804| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
2805| 13900012     | Permission denied.         |
2806| 13900020     | Invalid argument.         |
2807| 14000011       | System inner fail.         |
2808
2809**示例:**
2810
2811```ts
2812import { dataSharePredicates } from '@kit.ArkData';
2813import { BusinessError } from '@kit.BasicServicesKit';
2814
2815async function example() {
2816  console.info('albumCommitModifyDemo');
2817  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2818  let albumFetchOptions: photoAccessHelper.FetchOptions = {
2819    fetchColumns: [],
2820    predicates: predicates
2821  };
2822  let albumList: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, albumFetchOptions);
2823  let album: photoAccessHelper.Album = await albumList.getFirstObject();
2824  album.albumName = 'hello';
2825  album.commitModify().then(() => {
2826    console.info('commitModify successfully');
2827  }).catch((err: BusinessError) => {
2828    console.error(`commitModify failed with error: ${err.code}, ${err.message}`);
2829  });
2830}
2831```
2832
2833### addAssets<sup>(deprecated)</sup>
2834
2835addAssets(assets: Array&lt;PhotoAsset&gt;, callback: AsyncCallback&lt;void&gt;): void
2836
2837往相册中添加图片或者视频,需要先预置相册和文件资源。该方法使用callback形式来返回结果。
2838
2839> **说明:**
2840>
2841> 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAlbumChangeRequest.addAssets](#addassets11)替代。
2842
2843**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
2844
2845**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2846
2847**参数:**
2848
2849| 参数名   | 类型                      | 必填 | 说明       |
2850| -------- | ------------------------- | ---- | ---------- |
2851| assets | Array&lt;[PhotoAsset](#photoasset)&gt; | 是   | 待添加到相册中的图片或视频数组。 |
2852| callback | AsyncCallback&lt;void&gt; | 是   | callback返回void。 |
2853
2854**错误码:**
2855
2856接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2857
2858| 错误码ID | 错误信息 |
2859| -------- | ---------------------------------------- |
2860| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
2861| 13900012     | Permission denied.         |
2862| 13900020     | Invalid argument.         |
2863| 14000011       | System inner fail.         |
2864
2865**示例:**
2866
2867```ts
2868import { dataSharePredicates } from '@kit.ArkData';
2869
2870async function example() {
2871  try {
2872    console.info('addAssetsDemoCallback');
2873    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2874    let fetchOption: photoAccessHelper.FetchOptions = {
2875      fetchColumns: [],
2876      predicates: predicates
2877    };
2878    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC);
2879    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
2880    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
2881    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
2882    album.addAssets([asset], (err) => {
2883      if (err === undefined) {
2884        console.info('album addAssets successfully');
2885      } else {
2886        console.error(`album addAssets failed with error: ${err.code}, ${err.message}`);
2887      }
2888    });
2889  } catch (err) {
2890    console.error(`addAssetsDemoCallback failed with error: ${err.code}, ${err.message}`);
2891  }
2892}
2893```
2894
2895### addAssets<sup>(deprecated)</sup>
2896
2897addAssets(assets: Array&lt;PhotoAsset&gt;): Promise&lt;void&gt;
2898
2899往相册中添加图片或者视频,需要先预置相册和文件资源。该方法使用Promise来返回结果。
2900
2901> **说明:**
2902>
2903> 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAlbumChangeRequest.addAssets](#addassets11)替代。
2904
2905**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
2906
2907**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2908
2909**参数:**
2910
2911| 参数名   | 类型                      | 必填 | 说明       |
2912| -------- | ------------------------- | ---- | ---------- |
2913| assets | Array&lt;[PhotoAsset](#photoasset)&gt; | 是   | 待添加到相册中的图片或视频数组。 |
2914
2915**返回值:**
2916
2917| 类型                                    | 说明              |
2918| --------------------------------------- | ----------------- |
2919|Promise&lt;void&gt; | Promise对象,返回void。 |
2920
2921**错误码:**
2922
2923接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2924
2925| 错误码ID | 错误信息 |
2926| -------- | ---------------------------------------- |
2927| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
2928| 13900012     | Permission denied.         |
2929| 13900020     | Invalid argument.         |
2930| 14000011       | System inner fail.         |
2931
2932**示例:**
2933
2934```ts
2935import { dataSharePredicates } from '@kit.ArkData';
2936import { BusinessError } from '@kit.BasicServicesKit';
2937
2938async function example() {
2939  try {
2940    console.info('addAssetsDemoPromise');
2941    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
2942    let fetchOption: photoAccessHelper.FetchOptions = {
2943      fetchColumns: [],
2944      predicates: predicates
2945    };
2946    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC);
2947    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
2948    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
2949    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
2950    album.addAssets([asset]).then(() => {
2951      console.info('album addAssets successfully');
2952    }).catch((err: BusinessError) => {
2953      console.error(`album addAssets failed with error: ${err.code}, ${err.message}`);
2954    });
2955  } catch (err) {
2956    console.error(`addAssetsDemoPromise failed with error: ${err.code}, ${err.message}`);
2957  }
2958}
2959```
2960
2961### removeAssets<sup>(deprecated)</sup>
2962
2963removeAssets(assets: Array&lt;PhotoAsset&gt;, callback: AsyncCallback&lt;void&gt;): void
2964
2965从相册中移除图片或者视频,需要先预置相册和文件资源。该方法使用callback形式来返回结果。
2966
2967> **说明:**
2968>
2969> 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAlbumChangeRequest.removeAssets](#removeassets11)替代。
2970
2971**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
2972
2973**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
2974
2975**参数:**
2976
2977| 参数名   | 类型                      | 必填 | 说明       |
2978| -------- | ------------------------- | ---- | ---------- |
2979| assets | Array&lt;[PhotoAsset](#photoasset)&gt; | 是   | 相册中待移除的图片或视频数组。 |
2980| callback | AsyncCallback&lt;void&gt; | 是   | callback返回void。 |
2981
2982**错误码:**
2983
2984接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
2985
2986| 错误码ID | 错误信息 |
2987| -------- | ---------------------------------------- |
2988| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
2989| 13900012     | Permission denied.         |
2990| 13900020     | Invalid argument.         |
2991| 14000011       | System inner fail.         |
2992
2993**示例:**
2994
2995```ts
2996import { dataSharePredicates } from '@kit.ArkData';
2997
2998async function example() {
2999  try {
3000    console.info('removeAssetsDemoCallback');
3001    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3002    let fetchOption: photoAccessHelper.FetchOptions = {
3003      fetchColumns: [],
3004      predicates: predicates
3005    };
3006    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC);
3007    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
3008    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOption);
3009    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
3010    album.removeAssets([asset], (err) => {
3011      if (err === undefined) {
3012        console.info('album removeAssets successfully');
3013      } else {
3014        console.error(`album removeAssets failed with error: ${err.code}, ${err.message}`);
3015      }
3016    });
3017  } catch (err) {
3018    console.error(`removeAssetsDemoCallback failed with error: ${err.code}, ${err.message}`);
3019  }
3020}
3021```
3022
3023### removeAssets<sup>(deprecated)</sup>
3024
3025removeAssets(assets: Array&lt;PhotoAsset&gt;): Promise&lt;void&gt;
3026
3027从相册中移除图片或者视频,需要先预置相册和文件资源。该方法使用Promise来返回结果。
3028
3029> **说明:**
3030>
3031> 从API version 10开始支持,从API version 11开始废弃。建议使用[MediaAlbumChangeRequest.removeAssets](#removeassets11)替代。
3032
3033**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
3034
3035**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3036
3037**参数:**
3038
3039| 参数名   | 类型                      | 必填 | 说明       |
3040| -------- | ------------------------- | ---- | ---------- |
3041| assets | Array&lt;[PhotoAsset](#photoasset)&gt; | 是   | 相册中待移除的图片或视频数组。 |
3042
3043**返回值:**
3044
3045| 类型                                    | 说明              |
3046| --------------------------------------- | ----------------- |
3047|Promise&lt;void&gt; | Promise对象,返回void。 |
3048
3049**错误码:**
3050
3051接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3052
3053| 错误码ID | 错误信息 |
3054| -------- | ---------------------------------------- |
3055| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
3056| 13900012     | Permission denied.         |
3057| 13900020     | Invalid argument.         |
3058| 14000011       | System inner fail.         |
3059
3060**示例:**
3061
3062```ts
3063import { dataSharePredicates } from '@kit.ArkData';
3064import { BusinessError } from '@kit.BasicServicesKit';
3065
3066async function example() {
3067  try {
3068    console.info('removeAssetsDemoPromise');
3069    let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3070    let fetchOption: photoAccessHelper.FetchOptions = {
3071      fetchColumns: [],
3072      predicates: predicates
3073    };
3074    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC);
3075    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
3076    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOption);
3077    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
3078    album.removeAssets([asset]).then(() => {
3079      console.info('album removeAssets successfully');
3080    }).catch((err: BusinessError) => {
3081      console.error(`album removeAssets failed with error: ${err.code}, ${err.message}`);
3082    });
3083  } catch (err) {
3084    console.error(`removeAssetsDemoPromise failed with error: ${err.code}, ${err.message}`);
3085  }
3086}
3087```
3088
3089## MediaAssetChangeRequest<sup>11+</sup>
3090
3091资产变更请求。
3092
3093**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3094
3095### constructor<sup>11+</sup>
3096
3097constructor(asset: PhotoAsset)
3098
3099构造函数。
3100
3101**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
3102
3103**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3104
3105**参数:**
3106
3107| 参数名   | 类型                      | 必填 | 说明       |
3108| -------- | ------------------------- | ---- | ---------- |
3109| asset | [PhotoAsset](#photoasset) | 是   | 需要变更的资产。 |
3110
3111**错误码:**
3112
3113接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3114
3115| 错误码ID | 错误信息 |
3116| -------- | ---------------------------------------- |
3117| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
3118| 14000011       | System inner fail.          |
3119
3120**示例:**
3121
3122```ts
3123import { dataSharePredicates } from '@kit.ArkData';
3124
3125async function example() {
3126  console.info('MediaAssetChangeRequest constructorDemo');
3127  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3128  let fetchOptions: photoAccessHelper.FetchOptions = {
3129    fetchColumns: [],
3130    predicates: predicates
3131  };
3132  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
3133  let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
3134  let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(photoAsset);
3135}
3136```
3137
3138### createImageAssetRequest<sup>11+</sup>
3139
3140static createImageAssetRequest(context: Context, fileUri: string): MediaAssetChangeRequest
3141
3142创建图片资产变更请求。
3143
3144通过fileUri指定待创建资产的数据来源,可参考[FileUri](../apis-core-file-kit/js-apis-file-fileuri.md)。
3145
3146**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
3147
3148**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3149
3150**参数:**
3151
3152| 参数名  | 类型    | 必填 | 说明                       |
3153| ------- | ------- | ---- | -------------------------- |
3154| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是   | 传入Ability实例的Context。 |
3155| fileUri | string | 是   | 图片资产的数据来源,在应用沙箱下的uri。 |
3156
3157**返回值:**
3158
3159| 类型                                    | 说明              |
3160| --------------------------------------- | ----------------- |
3161| [MediaAssetChangeRequest](#mediaassetchangerequest11) | 返回创建资产的变更请求。 |
3162
3163**错误码:**
3164
3165接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3166
3167| 错误码ID | 错误信息 |
3168| -------- | ---------------------------------------- |
3169| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
3170| 13900002   | No such file.         |
3171| 14000011   | System inner fail.        |
3172
3173**示例:**
3174
3175```ts
3176async function example() {
3177  console.info('createImageAssetRequestDemo');
3178  try {
3179    // 需要确保fileUri对应的资源存在。
3180    let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg';
3181    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createImageAssetRequest(context, fileUri);
3182    await phAccessHelper.applyChanges(assetChangeRequest);
3183    console.info('apply createImageAssetRequest successfully');
3184  } catch (err) {
3185    console.error(`createImageAssetRequestDemo failed with error: ${err.code}, ${err.message}`);
3186  }
3187}
3188```
3189
3190### createVideoAssetRequest<sup>11+</sup>
3191
3192static createVideoAssetRequest(context: Context, fileUri: string): MediaAssetChangeRequest
3193
3194创建视频资产变更请求。
3195
3196通过fileUri指定待创建资产的数据来源,可参考[FileUri](../apis-core-file-kit/js-apis-file-fileuri.md)。
3197
3198**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3199
3200**参数:**
3201
3202| 参数名  | 类型    | 必填 | 说明                       |
3203| ------- | ------- | ---- | -------------------------- |
3204| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是   | 传入Ability实例的Context。 |
3205| fileUri | string | 是   | 视频资产的数据来源,在应用沙箱下的uri。 |
3206
3207**返回值:**
3208
3209| 类型                                    | 说明              |
3210| --------------------------------------- | ----------------- |
3211| [MediaAssetChangeRequest](#mediaassetchangerequest11) | 返回创建资产的变更请求。 |
3212
3213**错误码:**
3214
3215接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3216
3217| 错误码ID | 错误信息 |
3218| -------- | ---------------------------------------- |
3219| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
3220| 13900002   | No such file.         |
3221| 14000011   | System inner fail.        |
3222
3223**示例:**
3224
3225```ts
3226async function example() {
3227  console.info('createVideoAssetRequestDemo');
3228  try {
3229    // 需要确保fileUri对应的资源存在。
3230    let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.mp4';
3231    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createVideoAssetRequest(context, fileUri);
3232    await phAccessHelper.applyChanges(assetChangeRequest);
3233    console.info('apply createVideoAssetRequest successfully');
3234  } catch (err) {
3235    console.error(`createVideoAssetRequestDemo failed with error: ${err.code}, ${err.message}`);
3236  }
3237}
3238```
3239
3240### createAssetRequest<sup>11+</sup>
3241
3242static createAssetRequest(context: Context, photoType: PhotoType, extension: string, options?: CreateOptions): MediaAssetChangeRequest
3243
3244指定待创建的文件类型和扩展名,创建资产变更请求。
3245
3246**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
3247
3248**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3249
3250**参数:**
3251
3252| 参数名  | 类型    | 必填 | 说明                       |
3253| ------- | ------- | ---- | -------------------------- |
3254| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是   | 传入Ability实例的Context。 |
3255| photoType  | [PhotoType](#phototype)        | 是   | 待创建的文件类型,IMAGE或者VIDEO类型。              |
3256| extension  | string        | 是   | 文件扩展名,例如:'jpg'。              |
3257| options  | [CreateOptions](#createoptions)        | 否   | 创建选项,例如:{title: 'testPhoto'}。              |
3258
3259**返回值:**
3260
3261| 类型                                    | 说明              |
3262| --------------------------------------- | ----------------- |
3263| [MediaAssetChangeRequest](#mediaassetchangerequest11) | 返回创建资产的变更请求。 |
3264
3265**错误码:**
3266
3267接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3268
3269| 错误码ID | 错误信息 |
3270| -------- | ---------------------------------------- |
3271| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
3272| 14000011       | System inner fail.         |
3273
3274**示例:**
3275
3276```ts
3277async function example() {
3278  console.info('createAssetRequestDemo');
3279  try {
3280    let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE;
3281    let extension: string = 'jpg';
3282    let options: photoAccessHelper.CreateOptions = {
3283      title: 'testPhoto'
3284    }
3285    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension, options);
3286    // 需要确保fileUri对应的资源存在。
3287    let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg';
3288    assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, fileUri);
3289    await phAccessHelper.applyChanges(assetChangeRequest);
3290    console.info('apply createAssetRequest successfully');
3291  } catch (err) {
3292    console.error(`createAssetRequestDemo failed with error: ${err.code}, ${err.message}`);
3293  }
3294}
3295```
3296
3297### deleteAssets<sup>11+</sup>
3298
3299static deleteAssets(context: Context, assets: Array&lt;PhotoAsset&gt;): Promise&lt;void&gt;
3300
3301删除媒体文件,删除的文件进入到回收站,使用Promise方式返回结果。
3302
3303**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
3304
3305**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3306
3307**参数:**
3308
3309| 参数名  | 类型    | 必填 | 说明                       |
3310| ------- | ------- | ---- | -------------------------- |
3311| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是   | 传入Ability实例的Context。 |
3312| assets | Array&lt;[PhotoAsset](#photoasset)&gt; | 是   | 待删除的媒体文件数组。 |
3313
3314**返回值:**
3315
3316| 类型                                    | 说明              |
3317| --------------------------------------- | ----------------- |
3318| Promise&lt;void&gt;| Promise对象,返回void。 |
3319
3320**错误码:**
3321
3322接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3323
3324| 错误码ID | 错误信息 |
3325| -------- | ---------------------------------------- |
3326| 201      |  Permission denied.         |
3327| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
3328| 14000011 |  System inner fail.         |
3329
3330**示例:**
3331
3332```ts
3333import { dataSharePredicates } from '@kit.ArkData';
3334
3335async function example() {
3336  console.info('deleteAssetsDemo');
3337  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3338  let fetchOptions: photoAccessHelper.FetchOptions = {
3339    fetchColumns: [],
3340    predicates: predicates
3341  };
3342  try {
3343    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
3344    let photoAssetList: Array<photoAccessHelper.PhotoAsset> = await fetchResult.getAllObjects();
3345    await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, photoAssetList);
3346    console.info('deleteAssets successfully');
3347  } catch (err) {
3348    console.error(`deleteAssetsDemo failed with error: ${err.code}, ${err.message}`);
3349  }
3350}
3351```
3352
3353### deleteAssets<sup>11+</sup>
3354
3355static deleteAssets(context: Context, uriList: Array&lt;string&gt;): Promise&lt;void&gt;
3356
3357删除媒体文件,删除的文件进入到回收站,使用Promise方式返回结果。
3358
3359**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
3360
3361**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3362
3363**参数:**
3364
3365| 参数名  | 类型    | 必填 | 说明                       |
3366| ------- | ------- | ---- | -------------------------- |
3367| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | 是   | 传入Ability实例的Context。 |
3368| uriList | Array&lt;string&gt; | 是   | 待删除的媒体文件uri数组。 |
3369
3370**返回值:**
3371
3372| 类型                                    | 说明              |
3373| --------------------------------------- | ----------------- |
3374| Promise&lt;void&gt;| Promise对象,返回void。 |
3375
3376**错误码:**
3377
3378接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3379
3380| 错误码ID | 错误信息 |
3381| -------- | ---------------------------------------- |
3382| 201      |  Permission denied.         |
3383| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
3384| 14000002 |  Invalid asset uri.         |
3385| 14000011 |  System inner fail.         |
3386
3387**示例:**
3388
3389```ts
3390import { dataSharePredicates } from '@kit.ArkData';
3391
3392async function example() {
3393  console.info('deleteAssetsDemo');
3394  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3395  let fetchOptions: photoAccessHelper.FetchOptions = {
3396    fetchColumns: [],
3397    predicates: predicates
3398  };
3399  try {
3400    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
3401    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
3402    await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [asset.uri]);
3403    console.info('deleteAssets successfully');
3404  } catch (err) {
3405    console.error(`deleteAssetsDemo failed with error: ${err.code}, ${err.message}`);
3406  }
3407}
3408```
3409
3410### getAsset<sup>11+</sup>
3411
3412getAsset(): PhotoAsset
3413
3414获取当前资产变更请求中的资产。
3415
3416**注意**:对于创建资产的变更请求,在调用[applyChanges](#applychanges11)提交生效之前,该接口返回null。
3417
3418**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
3419
3420**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3421
3422**返回值:**
3423
3424| 类型                                    | 说明              |
3425| --------------------------------------- | ----------------- |
3426| [PhotoAsset](#photoasset) | 返回当前资产变更请求中的资产。 |
3427
3428**错误码:**
3429
3430接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3431
3432| 错误码ID | 错误信息 |
3433| -------- | ---------------------------------------- |
3434| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
3435| 14000011 |  System inner fail.         |
3436
3437**示例:**
3438
3439```ts
3440async function example() {
3441  console.info('getAssetDemo');
3442  try {
3443    // 需要确保fileUri对应的资源存在。
3444    let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg';
3445    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createImageAssetRequest(context, fileUri);
3446    await phAccessHelper.applyChanges(assetChangeRequest);
3447    let asset: photoAccessHelper.PhotoAsset = assetChangeRequest.getAsset();
3448    console.info('create asset successfully with uri = ' + asset.uri);
3449  } catch (err) {
3450    console.error(`getAssetDemo failed with error: ${err.code}, ${err.message}`);
3451  }
3452}
3453```
3454
3455### setTitle<sup>11+</sup>
3456
3457setTitle(title: string): void
3458
3459修改媒体资产的标题。
3460
3461**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
3462
3463**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3464
3465**参数:**
3466
3467| 参数名        | 类型      | 必填   | 说明                                 |
3468| ---------- | ------- | ---- | ---------------------------------- |
3469| title | string | 是   | 待修改的资产标题。 |
3470
3471title参数规格为:
3472- 不应包含扩展名。
3473- 文件名字符串长度为1~255。
3474- 不允许出现非法字符,包括:<br> . \ / : * ? " ' ` < > | { } [ ]
3475
3476**错误码:**
3477
3478接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3479
3480| 错误码ID | 错误信息 |
3481| -------- | ---------------------------------------- |
3482| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
3483| 14000011       | System inner fail.         |
3484
3485**示例:**
3486
3487```ts
3488import { dataSharePredicates } from '@kit.ArkData';
3489import { BusinessError } from '@kit.BasicServicesKit';
3490
3491async function example() {
3492  console.info('setTitleDemo');
3493  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3494  let fetchOption: photoAccessHelper.FetchOptions = {
3495    fetchColumns: [],
3496    predicates: predicates
3497  };
3498  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
3499  let asset = await fetchResult.getFirstObject();
3500  let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset);
3501  let newTitle: string = 'newTitle';
3502  assetChangeRequest.setTitle(newTitle);
3503  phAccessHelper.applyChanges(assetChangeRequest).then(() => {
3504    console.info('apply setTitle successfully');
3505  }).catch((err: BusinessError) => {
3506    console.error(`apply setTitle failed with error: ${err.code}, ${err.message}`);
3507  });
3508}
3509```
3510
3511### getWriteCacheHandler<sup>11+</sup>
3512
3513getWriteCacheHandler(): Promise&lt;number&gt;
3514
3515获取临时文件写句柄。
3516
3517**注意**:对于同一个资产变更请求,不支持在成功获取临时文件写句柄后,重复调用该接口。
3518
3519**需要权限**:ohos.permission.WRITE_IMAGEVIDEO
3520
3521**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3522
3523**返回值:**
3524
3525| 类型                                    | 说明              |
3526| --------------------------------------- | ----------------- |
3527| Promise&lt;number&gt; | Promise对象,返回临时文件写句柄。 |
3528
3529**错误码:**
3530
3531接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3532
3533| 错误码ID | 错误信息 |
3534| -------- | ---------------------------------------- |
3535| 201   | Permission denied.        |
3536| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
3537| 14000011 |  System inner fail.         |
3538| 14000016 |  Operation Not Support.     |
3539
3540**示例:**
3541
3542```ts
3543import { fileIo } from '@kit.CoreFileKit';
3544
3545async function example() {
3546  console.info('getWriteCacheHandlerDemo');
3547  try {
3548    let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.VIDEO;
3549    let extension: string = 'mp4';
3550    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension);
3551    let fd: number = await assetChangeRequest.getWriteCacheHandler();
3552    console.info('getWriteCacheHandler successfully');
3553    // write date into fd.
3554    await fileIo.close(fd);
3555    await phAccessHelper.applyChanges(assetChangeRequest);
3556  } catch (err) {
3557    console.error(`getWriteCacheHandlerDemo failed with error: ${err.code}, ${err.message}`);
3558  }
3559}
3560```
3561
3562### addResource<sup>11+</sup>
3563
3564addResource(type: ResourceType, fileUri: string): void
3565
3566通过fileUri从应用沙箱添加资源。
3567
3568**注意**:对于同一个资产变更请求,不支持在成功添加资源后,重复调用该接口。对于动态照片,可调用两次该接口分别添加图片和视频资源。
3569
3570**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
3571
3572**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3573
3574**参数:**
3575
3576| 参数名  | 类型    | 必填 | 说明                       |
3577| ------- | ------- | ---- | -------------------------- |
3578| type | [ResourceType](#resourcetype11) | 是   | 待添加资源的类型。 |
3579| fileUri | string | 是   | 待添加资源的数据来源,在应用沙箱下的uri。 |
3580
3581**错误码:**
3582
3583接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3584
3585| 错误码ID | 错误信息 |
3586| -------- | ---------------------------------------- |
3587| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
3588| 13900002      |  No such file.   |
3589| 14000011 |  System inner fail.         |
3590| 14000016 |  Operation Not Support.     |
3591
3592**示例:**
3593
3594```ts
3595async function example() {
3596  console.info('addResourceByFileUriDemo');
3597  try {
3598    let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE;
3599    let extension: string = 'jpg';
3600    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension);
3601    // 需要确保fileUri对应的资源存在。
3602    let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.jpg';
3603    assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, fileUri);
3604    await phAccessHelper.applyChanges(assetChangeRequest);
3605    console.info('addResourceByFileUri successfully');
3606  } catch (err) {
3607    console.error(`addResourceByFileUriDemo failed with error: ${err.code}, ${err.message}`);
3608  }
3609}
3610```
3611
3612### addResource<sup>11+</sup>
3613
3614addResource(type: ResourceType, data: ArrayBuffer): void
3615
3616通过ArrayBuffer数据添加资源。
3617
3618**注意**:对于同一个资产变更请求,不支持在成功添加资源后,重复调用该接口。对于动态照片,可调用两次该接口分别添加图片和视频资源。
3619
3620**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
3621
3622**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3623
3624**参数:**
3625
3626| 参数名  | 类型    | 必填 | 说明                       |
3627| ------- | ------- | ---- | -------------------------- |
3628| type | [ResourceType](#resourcetype11) | 是   | 待添加资源的类型。 |
3629| data | ArrayBuffer | 是   | 待添加资源的数据。 |
3630
3631**错误码:**
3632
3633接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3634
3635| 错误码ID | 错误信息 |
3636| -------- | ---------------------------------------- |
3637| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
3638| 14000011 |  System inner fail.         |
3639| 14000016 |  Operation Not Support.     |
3640
3641**示例:**
3642
3643```ts
3644async function example() {
3645  console.info('addResourceByArrayBufferDemo');
3646  try {
3647    let photoType: photoAccessHelper.PhotoType = photoAccessHelper.PhotoType.IMAGE;
3648    let extension: string = 'jpg';
3649    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = photoAccessHelper.MediaAssetChangeRequest.createAssetRequest(context, photoType, extension);
3650    let buffer: ArrayBuffer = new ArrayBuffer(2048);
3651    assetChangeRequest.addResource(photoAccessHelper.ResourceType.IMAGE_RESOURCE, buffer);
3652    await phAccessHelper.applyChanges(assetChangeRequest);
3653    console.info('addResourceByArrayBuffer successfully');
3654  } catch (err) {
3655    console.error(`addResourceByArrayBufferDemo failed with error: ${err.code}, ${err.message}`);
3656  }
3657}
3658```
3659
3660### saveCameraPhoto<sup>12+</sup>
3661
3662saveCameraPhoto(): void
3663
3664保存相机拍摄的照片。
3665
3666**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3667
3668**错误码:**
3669
3670接口抛出错误码的详细介绍请参见[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3671
3672| 错误码ID | 错误信息 |
3673| -------- | ---------------------------------------- |
3674| 14000011 |  System inner fail.         |
3675| 14000016 |  Operation Not Support.         |
3676
3677**示例:**
3678
3679```ts
3680async function example(asset: photoAccessHelper.PhotoAsset) {
3681  console.info('saveCameraPhotoDemo');
3682  try {
3683    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset);
3684    assetChangeRequest.saveCameraPhoto();
3685    await phAccessHelper.applyChanges(assetChangeRequest);
3686    console.info('apply saveCameraPhoto successfully');
3687  } catch (err) {
3688    console.error(`apply saveCameraPhoto failed with error: ${err.code}, ${err.message}`);
3689  }
3690}
3691```
3692
3693### saveCameraPhoto<sup>13+</sup>
3694
3695saveCameraPhoto(imageFileType: ImageFileType): void
3696
3697保存相机拍摄的照片。
3698
3699**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3700
3701**参数:**
3702
3703| 参数名   | 类型                      | 必填 | 说明       |
3704| -------- | ------------------------- | ---- | ---------- |
3705| imageFileType | [ImageFileType](#imagefiletype13)  | 是   | 需要保存的类型。 |
3706
3707**错误码:**
3708
3709接口抛出错误码的详细介绍请参见[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3710
3711| 错误码ID | 错误信息 |
3712| -------- | ---------------------------------------- |
3713| 14000011 |  System inner fail.         |
3714| 14000016 |  Operation Not Support.         |
3715
3716**示例:**
3717
3718```ts
3719import { photoAccessHelper } from '@kit.MediaLibraryKit';
3720import { dataSharePredicates } from '@kit.ArkData';
3721import { image } from '@kit.ImageKit';
3722
3723async function example(asset: photoAccessHelper.PhotoAsset) {
3724  console.info('saveCameraPhotoDemo');
3725  try {
3726    let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
3727    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset);
3728    assetChangeRequest.saveCameraPhoto(photoAccessHelper.ImageFileType.JPEG);
3729    await phAccessHelper.applyChanges(assetChangeRequest);
3730    console.info('apply saveCameraPhoto successfully');
3731  } catch (err) {
3732    console.error(`apply saveCameraPhoto failed with error: ${err.code}, ${err.message}`);
3733  }
3734}
3735```
3736
3737### discardCameraPhoto<sup>12+</sup>
3738
3739discardCameraPhoto(): void
3740
3741丢弃相机拍摄的照片。
3742
3743**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3744
3745**错误码:**
3746
3747接口抛出错误码的详细介绍请参见[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3748
3749| 错误码ID | 错误信息 |
3750| -------- | ---------------------------------------- |
3751| 14000011 |  Internal system error.         |
3752| 14000016 |  Operation Not Support.         |
3753
3754**示例:**
3755
3756```ts
3757async function example(asset: photoAccessHelper.PhotoAsset) {
3758  console.info('discardCameraPhotoDemo');
3759  try {
3760    let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset);
3761    assetChangeRequest.discardCameraPhoto();
3762    await phAccessHelper.applyChanges(assetChangeRequest);
3763    console.info('apply discardCameraPhoto successfully');
3764  } catch (err) {
3765    console.error(`apply discardCameraPhoto failed with error: ${err.code}, ${err.message}`);
3766  }
3767}
3768```
3769
3770### setOrientation<sup>15+</sup>
3771
3772setOrientation(orientation: number): void
3773
3774修改图片的旋转角度。
3775
3776**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3777
3778**参数:**
3779
3780| 参数名        | 类型      | 必填   | 说明                                 |
3781| ---------- | ------- | ---- | ---------------------------------- |
3782| orientation | number | 是   | 待修改的图片旋转角度,且只能为0、90、180、270。 |
3783
3784**错误码:**
3785
3786接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3787
3788| 错误码ID | 错误信息 |
3789| -------- | ---------------------------------------- |
3790| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
3791| 14000011 |  Internal system error.         |
3792
3793**示例:**
3794
3795```ts
3796import { dataSharePredicates } from '@kit.ArkData';
3797import { BusinessError } from '@kit.BasicServicesKit';
3798
3799async function example() {
3800  console.info('setOrientationDemo');
3801  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3802  let fetchOption: photoAccessHelper.FetchOptions = {
3803    fetchColumns: [],
3804    predicates: predicates
3805  };
3806  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOption);
3807  let asset = await fetchResult.getFirstObject();
3808  let assetChangeRequest: photoAccessHelper.MediaAssetChangeRequest = new photoAccessHelper.MediaAssetChangeRequest(asset);
3809  assetChangeRequest.setOrientation(90);
3810  phAccessHelper.applyChanges(assetChangeRequest).then(() => {
3811    console.info('apply setOrientation successfully');
3812  }).catch((err: BusinessError) => {
3813    console.error(`apply setOrientation failed with error: ${err.code}, ${err.message}`);
3814  });
3815}
3816```
3817
3818## MediaAlbumChangeRequest<sup>11+</sup>
3819
3820相册变更请求。
3821
3822**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3823
3824### constructor<sup>11+</sup>
3825
3826constructor(album: Album)
3827
3828构造函数。
3829
3830**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3831
3832**参数:**
3833
3834| 参数名   | 类型                      | 必填 | 说明       |
3835| -------- | ------------------------- | ---- | ---------- |
3836| album | [Album](#album) | 是   | 需要变更的相册。 |
3837
3838**错误码:**
3839
3840接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3841
3842| 错误码ID | 错误信息 |
3843| -------- | ---------------------------------------- |
3844| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
3845| 14000011       | System inner fail.          |
3846
3847**示例:**
3848
3849```ts
3850import { dataSharePredicates } from '@kit.ArkData';
3851
3852async function example() {
3853  console.info('MediaAlbumChangeRequest constructorDemo');
3854  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3855  let fetchOptions: photoAccessHelper.FetchOptions = {
3856    fetchColumns: [],
3857    predicates: predicates
3858  };
3859  let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions);
3860  let album: photoAccessHelper.Album = await fetchResult.getFirstObject();
3861  let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album);
3862}
3863```
3864
3865### getAlbum<sup>11+</sup>
3866
3867getAlbum(): Album
3868
3869获取当前相册变更请求中的相册。
3870
3871**注意**:对于创建相册的变更请求,在调用[applyChanges](#applychanges11)提交生效之前,该接口返回null。
3872
3873**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3874
3875**返回值:**
3876
3877| 类型                                    | 说明              |
3878| --------------------------------------- | ----------------- |
3879| [Album](#album) | 返回当前相册变更请求中的相册。 |
3880
3881**错误码:**
3882
3883接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3884
3885| 错误码ID | 错误信息 |
3886| -------- | ---------------------------------------- |
3887| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
3888| 14000011 |  System inner fail.         |
3889
3890**示例:**
3891
3892```ts
3893async function example() {
3894  console.info('getAlbumDemo');
3895  try {
3896    // 请确保图库内存在用户相册。
3897    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC);
3898    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
3899    let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album);
3900    let changeRequestAlbum: photoAccessHelper.Album = albumChangeRequest.getAlbum();
3901    console.info('change request album uri: ' + changeRequestAlbum.albumUri);
3902  } catch (err) {
3903    console.error(`getAlbumDemo failed with error: ${err.code}, ${err.message}`);
3904  }
3905}
3906```
3907
3908### setAlbumName<sup>11+</sup>
3909
3910setAlbumName(name: string): void
3911
3912设置相册名称。
3913
3914相册名的参数规格为:
3915- 相册名字符串长度为1~255。
3916- 不允许出现非法字符,包括:<br> . \ / : * ? " ' ` < > | { } [ ]
3917- 英文字符大小写不敏感。
3918- 相册名不允许重名。
3919
3920**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3921
3922**参数:**
3923
3924| 参数名        | 类型      | 必填   | 说明                                 |
3925| ---------- | ------- | ---- | ---------------------------------- |
3926| name | string | 是   | 待设置的相册名称。|
3927
3928**错误码:**
3929
3930接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3931
3932| 错误码ID | 错误信息 |
3933| -------- | ---------------------------------------- |
3934| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
3935| 14000011       | System inner fail.         |
3936
3937**示例:**
3938
3939```ts
3940async function example() {
3941  console.info('setAlbumNameDemo');
3942  try {
3943    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC);
3944    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
3945    let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album);
3946    let newAlbumName: string = 'newAlbumName' + new Date().getTime();
3947    albumChangeRequest.setAlbumName(newAlbumName);
3948    await phAccessHelper.applyChanges(albumChangeRequest);
3949    console.info('setAlbumName successfully');
3950  } catch (err) {
3951    console.error(`setAlbumNameDemo failed with error: ${err.code}, ${err.message}`);
3952  }
3953}
3954```
3955
3956### addAssets<sup>11+</sup>
3957
3958addAssets(assets: Array&lt;PhotoAsset&gt;): void
3959
3960向相册中添加资产。
3961
3962**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
3963
3964**参数:**
3965
3966| 参数名        | 类型      | 必填   | 说明                                 |
3967| ---------- | ------- | ---- | ---------------------------------- |
3968| assets | Array&lt;[PhotoAsset](#photoasset)&gt; | 是   | 待添加到相册中的资产数组。 |
3969
3970**错误码:**
3971
3972接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
3973
3974| 错误码ID | 错误信息 |
3975| -------- | ---------------------------------------- |
3976| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
3977| 14000011       | System inner fail.         |
3978| 14000016 |  Operation Not Support.     |
3979
3980**示例:**
3981
3982```ts
3983import { dataSharePredicates } from '@kit.ArkData';
3984
3985async function example() {
3986  console.info('addAssetsDemo');
3987  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
3988  let fetchOptions: photoAccessHelper.FetchOptions = {
3989    fetchColumns: [],
3990    predicates: predicates
3991  };
3992  try {
3993    // 请确保图库内存在用户相册和照片。
3994    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
3995    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
3996    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC);
3997    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
3998    let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album);
3999    albumChangeRequest.addAssets([asset]);
4000    await phAccessHelper.applyChanges(albumChangeRequest);
4001    console.info('addAssets successfully');
4002  } catch (err) {
4003    console.error(`addAssetsDemo failed with error: ${err.code}, ${err.message}`);
4004  }
4005}
4006```
4007
4008### removeAssets<sup>11+</sup>
4009
4010removeAssets(assets: Array&lt;PhotoAsset&gt;): void
4011
4012从相册中移除资产。
4013
4014**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4015
4016**参数:**
4017
4018| 参数名        | 类型      | 必填   | 说明                                 |
4019| ---------- | ------- | ---- | ---------------------------------- |
4020| assets | Array&lt;[PhotoAsset](#photoasset)&gt; | 是   | 待从相册中移除的资产数组。 |
4021
4022**错误码:**
4023
4024接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
4025
4026| 错误码ID | 错误信息 |
4027| -------- | ---------------------------------------- |
4028| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
4029| 14000011       | System inner fail.         |
4030| 14000016 |  Operation Not Support.     |
4031
4032**示例:**
4033
4034```ts
4035import { dataSharePredicates } from '@kit.ArkData';
4036
4037async function example() {
4038  console.info('removeAssetsDemo');
4039  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
4040  let fetchOptions: photoAccessHelper.FetchOptions = {
4041    fetchColumns: [],
4042    predicates: predicates
4043  };
4044  try {
4045    let albumFetchResult: photoAccessHelper.FetchResult<photoAccessHelper.Album> = await phAccessHelper.getAlbums(photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC);
4046    let album: photoAccessHelper.Album = await albumFetchResult.getFirstObject();
4047    let fetchResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await album.getAssets(fetchOptions);
4048    let asset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
4049
4050    let albumChangeRequest: photoAccessHelper.MediaAlbumChangeRequest = new photoAccessHelper.MediaAlbumChangeRequest(album);
4051    albumChangeRequest.removeAssets([asset]);
4052    await phAccessHelper.applyChanges(albumChangeRequest);
4053    console.info('removeAssets successfully');
4054  } catch (err) {
4055    console.error(`removeAssetsDemo failed with error: ${err.code}, ${err.message}`);
4056  }
4057}
4058```
4059
4060## MediaAssetManager<sup>11+</sup>
4061
4062媒体资产管理类,管理各种媒体资源的读取操作。
4063
4064**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4065
4066### requestImage<sup>11+</sup>
4067
4068static requestImage(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, dataHandler: MediaAssetDataHandler&lt;image.ImageSource&gt;): Promise&lt;string&gt;
4069
4070根据不同的策略模式,请求图片资源。
4071
4072**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4073
4074**需要权限**:ohos.permission.READ_IMAGEVIDEO
4075
4076- 通过picker的方式调用该接口来请求图片资源,不需要申请'ohos.permission.READ_IMAGEVIDEO'权限,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。
4077- 对于本应用保存到媒体库的图片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。
4078
4079**参数:**
4080
4081| 参数名            | 类型                                                                                                        | 必填 | 说明                      |
4082|----------------|-----------------------------------------------------------------------------------------------------------| ---- | ------------------------- |
4083| context        | [Context](../apis-ability-kit/js-apis-inner-application-context.md)                                                           | 是   | 传入Ability实例的Context。 |
4084| asset         | [PhotoAsset](#photoasset)                                                                                | 是   | 待请求的的媒体文件对象。 |
4085| requestOptions | [RequestOptions](#requestoptions11)                                                                        | 是   | 图片请求策略模式配置项。|
4086| dataHandler    | [MediaAssetDataHandler](#mediaassetdatahandler11)&lt;[image.ImageSource](../apis-image-kit/js-apis-image.md#imagesource)&gt; | 是   | 媒体资源处理器,当所请求的图片资源准备完成时会触发回调。|
4087
4088**返回值:**
4089
4090| 类型                                    | 说明              |
4091| --------------------------------------- | ----------------- |
4092| Promise\<string> | Promise对象,返回请求id,可用于[cancelRequest](#cancelrequest12)取消请求。 |
4093
4094**错误码:**
4095
4096接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
4097
4098| 错误码ID | 错误信息 |
4099| -------- | ---------------------------------------- |
4100| 201      |  Permission denied         |
4101| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
4102| 14000011       | System inner fail.         |
4103
4104**示例:**
4105
4106```ts
4107import { dataSharePredicates } from '@kit.ArkData';
4108import { image } from '@kit.ImageKit';
4109
4110class MediaHandler implements photoAccessHelper.MediaAssetDataHandler<image.ImageSource> {
4111  onDataPrepared(data: image.ImageSource) {
4112    if (data === undefined) {
4113      console.error('Error occurred when preparing data');
4114      return;
4115    }
4116    console.info('on image data prepared');
4117  }
4118}
4119
4120async function example() {
4121  console.info('requestImage');
4122  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
4123  let fetchOptions: photoAccessHelper.FetchOptions = {
4124    fetchColumns: [],
4125    predicates: predicates
4126  };
4127  let requestOptions: photoAccessHelper.RequestOptions = {
4128    deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE,
4129  }
4130  const handler = new MediaHandler();
4131
4132  phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => {
4133      console.info('fetchResult success');
4134      let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
4135      await photoAccessHelper.MediaAssetManager.requestImage(context, photoAsset, requestOptions, handler);
4136      console.info('requestImage successfully');
4137  });
4138}
4139```
4140
4141### requestImageData<sup>11+</sup>
4142
4143static requestImageData(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, dataHandler: MediaAssetDataHandler&lt;ArrayBuffer&gt;): Promise&lt;string&gt;
4144
4145根据不同的策略模式,请求图片资源数据。
4146
4147**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4148
4149**需要权限**:ohos.permission.READ_IMAGEVIDEO
4150
4151- 通过picker的方式调用该接口来请求图片资源数据,不需要申请'ohos.permission.READ_IMAGEVIDEO'权限,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。
4152- 对于本应用保存到媒体库的图片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。
4153
4154**参数:**
4155
4156| 参数名   | 类型                                                                   | 必填 | 说明                      |
4157| -------- |----------------------------------------------------------------------| ---- | ------------------------- |
4158| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md)                      | 是   | 传入Ability实例的Context。 |
4159| asset | [PhotoAsset](#photoasset)                                            | 是   | 待请求的的媒体文件对象。 |
4160| requestOptions  | [RequestOptions](#requestoptions11)                                  | 是   | 图片请求策略模式配置项。 |
4161| dataHandler  | [MediaAssetDataHandler](#mediaassetdatahandler11)&lt;ArrayBuffer&gt; | 是   | 媒体资源处理器,当所请求的图片资源准备完成时会触发回调。|
4162
4163**返回值:**
4164
4165| 类型                                    | 说明              |
4166| --------------------------------------- | ----------------- |
4167| Promise\<string> | Promise对象,返回请求id,可用于[cancelRequest](#cancelrequest12)取消请求。 |
4168
4169**错误码:**
4170
4171接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
4172
4173| 错误码ID | 错误信息 |
4174| -------- | ---------------------------------------- |
4175| 201      |  Permission denied         |
4176| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
4177| 14000011       | System inner fail.         |
4178
4179**示例:**
4180
4181```ts
4182import { dataSharePredicates } from '@kit.ArkData';
4183class MediaDataHandler implements photoAccessHelper.MediaAssetDataHandler<ArrayBuffer> {
4184  onDataPrepared(data: ArrayBuffer) {
4185    if (data === undefined) {
4186      console.error('Error occurred when preparing data');
4187      return;
4188    }
4189    console.info('on image data prepared');
4190  }
4191}
4192
4193async function example() {
4194  console.info('requestImageData');
4195  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
4196  let fetchOptions: photoAccessHelper.FetchOptions = {
4197    fetchColumns: [],
4198    predicates: predicates
4199  };
4200  let requestOptions: photoAccessHelper.RequestOptions = {
4201    deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE,
4202  }
4203  const handler = new MediaDataHandler();
4204
4205  phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => {
4206      console.info('fetchResult success');
4207      let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
4208      await photoAccessHelper.MediaAssetManager.requestImageData(context, photoAsset, requestOptions, handler);
4209      console.info('requestImageData successfully');
4210  });
4211}
4212```
4213
4214### requestMovingPhoto<sup>12+</sup>
4215
4216static requestMovingPhoto(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, dataHandler: MediaAssetDataHandler&lt;MovingPhoto&gt;): Promise&lt;string&gt;
4217
4218根据不同的策略模式,请求动态照片对象。动态照片对象可用于请求动态照片的资源数据。
4219
4220**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4221
4222**需要权限**:ohos.permission.READ_IMAGEVIDEO
4223
4224- 通过picker的方式调用该接口来请求动态照片对象,不需要申请'ohos.permission.READ_IMAGEVIDEO'权限,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。
4225- 对于本应用保存到媒体库的动态照片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。
4226
4227**参数:**
4228
4229| 参数名   | 类型                                                                   | 必填 | 说明                      |
4230| -------- |----------------------------------------------------------------------| ---- | ------------------------- |
4231| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md)                      | 是   | 传入Ability实例的Context。 |
4232| asset | [PhotoAsset](#photoasset)                                            | 是   | 待请求的的媒体文件对象。 |
4233| requestOptions  | [RequestOptions](#requestoptions11)                                  | 是   | 图片请求策略模式配置项。|
4234| dataHandler  | [MediaAssetDataHandler](#mediaassetdatahandler11)&lt;[MovingPhoto](#movingphoto12)&gt; | 是   | 媒体资源处理器,当所请求的图片资源准备完成时会触发回调。|
4235
4236**返回值:**
4237
4238| 类型                                    | 说明              |
4239| --------------------------------------- | ----------------- |
4240| Promise\<string> | Promise对象,返回请求id,可用于[cancelRequest](#cancelrequest12)取消请求。 |
4241
4242**错误码:**
4243
4244接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
4245
4246| 错误码ID | 错误信息 |
4247| -------- | ---------------------------------------- |
4248| 201      |  Permission denied         |
4249| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
4250| 14000011       | System inner fail         |
4251
4252**示例:**
4253
4254```ts
4255import { dataSharePredicates } from '@kit.ArkData';
4256
4257class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> {
4258  async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) {
4259    if (movingPhoto === undefined) {
4260      console.error('Error occurred when preparing data');
4261      return;
4262    }
4263    console.info("moving photo acquired successfully, uri: " + movingPhoto.getUri());
4264  }
4265}
4266
4267async function example() {
4268  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
4269  predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO);
4270  let fetchOptions: photoAccessHelper.FetchOptions = {
4271    fetchColumns: [],
4272    predicates: predicates
4273  };
4274  // 请确保图库内存在动态照片。
4275  let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
4276  let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject();
4277  let requestOptions: photoAccessHelper.RequestOptions = {
4278    deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE,
4279  }
4280  const handler = new MovingPhotoHandler();
4281  try {
4282    let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler);
4283    console.info("moving photo requested successfully, requestId: " + requestId);
4284  } catch (err) {
4285    console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`);
4286  }
4287}
4288
4289```
4290
4291### requestVideoFile<sup>12+</sup>
4292
4293static requestVideoFile(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, fileUri: string, dataHandler: MediaAssetDataHandler&lt;boolean&gt;): Promise&lt;string&gt;
4294
4295根据不同的策略模式,请求视频资源数据到沙箱路径。
4296
4297**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4298
4299**需要权限**:ohos.permission.READ_IMAGEVIDEO
4300
4301- 通过picker的方式调用该接口来请求视频资源数据到应用沙箱,不需要申请'ohos.permission.READ_IMAGEVIDEO'权限,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。
4302- 对于本应用保存到媒体库的视频资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。
4303
4304**参数:**
4305
4306| 参数名   | 类型                                                                   | 必填 | 说明                      |
4307| -------- |----------------------------------------------------------------------| ---- | ------------------------- |
4308| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md)                      | 是   | 传入Ability实例的Context。|
4309| asset | [PhotoAsset](#photoasset)                                            | 是   | 待请求的的媒体文件对象。 |
4310| requestOptions  | [RequestOptions](#requestoptions11)                                  | 是   | 视频请求策略模式配置项。|
4311| fileUri| string                                                              | 是 | 目标写入沙箱路径Uri。 |
4312| dataHandler  | [MediaAssetDataHandler](#mediaassetdatahandler11)&lt;boolean&gt; | 是   | 媒体资源处理器,当所请求的视频资源写入完成时会触发回调。|
4313
4314**返回值:**
4315
4316| 类型                                    | 说明              |
4317| --------------------------------------- | ----------------- |
4318| Promise\<string> | Promise对象,返回请求id,可用于[cancelRequest](#cancelrequest12)取消请求。 |
4319
4320**错误码:**
4321
4322接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
4323
4324| 错误码ID | 错误信息 |
4325| -------- | ---------------------------------------- |
4326| 201      |  Permission denied         |
4327| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
4328| 801<sup>15+</sup>   | Capability not supported.       |
4329| 14000011       | System inner fail.         |
4330
4331**示例:**
4332
4333```ts
4334import { dataSharePredicates } from '@kit.ArkData';
4335class MediaDataHandler implements photoAccessHelper.MediaAssetDataHandler<boolean> {
4336    onDataPrepared(data: boolean) {
4337        console.info('on video request status prepared');
4338    }
4339}
4340
4341async function example() {
4342  console.info('requestVideoFile');
4343  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
4344  let fetchOptions: photoAccessHelper.FetchOptions = {
4345    fetchColumns: [],
4346    predicates: predicates
4347  };
4348  let requestOptions: photoAccessHelper.RequestOptions = {
4349    deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE,
4350  }
4351  const handler = new MediaDataHandler();
4352  let fileUri = 'file://com.example.temptest/data/storage/el2/base/haps/entry/files/test.mp4';
4353  phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => {
4354      console.info('fetchResult success');
4355      let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
4356      await photoAccessHelper.MediaAssetManager.requestVideoFile(context, photoAsset, requestOptions, fileUri, handler);
4357      console.info('requestVideoFile successfully');
4358  });
4359}
4360```
4361
4362### cancelRequest<sup>12+</sup>
4363
4364static cancelRequest(context: Context, requestId: string): Promise\<void>
4365
4366取消尚未触发回调的资产内容请求。
4367
4368**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4369
4370**需要权限**:ohos.permission.READ_IMAGEVIDEO
4371
4372**参数:**
4373
4374| 参数名   | 类型                                                                   | 必填 | 说明                      |
4375| -------- |----------------------------------------------------------------------| ---- | ------------------------- |
4376| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md)                      | 是   | 传入Ability实例的Context。 |
4377| requestId | string     | 是   | 需要取消的请求id。 |
4378
4379**返回值:**
4380
4381| 类型                                    | 说明              |
4382| --------------------------------------- | ----------------- |
4383| Promise\<void> | Promise对象,返回void。 |
4384
4385**错误码:**
4386
4387接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
4388
4389| 错误码ID | 错误信息 |
4390| -------- | ---------------------------------------- |
4391| 201      |  Permission denied         |
4392| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
4393| 14000011       | System inner fail         |
4394
4395**示例:**
4396
4397```ts
4398import { dataSharePredicates } from '@kit.ArkData';
4399
4400async function example() {
4401  try {
4402    let requestId: string = 'xxx-xxx'; // 应用需使用requestImage等接口返回的有效requestId。
4403    await photoAccessHelper.MediaAssetManager.cancelRequest(context, requestId);
4404    console.info("request cancelled successfully");
4405  } catch (err) {
4406    console.error(`cancelRequest failed with error: ${err.code}, ${err.message}`);
4407  }
4408}
4409
4410```
4411
4412### loadMovingPhoto<sup>12+</sup>
4413
4414static loadMovingPhoto(context: Context, imageFileUri: string, videoFileUri: string): Promise\<MovingPhoto>
4415
4416加载应用沙箱的动态照片。
4417
4418**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
4419
4420**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4421
4422**参数:**
4423
4424| 参数名   | 类型                                                                   | 必填 | 说明                      |
4425| -------- |----------------------------------------------------------------------| ---- | ------------------------- |
4426| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md)   | 是   | 传入AbilityContext或者UIExtensionContext的实例。 |
4427| imageFileUri | string     | 是   | 应用沙箱动态照片的图片uri。 |
4428| videoFileUri | string     | 是   | 应用沙箱动态照片的视频uri。 |
4429
4430**返回值:**
4431
4432| 类型                                    | 说明              |
4433| --------------------------------------- | ----------------- |
4434| Promise\<MovingPhoto> | Promise对象,返回[MovingPhoto](#movingphoto12)实例。 |
4435
4436**错误码:**
4437
4438接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
4439
4440| 错误码ID | 错误信息 |
4441| -------- | ---------------------------------------- |
4442| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
4443| 14000011 | Internal system error. |
4444
4445**示例:**
4446
4447```ts
4448async function example() {
4449  try {
4450    let imageFileUri: string = 'file://com.example.temptest/data/storage/el2/base/haps/ImageFile.jpg'; // 应用沙箱动态照片的图片uri。
4451    let videoFileUri: string = 'file://com.example.temptest/data/storage/el2/base/haps/VideoFile.mp4'; // 应用沙箱动态照片的视频uri。
4452    let movingPhoto: photoAccessHelper.MovingPhoto = await photoAccessHelper.MediaAssetManager.loadMovingPhoto(context, imageFileUri, videoFileUri);
4453  } catch (err) {
4454    console.error(`loadMovingPhoto failed with error: ${err.code}, ${err.message}`);
4455  }
4456}
4457
4458```
4459
4460### quickRequestImage<sup>13+</sup>
4461
4462static quickRequestImage(context: Context, asset: PhotoAsset, requestOptions: RequestOptions, dataHandler: QuickImageDataHandler&lt;image.Picture&gt;): Promise&lt;string&gt;
4463
4464根据不同的策略模式,快速请求图片资源。
4465
4466**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4467
4468**需要权限**:ohos.permission.READ_IMAGEVIDEO
4469
4470- 通过picker的方式调用该接口来请求图片资源,不需要申请'ohos.permission.READ_IMAGEVIDEO'权限,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-photoviewpicker.md#指定uri获取图片或视频资源)。
4471
4472**参数:**
4473
4474| 参数名            | 类型                                                                                                        | 必填 | 说明                      |
4475|----------------|-----------------------------------------------------------------------------------------------------------| ---- | ------------------------- |
4476| context        | [Context](../apis-ability-kit/js-apis-inner-application-context.md)                                                           | 是   | 传入Ability实例的Context。 |
4477| asset         | [PhotoAsset](#photoasset)                                                                                | 是   | 待请求的的媒体文件对象。 |
4478| requestOptions | [RequestOptions](#requestoptions11)                                                                        | 是   | 图片请求策略模式配置项。|
4479| dataHandler    | [QuickImageDataHandler](#quickimagedatahandler13)&lt;[image.Picture](../apis-image-kit/js-apis-image.md#picture13)&gt; | 是   | 媒体资源处理器,当所请求的图片资源准备完成时会触发回调。|
4480
4481**返回值:**
4482
4483| 类型                                    | 说明              |
4484| --------------------------------------- | ----------------- |
4485| Promise\<string> | Promise对象,返回请求id,可用于[cancelRequest](#cancelrequest12)取消请求。 |
4486
4487**错误码:**
4488
4489接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
4490
4491| 错误码ID | 错误信息 |
4492| -------- | ---------------------------------------- |
4493| 201      |  Permission denied         |
4494| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
4495| 14000011       | Internal system error.         |
4496
4497**示例:**
4498
4499```ts
4500import { photoAccessHelper } from '@kit.MediaLibraryKit';
4501import { dataSharePredicates } from '@kit.ArkData';
4502import { image } from '@kit.ImageKit';
4503
4504class MediaHandler implements photoAccessHelper.QuickImageDataHandler<image.Picture> {
4505  onDataPrepared(data: image.Picture, imageSource: image.ImageSource, map: Map<string, string>) {
4506    console.info('on image data prepared');
4507  }
4508}
4509
4510async function example() {
4511  console.info('quickRequestImage');
4512  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
4513  let fetchOptions: photoAccessHelper.FetchOptions = {
4514    fetchColumns: [],
4515    predicates: predicates
4516  };
4517  let requestOptions: photoAccessHelper.RequestOptions = {
4518    deliveryMode: photoAccessHelper.DeliveryMode.HIGH_QUALITY_MODE,
4519  }
4520  const handler = new MediaHandler();
4521  let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
4522  phAccessHelper.getAssets(fetchOptions, async (err, fetchResult) => {
4523      console.info('fetchResult success');
4524      let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject();
4525      await photoAccessHelper.MediaAssetManager.quickRequestImage(context, photoAsset, requestOptions, handler);
4526      console.info('quickRequestImage successfully');
4527  });
4528}
4529```
4530
4531## MediaAssetDataHandler<sup>11+</sup>
4532
4533媒体资源处理器,应用在onDataPrepared方法中可自定义媒体资源处理逻辑。
4534
4535**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4536
4537### onDataPrepared<sup>11+</sup>
4538
4539onDataPrepared(data: T, map?: Map<string, string>): void
4540
4541媒体资源就绪通知,当所请求的资源准备就绪时系统会回调此方法。如果资源准备出错,则回调的data为undefined。每个资源请求与回调一一对应。
4542T支持ArrayBuffer, [ImageSource](../apis-image-kit/js-apis-image.md#imagesource), [MovingPhoto](#movingphoto12)和boolean四种数据类型。其中,ArrayBuffer表示图片/视频资源数据,[ImageSource](../apis-image-kit/js-apis-image.md#imagesource)表示图片源,[MovingPhoto](#movingphoto12)表示动态照片对象,boolean表示图片/视频资源是否成功写入应用沙箱。
4543
4544map支持返回的信息:
4545| map键名  | 值说明 |
4546|----------|-------|
4547| 'quality'  | 图片质量。高质量为'high',低质量为'low'。 |
4548
4549**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4550
4551**参数:**
4552
4553| 参数名  | 类型 | 必填 | 说明                                                                            |
4554|------|---| ---- |-------------------------------------------------------------------------------|
4555| data | T | 是   | 已就绪的图片资源数据。泛型,支持ArrayBuffer, [ImageSource](../apis-image-kit/js-apis-image.md#imagesource), [MovingPhoto](#movingphoto12)和boolean四种数据类型。 |
4556| map<sup>12+</sup> | Map<string, string> | 否   | 用于获取图片资源的额外信息,如图片质量。 |
4557
4558**示例**
4559```ts
4560import { image } from '@kit.ImageKit';
4561
4562class MediaHandler implements photoAccessHelper.MediaAssetDataHandler<image.ImageSource> {
4563  onDataPrepared = (data: image.ImageSource, map: Map<string, string>) => {
4564    if (data === undefined) {
4565      console.error('Error occurred when preparing data');
4566      return;
4567    }
4568    // 自定义对ImageSource的处理逻辑。
4569    console.info('on image data prepared, photo quality is ' + map['quality']);
4570  }
4571}
4572
4573class MediaDataHandler implements photoAccessHelper.MediaAssetDataHandler<ArrayBuffer> {
4574  onDataPrepared = (data: ArrayBuffer, map: Map<string, string>) => {
4575    if (data === undefined) {
4576      console.error('Error occurred when preparing data');
4577      return;
4578    }
4579    // 自定义对ArrayBuffer的处理逻辑。
4580    console.info('on image data prepared, photo quality is ' + map['quality']);
4581  }
4582}
4583
4584class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> {
4585  onDataPrepared = (data: photoAccessHelper.MovingPhoto, map: Map<string, string>) => {
4586    if (data === undefined) {
4587      console.error('Error occurred when preparing data');
4588      return;
4589    }
4590    // 自定义对MovingPhoto的处理逻辑。
4591    console.info('on image data prepared, photo quality is ' + map['quality']);
4592  }
4593}
4594```
4595
4596## QuickImageDataHandler<sup>13+</sup>
4597
4598媒体资源处理器,应用在onDataPrepared方法中可自定义媒体资源处理逻辑。
4599
4600**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4601
4602### onDataPrepared<sup>13+</sup>
4603
4604onDataPrepared(data: T, imageSource: image.ImageSource, map: Map<string, string>): void
4605
4606媒体资源就绪通知,当所请求的图片资源准备就绪时系统会回调此方法。如果资源准备出错,则回调的data为undefined。
4607T支持Picture数据类型。
4608
4609map支持返回的信息:
4610| map键名  | 值说明 |
4611|----------|-------|
4612| 'quality'  | 图片质量。高质量为'high',低质量为'low'。 |
4613
4614**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4615
4616**参数:**
4617
4618| 参数名  | 类型 | 必填 | 说明                                                                            |
4619|------|---| ---- |-------------------------------------------------------------------------------|
4620| data | T | 是   | 已就绪的图片资源数据。泛型,支持[Picture](../apis-image-kit/js-apis-image.md#picture13)数据类型。 |
4621| imageSource | image.ImageSource | 是   | 已就绪的图片资源数据。 |
4622| map<sup>13+</sup> | Map<string, string> | 是   | 用于获取图片资源的额外信息,如图片质量。 |
4623
4624**示例**
4625```ts
4626import { image } from '@kit.ImageKit';
4627
4628class MediaHandler implements photoAccessHelper.QuickImageDataHandler<image.Picture> {
4629  onDataPrepared(data: image.Picture, imageSource: image.ImageSource, map: Map<string, string>) {
4630    console.info('on image data prepared');
4631  }
4632}
4633```
4634
4635## MovingPhoto<sup>12+</sup>
4636
4637动态照片对象。
4638
4639**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4640
4641**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4642
4643### getUri<sup>12+</sup>
4644
4645getUri(): string
4646
4647获取动态照片的uri。
4648
4649**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4650
4651**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4652
4653**返回值:**
4654
4655| 类型                                    | 说明              |
4656| --------------------------------------- | ----------------- |
4657| string | 动态照片的uri。 |
4658
4659**错误码:**
4660
4661接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
4662
4663| 错误码ID | 错误信息 |
4664| -------- | ---------------------------------------- |
4665| 401    | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
4666| 14000011 |  System inner fail.         |
4667
4668**示例:**
4669
4670```ts
4671import { dataSharePredicates } from '@kit.ArkData';
4672
4673class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> {
4674  async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) {
4675    if (movingPhoto === undefined) {
4676      console.error('Error occurred when preparing data');
4677      return;
4678    }
4679    console.info("moving photo acquired successfully, uri: " + movingPhoto.getUri());
4680  }
4681}
4682
4683async function example() {
4684  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
4685  predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO);
4686  let fetchOptions: photoAccessHelper.FetchOptions = {
4687    fetchColumns: [],
4688    predicates: predicates
4689  };
4690  // 请确保图库内存在动态照片。
4691  let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
4692  let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject();
4693  let requestOptions: photoAccessHelper.RequestOptions = {
4694    deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE,
4695  }
4696  const handler = new MovingPhotoHandler();
4697  try {
4698    let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler);
4699    console.info("moving photo requested successfully, requestId: " + requestId);
4700  } catch (err) {
4701    console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`);
4702  }
4703}
4704```
4705
4706### requestContent<sup>12+</sup>
4707
4708requestContent(imageFileUri: string, videoFileUri: string): Promise\<void>
4709
4710同时请求动态照片的图片内容和视频内容,并写入参数指定的对应的uri中。
4711
4712**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4713
4714**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4715
4716**需要权限**:ohos.permission.READ_IMAGEVIDEO
4717
4718- 通过picker的方式调用该接口来请求动态照片对象并读取内容,不需要申请'ohos.permission.READ_IMAGEVIDEO'权限,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-movingphoto.md)。
4719- 对于本应用保存到媒体库的动态照片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。
4720
4721**参数:**
4722
4723| 参数名   | 类型                                                                   | 必填 | 说明                      |
4724| -------- |----------------------------------------------------------------------| ---- | ------------------------- |
4725| imageFileUri | string                      | 是   | 待写入动态照片图片内容的uri。 |
4726| videoFileUri | string                                            | 是   | 待写入动态照片视频内容的uri。 |
4727
4728**返回值:**
4729
4730| 类型                                    | 说明              |
4731| --------------------------------------- | ----------------- |
4732| Promise\<void> | Promise对象,返回void。 |
4733
4734**错误码:**
4735
4736接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
4737
4738| 错误码ID | 错误信息 |
4739| -------- | ---------------------------------------- |
4740| 201      |  Permission denied   |
4741| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
4742| 14000011 |  System inner fail         |
4743
4744**示例:**
4745
4746```ts
4747import { dataSharePredicates } from '@kit.ArkData';
4748
4749class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> {
4750  async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) {
4751    if (movingPhoto === undefined) {
4752      console.error('Error occurred when preparing data');
4753      return;
4754    }
4755    // 应用需要确保待写入的uri是有效的。
4756    let imageFileUri: string = "file://com.example.temptest/data/storage/el2/base/haps/ImageFile.jpg";
4757    let videoFileUri: string = "file://com.example.temptest/data/storage/el2/base/haps/VideoFile.mp4";
4758    try {
4759      await movingPhoto.requestContent(imageFileUri, videoFileUri);
4760      console.log("moving photo contents retrieved successfully");
4761    } catch (err) {
4762      console.error(`failed to retrieve contents of moving photo, error code is ${err.code}, message is ${err.message}`);
4763    }
4764  }
4765}
4766
4767async function example() {
4768  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
4769  predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO);
4770  let fetchOptions: photoAccessHelper.FetchOptions = {
4771    fetchColumns: [],
4772    predicates: predicates
4773  };
4774  // 请确保图库内存在动态照片。
4775  let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
4776  let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject();
4777  let requestOptions: photoAccessHelper.RequestOptions = {
4778    deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE,
4779  }
4780  const handler = new MovingPhotoHandler();
4781  try {
4782    let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler);
4783    console.info("moving photo requested successfully, requestId: " + requestId);
4784  } catch (err) {
4785    console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`);
4786  }
4787}
4788```
4789
4790### requestContent<sup>12+</sup>
4791
4792requestContent(resourceType: ResourceType, fileUri: string): Promise\<void>
4793
4794请求指定资源类型的动态照片内容,并写入参数指定的uri中。
4795
4796**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4797
4798**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4799
4800**需要权限**:ohos.permission.READ_IMAGEVIDEO
4801- 通过picker的方式调用该接口来请求动态照片对象并读取内容,不需要申请'ohos.permission.READ_IMAGEVIDEO'权限,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-movingphoto.md)。
4802- 对于本应用保存到媒体库的动态照片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。
4803
4804**参数:**
4805
4806| 参数名   | 类型                                                                   | 必填 | 说明                      |
4807| -------- |----------------------------------------------------------------------| ---- | ------------------------- |
4808| resourceType | [ResourceType](#resourcetype11)                      | 是   | 所请求动态照片内容的资源类型。 |
4809| fileUri | string                                                    | 是   |待写入动态照片内容的uri。 |
4810
4811**返回值:**
4812
4813| 类型                                    | 说明              |
4814| --------------------------------------- | ----------------- |
4815| Promise\<void> | Promise对象,返回void。 |
4816
4817**错误码:**
4818
4819接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
4820
4821| 错误码ID | 错误信息 |
4822| -------- | ---------------------------------------- |
4823| 201      |  Permission denied   |
4824| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
4825| 14000011 |  System inner fail         |
4826
4827**示例:**
4828
4829```ts
4830import { dataSharePredicates } from '@kit.ArkData';
4831
4832class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> {
4833  async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) {
4834    if (movingPhoto === undefined) {
4835      console.error('Error occurred when preparing data');
4836      return;
4837    }
4838    // 应用需要确保待写入的uri是有效的。
4839    let imageFileUri: string = "file://com.example.temptest/data/storage/el2/base/haps/ImageFile.jpg";
4840    try {
4841      await movingPhoto.requestContent(photoAccessHelper.ResourceType.IMAGE_RESOURCE, imageFileUri);
4842      console.log("moving photo image content retrieved successfully");
4843    } catch (err) {
4844      console.error(`failed to retrieve image content of moving photo, error code is ${err.code}, message is ${err.message}`);
4845    }
4846  }
4847}
4848
4849async function example() {
4850  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
4851  predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO);
4852  let fetchOptions: photoAccessHelper.FetchOptions = {
4853    fetchColumns: [],
4854    predicates: predicates
4855  };
4856  // 请确保图库内存在动态照片。
4857  let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
4858  let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject();
4859  let requestOptions: photoAccessHelper.RequestOptions = {
4860    deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE,
4861  }
4862  const handler = new MovingPhotoHandler();
4863  try {
4864    let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler);
4865    console.info("moving photo requested successfully, requestId: " + requestId);
4866  } catch (err) {
4867    console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`);
4868  }
4869}
4870```
4871
4872### requestContent<sup>12+</sup>
4873
4874requestContent(resourceType: ResourceType): Promise\<ArrayBuffer>
4875
4876请求指定资源类型的动态照片内容,以ArrayBuffer的形式返回。
4877
4878**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4879
4880**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4881
4882**需要权限**:ohos.permission.READ_IMAGEVIDEO
4883
4884- 通过picker的方式调用该接口来请求动态照片对象并读取内容,不需要申请'ohos.permission.READ_IMAGEVIDEO'权限,详情请参考[开发指南](../../media/medialibrary/photoAccessHelper-movingphoto.md)。
4885- 对于本应用保存到媒体库的动态照片资源,应用无需额外申请'ohos.permission.READ_IMAGEVIDEO'权限即可访问。
4886
4887**参数:**
4888
4889| 参数名   | 类型                                                                   | 必填 | 说明                      |
4890| -------- |----------------------------------------------------------------------| ---- | ------------------------- |
4891| resourceType | [ResourceType](#resourcetype11)                      | 是   | 所请求动态照片内容的资源类型。 |
4892
4893**返回值:**
4894
4895| 类型                                    | 说明              |
4896| --------------------------------------- | ----------------- |
4897| Promise\<ArrayBuffer> | Promise对象,返回包含所请求文件内容的ArrayBuffer。 |
4898
4899**错误码:**
4900
4901接口抛出错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[文件管理错误码](../apis-core-file-kit/errorcode-filemanagement.md)。
4902
4903| 错误码ID | 错误信息 |
4904| -------- | ---------------------------------------- |
4905| 201      |  Permission denied   |
4906| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
4907| 14000011 |  System inner fail         |
4908
4909**示例:**
4910
4911```ts
4912import { dataSharePredicates } from '@kit.ArkData';
4913
4914class MovingPhotoHandler implements photoAccessHelper.MediaAssetDataHandler<photoAccessHelper.MovingPhoto> {
4915  async onDataPrepared(movingPhoto: photoAccessHelper.MovingPhoto) {
4916    if (movingPhoto === undefined) {
4917      console.error('Error occurred when preparing data');
4918      return;
4919    }
4920    try {
4921      let buffer: ArrayBuffer = await movingPhoto.requestContent(photoAccessHelper.ResourceType.IMAGE_RESOURCE);
4922      console.log("moving photo image content retrieved successfully, buffer length: " + buffer.byteLength);
4923    } catch (err) {
4924      console.error(`failed to retrieve image content of moving photo, error code is ${err.code}, message is ${err.message}`);
4925    }
4926  }
4927}
4928
4929async function example() {
4930  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
4931  predicates.equalTo(photoAccessHelper.PhotoKeys.PHOTO_SUBTYPE, photoAccessHelper.PhotoSubtype.MOVING_PHOTO);
4932  let fetchOptions: photoAccessHelper.FetchOptions = {
4933    fetchColumns: [],
4934    predicates: predicates
4935  };
4936  // 请确保图库内存在动态照片。
4937  let assetResult: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset> = await phAccessHelper.getAssets(fetchOptions);
4938  let asset: photoAccessHelper.PhotoAsset = await assetResult.getFirstObject();
4939  let requestOptions: photoAccessHelper.RequestOptions = {
4940    deliveryMode: photoAccessHelper.DeliveryMode.FAST_MODE,
4941  }
4942  const handler = new MovingPhotoHandler();
4943  try {
4944    let requestId: string = await photoAccessHelper.MediaAssetManager.requestMovingPhoto(context, asset, requestOptions, handler);
4945    console.info("moving photo requested successfully, requestId: " + requestId);
4946  } catch (err) {
4947    console.error(`failed to request moving photo, error code is ${err.code}, message is ${err.message}`);
4948  }
4949}
4950```
4951
4952## MemberType
4953
4954type MemberType = number | string | boolean
4955
4956PhotoAsset的成员类型。
4957
4958成员类型为下表类型中的并集。
4959
4960**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4961
4962| 类型 | 说明 |
4963| ---- | ---- |
4964| number | 表示值类型为数字,可取任意值。 |
4965| string | 表示值类型为字符,可取任意值。|
4966| boolean | 表示值类型为布尔类型。 |
4967
4968## PhotoType
4969
4970枚举,媒体文件类型。
4971
4972**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
4973
4974**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4975
4976| 名称  |  值 |  说明 |
4977| ----- |  ---- |  ---- |
4978| IMAGE |  1 |  图片。 |
4979| VIDEO |  2 |  视频。 |
4980
4981## PhotoSubtype<sup>12+</sup>
4982
4983枚举,不同[PhotoAsset](#photoasset)的类型。
4984
4985**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
4986
4987**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
4988
4989| 名称  |  值 |  说明 |
4990| ----- |  ---- |  ---- |
4991| DEFAULT |  0 |  默认照片类型。 |
4992| MOVING_PHOTO |  3 |  动态照片文件类型。 |
4993| BURST |  4 |  连拍照片文件类型。 |
4994
4995## DynamicRangeType<sup>12+</sup>
4996
4997枚举,媒体文件的动态范围类型。
4998
4999**系统能力**: SystemCapability.FileManagement.PhotoAccessHelper.Core
5000
5001| 名称  |  值 |  说明 |
5002| ----- |  ---- |  ---- |
5003| SDR |  0 |  标准动态范围类型。|
5004| HDR |  1 |  高动态范围类型。  |
5005
5006## AlbumType
5007
5008枚举,相册类型,表示是用户相册还是系统预置相册。
5009
5010**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5011
5012| 名称                  | 值    | 说明                        |
5013| ------------------- | ---- | ------------------------- |
5014| USER                | 0    | 用户相册。                     |
5015| SYSTEM              | 1024 | 系统预置相册。                   |
5016
5017## AlbumSubtype
5018
5019枚举,相册子类型,表示具体的相册类型。
5020
5021**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5022
5023| 名称                                | 值          | 说明                              |
5024| --------------------------------- | ---------- | ------------------------------- |
5025| USER\_GENERIC                     | 1          | 用户相册。                           |
5026| FAVORITE                          | 1025       | 收藏夹。                            |
5027| VIDEO                             | 1026       | 视频相册。                           |
5028| IMAGE<sup>12+</sup>               | 1031       | 图片相册。                           |
5029| ANY                               | 2147483647 | 任意相册。                           |
5030
5031## PositionType<sup>16+</sup>
5032
5033枚举,文件位置,表示文件在本地或云端。
5034
5035**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5036
5037| 名称  |  值 |  说明 |
5038| ----- |  ---- |  ---- |
5039| LOCAL |  1  |  文件只存在于本端设备。 |
5040| CLOUD |  2  |  文件只存在于云端。 |
5041| LOCAL_AND_CLOUD |  3  |  文件存在于本端设备和云端。 |
5042
5043## PhotoKeys
5044
5045枚举,图片和视频文件关键信息。
5046
5047**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5048
5049| 名称          | 值              | 说明                                                       |
5050| ------------- | ------------------- | ---------------------------------------------------------- |
5051| URI           | 'uri'                 | 文件uri。<br>注意:查询照片时,该字段仅支持使用[DataSharePredicates.equalTo](../apis-arkdata/js-apis-data-dataSharePredicates.md#equalto10)谓词。            |
5052| PHOTO_TYPE    | 'media_type'           | 媒体文件类型。                                              |
5053| DISPLAY_NAME  | 'display_name'        | 显示名字。                                                   |
5054| SIZE          | 'size'                | 文件大小(单位:字节)。                                                   |
5055| DATE_ADDED    | 'date_added'          | 文件创建时的Unix时间戳(单位:秒)。             |
5056| DATE_MODIFIED | 'date_modified'       | 文件修改时的Unix时间戳(单位:秒)。修改文件名不会改变此值,当文件内容发生修改时才会更新。 |
5057| DURATION      | 'duration'            | 持续时间(单位:毫秒)。                                    |
5058| WIDTH         | 'width'               | 图片宽度(单位:像素)。                                    |
5059| HEIGHT        | 'height'              | 图片高度(单位:像素)。                                      |
5060| DATE_TAKEN    | 'date_taken'          | 拍摄时的Unix时间戳(单位:秒)。                |
5061| ORIENTATION   | 'orientation'         | 文件的旋转角度,单位为度。                                             |
5062| FAVORITE      | 'is_favorite'            | 收藏。                                                    |
5063| TITLE         | 'title'               | 文件标题。                                                   |
5064| DATE_ADDED_MS<sup>12+</sup>  | 'date_added_ms'          | 文件创建时的Unix时间戳(单位:毫秒)。<br>注意:查询照片时,不支持基于该字段排序。  |
5065| DATE_MODIFIED_MS<sup>12+</sup>  | 'date_modified_ms'    | 文件修改时的Unix时间戳(单位:毫秒)。修改文件名不会改变此值,当文件内容发生修改时才会更新。<br>注意:查询照片时,不支持基于该字段排序。 |
5066| PHOTO_SUBTYPE<sup>12+</sup>   | 'subtype'               | 媒体文件的子类型。                                                   |
5067| DYNAMIC_RANGE_TYPE<sup>12+</sup>   | 'dynamic_range_type'               | 媒体文件的动态范围类型。                                                  |
5068| COVER_POSITION<sup>12+</sup>   | 'cover_position'               | 动态照片的封面位置,具体表示封面帧所对应的视频时间戳(单位:微秒)。 |
5069| BURST_KEY<sup>12+</sup>   | 'burst_key'               | 一组连拍照片的唯一标识:uuid。 |
5070| LCD_SIZE<sup>12+</sup>  | 'lcd_size'  | LCD图片的宽高,值为width:height拼接而成的字符串。|
5071| THM_SIZE<sup>12+</sup>  | 'thm_size'  | THUMB图片的宽高,值为width:height拼接而成的字符串。|
5072| DETAIL_TIME<sup>13+</sup>  | 'detail_time'  | 大图浏览时间,值为拍摄时对应时区的时间的字符串,不会跟随时区变化。|
5073| DATE_TAKEN_MS<sup>13+</sup>  | 'date_taken_ms'  | 拍摄时的Unix时间戳(单位:毫秒)。 |
5074| POSITION<sup>16+</sup>  | 'position'            | 文件位置类型。                               |
5075
5076## AlbumKeys
5077
5078枚举,相册关键信息。
5079
5080**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5081
5082| 名称          | 值              | 说明                                                       |
5083| ------------- | ------------------- | ---------------------------------------------------------- |
5084| URI           | 'uri'                 | 相册uri。                                                   |
5085| ALBUM_NAME    | 'album_name'          | 相册名字。                                                   |
5086
5087## CreateOptions
5088
5089图片或视频的创建选项。
5090
5091title参数规格为:
5092- 不应包含扩展名。
5093- 文件名字符串长度为1~255。
5094- 文件名中不允许出现的非法英文字符,包括:<br> . .. \ / : * ? " ' ` < > | { } [ ]
5095
5096**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
5097
5098**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5099
5100| 名称                   | 类型                | 必填 | 说明                                              |
5101| ---------------------- | ------------------- | ---- | ------------------------------------------------ |
5102| title                  | string                          | 否  | 图片或者视频的标题。  |
5103| subtype<sup>12+</sup>  | [PhotoSubtype](#photosubtype12) | 否  | 图片或者视频的文件子类型。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。  |
5104
5105
5106## FetchOptions
5107
5108检索条件。
5109
5110**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5111
5112| 名称                   | 类型                | 可读 | 可写 | 说明                                              |
5113| ---------------------- | ------------------- | ---- |---- | ------------------------------------------------ |
5114| fetchColumns           | Array&lt;string&gt; | 是   | 是   | 检索条件,指定列名查询。<br>对于照片,如果该参数为空,默认查询'uri'、'media_type'、'subtype'和'display_name',使用[get](#get)接口获取当前对象的其他属性时将会报错。示例:fetchColumns: ['uri', 'title']。<br>对于相册,如果该参数为空,默认查询'uri'和'album_name'。 |
5115| predicates           | [dataSharePredicates.DataSharePredicates](../apis-arkdata/js-apis-data-dataSharePredicates.md#datasharepredicates) | 是   | 是   | 谓词查询,显示过滤条件。 |
5116
5117## RequestOptions<sup>11+</sup>
5118
5119请求策略。
5120
5121**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5122
5123| 名称                   | 类型                        | 只读 | 可选 | 说明                                         |
5124| ---------------------- |----------------------------| ---- | ---- | ------------------------------------------- |
5125| deliveryMode           | [DeliveryMode](#deliverymode11) | 否   | 否   | 请求资源分发模式,可以指定对于该资源的请求策略,可被配置为快速模式,高质量模式,均衡模式三种策略。 |
5126| compatibleMode<sup>15+</sup>      | [CompatibleMode](#compatiblemode15) | 否   | 是   | 配置HDR视频转码模式,可指定配置为转码和不转码两种策略。 |
5127| mediaAssetProgressHandler<sup>15+</sup> | [MediaAssetProgressHandler](#mediaassetprogresshandler15) | 否   | 是   | 配置HDR视频转码为SDR视频时的进度级回调。 |
5128
5129## MediaChangeRequest<sup>11+</sup>
5130
5131媒体变更请求,资产变更请求和相册变更请求的父类型。
5132
5133**注意**:媒体变更请求需要在调用[applyChanges](#applychanges11)后才会提交生效。
5134
5135**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5136
5137## ResourceType<sup>11+</sup>
5138
5139枚举,写入资源的类型。
5140
5141**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
5142
5143**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5144
5145| 名称  |  值 |  说明 |
5146| ----- |  ---- |  ---- |
5147| IMAGE_RESOURCE |  1 |  表示图片资源。 |
5148| VIDEO_RESOURCE |  2 |  表示视频资源。 |
5149
5150## ImageFileType<sup>13+</sup>
5151
5152枚举,图片保存类型。
5153
5154**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5155
5156| 名称  |  值 |  说明 |
5157| ----- |  ---- |  ---- |
5158| JPEG  |  1 |  表示jpeg图片类型。 |
5159| HEIF  |  2 |  表示heif图片类型。 |
5160
5161## ChangeData
5162
5163监听器回调函数的值。
5164
5165**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5166
5167| 名称    | 类型                        | 可读 | 可写 | 说明                                                         |
5168| ------- | --------------------------- | ---- | ---- | ------------------------------------------------------------ |
5169| type    | [NotifyType](#notifytype) | 是   | 否   | ChangeData的通知类型。                                       |
5170| uris    | Array&lt;string&gt;         | 是   | 否   | 相同[NotifyType](#notifytype)的所有uri,可以是PhotoAsset或Album。 |
5171| extraUris | Array&lt;string&gt;         | 是   | 否   | 相册中变动文件的uri数组。                                    |
5172
5173## NotifyType
5174
5175枚举,通知事件的类型。
5176
5177**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5178
5179| 名称                      | 值   | 说明                             |
5180| ------------------------- | ---- | -------------------------------- |
5181| NOTIFY_ADD                | 0    | 添加文件集或相册通知的类型。     |
5182| NOTIFY_UPDATE             | 1    | 文件集或相册的更新通知类型。     |
5183| NOTIFY_REMOVE             | 2    | 删除文件集或相册的通知类型。     |
5184| NOTIFY_ALBUM_ADD_ASSET    | 3    | 在相册中添加的文件集的通知类型。 |
5185| NOTIFY_ALBUM_REMOVE_ASSET | 4    | 在相册中删除的文件集的通知类型。 |
5186
5187## DefaultChangeUri
5188
5189枚举,DefaultChangeUri子类型。
5190
5191**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5192
5193| 名称              | 值                      | 说明                                                         |
5194| ----------------- | ----------------------- | ------------------------------------------------------------ |
5195| DEFAULT_PHOTO_URI | 'file://media/Photo'      | 默认PhotoAsset的Uri,与forSubUri{true}一起使用,将接收所有PhotoAsset的更改通知。 |
5196| DEFAULT_ALBUM_URI | 'file://media/PhotoAlbum' | 默认相册的Uri,与forSubUri{true}一起使用,将接收所有相册的更改通知。 |
5197
5198## PhotoViewMIMETypes
5199
5200枚举,可选择的媒体文件类型。
5201
5202**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
5203
5204**系统能力:** SystemCapability.FileManagement.PhotoAccessHelper.Core
5205
5206| 名称                                    |  值 | 说明       |
5207|---------------------------------------|  ---- |----------|
5208| IMAGE_TYPE                            |  'image/*' | 图片类型。    |
5209| VIDEO_TYPE                            |  'video/*' | 视频类型。    |
5210| IMAGE_VIDEO_TYPE                      |  '\*/*' | 图片和视频类型。 |
5211| MOVING_PHOTO_IMAGE_TYPE<sup>12+</sup> |  'image/movingPhoto' | 动态照片类型。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。  |
5212
5213## RecommendationType<sup>11+</sup>
5214
5215枚举,推荐的图片类型。
5216
5217**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
5218
5219**系统能力:** SystemCapability.FileManagement.PhotoAccessHelper.Core
5220
5221| 名称  |  值 |  说明 |
5222| ----- |  ---- | ---- |
5223| QR_OR_BAR_CODE  |  1 | 二维码或条码。 |
5224| QR_CODE |  2 | 二维码。 |
5225| BAR_CODE |  3 | 条码。 |
5226| ID_CARD |  4 | 身份证。 |
5227| PROFILE_PICTURE |  5 | 头像。 |
5228| PASSPORT<sup>12+</sup> |  6 | 护照。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
5229| BANK_CARD<sup>12+</sup> |  7 | 银行卡。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
5230| DRIVER_LICENSE<sup>12+</sup> |  8 | 驾驶证。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
5231| DRIVING_LICENSE<sup>12+</sup> |  9 | 行驶证。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
5232| FEATURED_SINGLE_PORTRAIT<sup>12+</sup> |  10 | 推荐人像。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
5233
5234**示例:**
5235
5236```ts
5237import { BusinessError } from '@kit.BasicServicesKit';
5238async function example() {
5239  try {
5240    let recommendOptions: photoAccessHelper.RecommendationOptions = {
5241      recommendationType: photoAccessHelper.RecommendationType.ID_CARD
5242    }
5243    let options: photoAccessHelper.PhotoSelectOptions = {
5244      MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE,
5245      maxSelectNumber: 1,
5246      recommendationOptions: recommendOptions
5247    }
5248    let photoPicker = new photoAccessHelper.PhotoViewPicker();
5249    photoPicker.select(options).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => {
5250      console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult));
5251    }).catch((err: BusinessError) => {
5252      console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`);
5253    });
5254  } catch (error) {
5255    let err: BusinessError = error as BusinessError;
5256    console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`);
5257  }
5258}
5259```
5260
5261## TextContextInfo<sup>12+</sup>
5262
5263文本信息,用于推荐图片的文本信息。
5264
5265**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
5266
5267**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5268
5269| 名称                    | 类型                | 必填 | 说明                          |
5270| ----------------------- | ------------------- | ---- | -------------------------------- |
5271| text | string   | 否   | 如果需要根据文本(支持250字以内的简体中文)推荐相应的图片,则配置此参数。 |
5272
5273**示例:**
5274
5275```ts
5276import { BusinessError } from '@kit.BasicServicesKit';
5277async function example() {
5278  try {
5279    let textInfo: photoAccessHelper.TextContextInfo = {
5280      text: '上海野生动物园的大熊猫'
5281    }
5282    let recommendOptions: photoAccessHelper.RecommendationOptions = {
5283      textContextInfo: textInfo
5284    }
5285    let options: photoAccessHelper.PhotoSelectOptions = {
5286      MIMEType: photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE,
5287      maxSelectNumber: 1,
5288      recommendationOptions: recommendOptions
5289    }
5290    let photoPicker = new photoAccessHelper.PhotoViewPicker();
5291    photoPicker.select(options).then((PhotoSelectResult: photoAccessHelper.PhotoSelectResult) => {
5292      console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ' + JSON.stringify(PhotoSelectResult));
5293    }).catch((err: BusinessError) => {
5294      console.error(`PhotoViewPicker.select failed with err: ${err.code}, ${err.message}`);
5295    });
5296  } catch (error) {
5297    let err: BusinessError = error as BusinessError;
5298    console.error(`PhotoViewPicker failed with err: ${err.code}, ${err.message}`);
5299  }
5300}
5301```
5302
5303## RecommendationOptions<sup>11+</sup>
5304
5305图片推荐选项(基于图片数据分析结果,依赖设备适配)。
5306
5307**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
5308
5309**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5310
5311| 名称                    | 类型                | 必填 | 说明                          |
5312| ----------------------- | ------------------- | ---- | -------------------------------- |
5313| recommendationType | [RecommendationType](#recommendationtype11)   | 否   | 如果需要根据枚举值推荐相应的图片,则配置此参数。 |
5314| textContextInfo<sup>12+</sup> | [TextContextInfo](#textcontextinfo12)   | 否   | 如果需要根据文本信息推荐相应的图片,则配置此参数(如果同时配置了recommendationType,则仅textContextInfo生效)。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
5315
5316## BaseSelectOptions<sup>12+</sup>
5317
5318图库选择选项基类。
5319
5320**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5321
5322| 名称                    | 类型                | 必填 | 说明                          |
5323| ----------------------- | ------------------- | ---- | -------------------------------- |
5324| MIMEType<sup>10+</sup>    | [PhotoViewMIMETypes](#photoviewmimetypes)   | 否   | 可选择的媒体文件类型,若无此参数,则默认为图片和视频类型。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
5325| maxSelectNumber<sup>10+</sup>      | number | 否   | 选择媒体文件数量的最大值(最大可设置的值为500,若不设置则默认为50)。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。   |
5326| isPhotoTakingSupported<sup>11+</sup> | boolean  | 否   | 是否支持拍照,true表示支持,false表示不支持,默认为true。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
5327| isSearchSupported<sup>11+</sup> | boolean  | 否   | 是否支持搜索,true表示支持,false表示不支持,默认为true。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
5328| recommendationOptions<sup>11+</sup>       | [RecommendationOptions](#recommendationoptions11)   | 否   | 图片推荐相关配置参数。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
5329| preselectedUris<sup>11+</sup> | Array&lt;string&gt;  | 否   | 预选择图片的uri数据。<br>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 |
5330| isPreviewForSingleSelectionSupported<sup>12+</sup> | boolean  | 否   | 单选模式下是否需要进大图预览,true表示需要,false表示不需要,默认为true。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 |
5331
5332## PhotoSelectOptions
5333
5334图库选择选项子类,继承于BaseSelectOptions。
5335
5336**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
5337
5338**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5339
5340| 名称                    | 类型                | 必填 | 说明                          |
5341| ----------------------- | ------------------- | ---- | -------------------------------- |
5342| isEditSupported<sup>11+</sup>       | boolean | 否   | 是否支持编辑照片,true表示支持,false表示不支持,默认为true。     |
5343| isOriginalSupported<sup>12+</sup>       | boolean | 否   | 是否显示选择原图按钮,true表示显示,false表示不显示,默认为false。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。     |
5344| subWindowName<sup>12+</sup>       | string | 否   | 子窗窗口名称。<br>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。     |
5345| completeButtonText<sup>14+</sup>       | [CompleteButtonText](#completebuttontext14) | 否   | 完成按钮显示的内容。<br>完成按钮指在界面右下方,用户点击表示图片选择已完成的按钮。 <br>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。     |
5346
5347## PhotoSelectResult
5348
5349返回图库选择后的结果集。
5350
5351**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
5352
5353**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5354
5355| 名称                    | 类型                | 可读 | 可写 | 说明                           |
5356| ----------------------- | ------------------- | ---- | ---- | ------------------------------ |
5357| photoUris        | Array&lt;string&gt;    | 是   | 是   | 返回图库选择后的媒体文件的uri数组,此uri数组只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。 |
5358| isOriginalPhoto        | boolean    | 是   | 是   | 返回图库选择后的媒体文件是否为原图。 |
5359
5360
5361## DeliveryMode<sup>11+</sup>
5362
5363枚举,资源分发模式。
5364
5365**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5366
5367| 名称  |  值 |  说明 |
5368| ----- |  ---- |  ---- |
5369| FAST_MODE |  0 |  快速模式。 |
5370| HIGH_QUALITY_MODE |  1 |  高质量模式。 |
5371| BALANCE_MODE |  2 |  均衡模式。 |
5372
5373## PhotoCreationConfig<sup>12+</sup>
5374
5375保存图片/视频到媒体库的配置,包括保存的文件名等。
5376
5377**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
5378
5379**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5380
5381| 名称                   | 类型                | 必填 | 说明                                              |
5382| ---------------------- | ------------------- | ---- | ------------------------------------------------ |
5383| title | string | 否  | 图片或者视频的标题。|
5384| fileNameExtension | string | 是  | 文件扩展名,例如'jpg'。|
5385| photoType | [PhotoType](#phototype) | 是  | 创建的文件类型,IMAGE或者VIDEO。|
5386| subtype | [PhotoSubtype](#photosubtype12) | 否  | 图片或者视频的文件子类型,当前仅支持DEFAULT。|
5387
5388## CompatibleMode<sup>15+</sup>
5389
5390配置转码模式。
5391
5392**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5393
5394| 名称  |  值 |  说明 |
5395| ----- | ---- | ---- |
5396| ORIGINAL_FORMAT_MODE |  0 |  原视频资源内容模式。  |
5397| COMPATIBLE_FORMAT_MODE    |  1 |  兼容模式,从HDR视频转换为SDR视频。    |
5398
5399## CompleteButtonText<sup>14+</sup>
5400
5401配置完成按钮显示内容。
5402
5403**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5404
5405| 名称  |  值 |  说明 |
5406| ----- | ---- | ---- |
5407| TEXT_DONE<sup>14+</sup> |  0 |  显示“完成”。 <br>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 |
5408| TEXT_SEND<sup>14+</sup>    |  1 |  显示“发送”。 <br>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 |
5409| TEXT_ADD<sup>14+</sup> |  2 |  显示“添加”。<br>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。  |
5410
5411## MediaAssetProgressHandler<sup>15+</sup>
5412
5413媒体资产进度处理器,应用在onProgress方法中获取媒体资产进度。
5414
5415**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5416
5417### onProgress<sup>15+</sup>
5418
5419onProgress(progress: number): void
5420
5421当所请求的视频资源返回进度时系统会回调此方法。
5422
5423**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
5424
5425**参数:**
5426
5427| 参数名  | 类型    | 必填 | 说明                       |
5428| ------- | ------- | ---- | -------------------------- |
5429| progress | number | 是   | 返回的进度百分比,范围为0~100。 |
5430