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