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