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