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