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