1# @ohos.file.picker (选择器)
2
3> **说明:**
4>
5> 该模块接口从API version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
6
7选择器(Picker)是一个封装PhotoViewPicker、DocumentViewPicker、AudioViewPicker等API模块,具有选择与保存的能力。应用可以自行选择使用哪种API实现文件选择和文件保存的功能。该类接口,需要应用在界面UIAbility中调用,否则无法拉起photoPicker应用或FilePicker应用。
8
9## 导入模块
10
11```ts
12import  { picker } from '@kit.CoreFileKit';
13```
14
15## DocumentViewPicker
16
17文件选择器对象,用来支撑选择和保存各种格式文档。在使用前,需要先创建DocumentViewPicker实例。
18
19**系统能力**:SystemCapability.FileManagement.UserFileService
20
21### constructor<sup>12+</sup>
22
23constructor(context: Context)
24
25创建DocumentViewPicker对象,推荐使用该构造函数,获取context参考[getContext](../apis-arkui/js-apis-getContext.md)
26
27**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
28
29**系统能力**:SystemCapability.FileManagement.UserFileService
30
31**参数:**
32| 参数名  | 类型    | 必填 | 说明                                                         |
33| ------- | ------- | ---- | ------------------------------------------------------------ |
34| context | Context| 是   | 应用上下文(仅支持UIAbilityContext)。Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-context.md)。 |
35
36**示例:**
37
38```ts
39import { common } from '@kit.AbilityKit';
40import  { picker } from '@kit.CoreFileKit';
41@Entry
42@Component
43struct Index {
44  @State message: string = 'hello World';
45
46  build() {
47    Row() {
48      Column() {
49        Text(this.message)
50          .fontSize(50)
51          .fontWeight(FontWeight.Bold)
52          .onClick(()=>{
53            let context = getContext(this) as common.Context; // 请确保getContext(this)返回结果为UIAbilityContext
54            let documentPicker = new picker.DocumentViewPicker(context);
55          })
56      }
57      .width('100%')
58    }
59    .height('100%')
60  }
61}
62```
63
64### constructor<sup>12+</sup>
65
66constructor()
67
68创建DocumentViewPicker对象,不推荐使用该构造函数,会出现概率性失败问题
69
70**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
71
72**系统能力**:SystemCapability.FileManagement.UserFileService
73
74**示例:**
75
76```ts
77let documentPicker = new picker.DocumentViewPicker(); // 不推荐使用无参构造,会出现概率性拉起失败问题
78```
79
80### constructor<sup>13+</sup>
81
82constructor(context: Context, window: window.Window)
83
84应用自行创建窗口中,可用通过该构造函数创建DocumentViewPicker对象。一般场景推荐使用constructor(context: Context)方法创建DocumentViewPicker对象。
85
86**参数:**
87| 参数名  | 类型    | 必填 | 说明                                                         |
88| ------- | ------- | ---- | ------------------------------------------------------------ |
89| context | Context| 是   | 应用上下文(仅支持UIAbilityContext)。Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-context.md)。 |
90| window  | [window.Window](../apis-arkui/js-apis-window.md#window)  | 是   | 应用创建的窗口实例。 |
91
92> **说明:**
93>
94> 当前仅支持手机
95
96**系统能力**:SystemCapability.FileManagement.UserFileService
97
98**示例:**
99
100```ts
101import { common } from '@kit.AbilityKit';
102import { picker } from '@kit.CoreFileKit';
103import { window } from '@kit.ArkUI';
104@Entry
105@Component
106struct Index {
107  @State message: string = 'hello World';
108
109  build() {
110    Row() {
111      Column() {
112        Text(this.message)
113          .fontSize(50)
114          .fontWeight(FontWeight.Bold)
115          .onClick(()=>{
116            let context = getContext(this) as common.Context; // 请确保getContext(this)返回结果为UIAbilityContext
117            let windowClass: window.Window | undefined = undefined;
118            windowClass = window.findWindow('test'); // 请确保window已创建,此处的'test'为window创建时的name参数
119            let documentPicker = new picker.DocumentViewPicker(context, windowClass);
120          })
121      }
122      .width('100%')
123    }
124    .height('100%')
125  }
126}
127```
128
129### select
130
131select(option?: DocumentSelectOptions): Promise&lt;Array&lt;string&gt;&gt;
132
133通过选择模式拉起documentPicker界面,用户可以选择一个或多个文件。接口采用Promise异步返回形式,传入可选参数DocumentSelectOptions对象,返回选择文件的uri数组。
134
135**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
136
137**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
138
139**系统能力**:SystemCapability.FileManagement.UserFileService
140
141**参数:**
142
143| 参数名  | 类型    | 必填 | 说明                       |
144| ------- | ------- | ---- | -------------------------- |
145| option | [DocumentSelectOptions](#documentselectoptions) | 否   | documentPicker选择选项,若无此参数,则默认拉起documentPicker主界面 |
146
147**返回值:**
148
149| 类型                            | 说明    |
150| ----------------------------- | :---- |
151| Promise&lt;Array&lt;string&gt;&gt; | Promise对象。返回documentPicker选择后的结果集 |
152
153**示例:**
154
155```ts
156import { BusinessError } from '@kit.BasicServicesKit';
157import { common } from '@kit.AbilityKit';
158import  { picker } from '@kit.CoreFileKit';
159async function example07(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
160  try {
161    let documentSelectOptions = new picker.DocumentSelectOptions();
162    let documentPicker = new picker.DocumentViewPicker(context);
163    documentPicker.select(documentSelectOptions).then((documentSelectResult: Array<string>) => {
164      console.info('DocumentViewPicker.select successfully, documentSelectResult uri: ' + JSON.stringify(documentSelectResult));
165    }).catch((err: BusinessError) => {
166      console.error('DocumentViewPicker.select failed with err: ' + JSON.stringify(err));
167    });
168  } catch (error) {
169    let err: BusinessError = error as BusinessError;
170    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
171  }
172}
173```
174
175### select
176
177select(option: DocumentSelectOptions, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
178
179通过选择模式拉起documentPicker界面,用户可以选择一个或多个文件。接口采用callback异步返回形式,传入参数DocumentSelectOptions对象,返回选择文件的uri数组。
180
181**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
182
183**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
184
185**系统能力**:SystemCapability.FileManagement.UserFileService
186
187**参数:**
188
189| 参数名  | 类型    | 必填 | 说明                       |
190| ------- | ------- | ---- | -------------------------- |
191| option | [DocumentSelectOptions](#documentselectoptions) | 是   | documentPicker选择选项 |
192| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回documentPicker选择后的结果集 |
193
194**示例:**
195
196```ts
197import { BusinessError } from '@kit.BasicServicesKit';
198import { common } from '@kit.AbilityKit';
199import  { picker } from '@kit.CoreFileKit';
200async function example08(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
201  try {
202    let documentSelectOptions = new picker.DocumentSelectOptions();
203    let documentPicker = new picker.DocumentViewPicker(context);
204    documentPicker.select(documentSelectOptions, (err: BusinessError, documentSelectResult: Array<string>) => {
205      if (err) {
206        console.error('DocumentViewPicker.select failed with err: ' + JSON.stringify(err));
207        return;
208      }
209      console.info('DocumentViewPicker.select successfully, documentSelectResult uri: ' + JSON.stringify(documentSelectResult));
210    });
211  } catch (error) {
212    let err: BusinessError = error as BusinessError;
213    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
214  }
215}
216```
217
218### select
219
220select(callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
221
222通过选择模式拉起documentPicker界面,用户可以选择一个或多个文件。接口采用callback异步返回形式,返回选择文件的uri数组。
223
224**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
225
226**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
227
228**系统能力**:SystemCapability.FileManagement.UserFileService
229
230**参数:**
231
232| 参数名  | 类型    | 必填 | 说明                       |
233| ------- | ------- | ---- | -------------------------- |
234| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回documentPicker选择后的结果集 |
235
236**示例:**
237
238```ts
239import { BusinessError } from '@kit.BasicServicesKit';
240import { common } from '@kit.AbilityKit';
241import  { picker } from '@kit.CoreFileKit';
242async function example09(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
243  try {
244    let documentPicker = new picker.DocumentViewPicker(context);
245    documentPicker.select((err: BusinessError, documentSelectResult: Array<string>) => {
246      if (err) {
247        console.error('DocumentViewPicker.select failed with err: ' + JSON.stringify(err));
248        return;
249      }
250      console.info('DocumentViewPicker.select successfully, documentSelectResult uri: ' + JSON.stringify(documentSelectResult));
251    });
252  } catch (error) {
253    let err: BusinessError = error as BusinessError;
254    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
255  }
256}
257```
258
259### save
260
261save(option?: DocumentSaveOptions): Promise&lt;Array&lt;string&gt;&gt;
262
263通过保存模式拉起documentPicker界面,用户可以保存一个或多个文件。接口采用Promise异步返回形式,传入可选参数DocumentSaveOptions对象,返回保存文件的uri数组。
264
265**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
266
267**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
268
269**系统能力**:SystemCapability.FileManagement.UserFileService
270
271**参数:**
272
273| 参数名  | 类型    | 必填 | 说明                       |
274| ------- | ------- | ---- | -------------------------- |
275| option | [DocumentSaveOptions](#documentsaveoptions) | 否   | documentPicker保存选项,若无此参数,则拉起documentPicker界面后需用户自行输入保存的文件名 |
276
277**返回值:**
278
279| 类型                            | 说明    |
280| ----------------------------- | :---- |
281| Promise&lt;Array&lt;string&gt;&gt; | Promise对象。返回documentPicker保存后的结果集 |
282
283**示例:**
284
285```ts
286import { BusinessError } from '@kit.BasicServicesKit';
287import { common } from '@kit.AbilityKit';
288import  { picker } from '@kit.CoreFileKit';
289async function example10(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
290  try {
291    let documentSaveOptions = new picker.DocumentSaveOptions();
292    documentSaveOptions.newFileNames = ['DocumentViewPicker01.txt'];
293    let documentPicker = new picker.DocumentViewPicker(context);
294    documentPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => {
295      console.info('DocumentViewPicker.save successfully, documentSaveResult uri: ' + JSON.stringify(documentSaveResult));
296    }).catch((err: BusinessError) => {
297      console.error('DocumentViewPicker.save failed with err: ' + JSON.stringify(err));
298    });
299  } catch (error) {
300    let err: BusinessError = error as BusinessError;
301    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
302  }
303}
304```
305
306### save
307
308save(option: DocumentSaveOptions, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
309
310通过保存模式拉起documentPicker界面,用户可以保存一个或多个文件。接口采用callback异步返回形式,传入参数DocumentSaveOptions对象,返回保存文件的uri数组。
311
312**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
313
314**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
315
316**系统能力**:SystemCapability.FileManagement.UserFileService
317
318**参数:**
319
320| 参数名  | 类型    | 必填 | 说明                       |
321| ------- | ------- | ---- | -------------------------- |
322| option | [DocumentSaveOptions](#documentsaveoptions) | 是   | documentPicker保存选项 |
323| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回documentPicker保存后的结果集 |
324
325**示例:**
326
327```ts
328import { BusinessError } from '@kit.BasicServicesKit';
329import { common } from '@kit.AbilityKit';
330import  { picker } from '@kit.CoreFileKit';
331async function example11(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
332  try {
333    let documentSaveOptions = new picker.DocumentSaveOptions();
334    documentSaveOptions.newFileNames = ['DocumentViewPicker02.txt'];
335    let documentPicker = new picker.DocumentViewPicker(context);
336    documentPicker.save(documentSaveOptions, (err: BusinessError, documentSaveResult: Array<string>) => {
337      if (err) {
338        console.error('DocumentViewPicker.save failed with err: ' + JSON.stringify(err));
339        return;
340      }
341      console.info('DocumentViewPicker.save successfully, documentSaveResult uri: ' + JSON.stringify(documentSaveResult));
342    });
343  } catch (error) {
344    let err: BusinessError = error as BusinessError;
345    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
346  }
347}
348```
349
350### save
351
352save(callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
353
354通过保存模式拉起documentPicker界面,用户可以保存一个或多个文件。接口采用callback异步返回形式,返回保存文件的uri数组。
355
356**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
357
358**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
359
360**系统能力**:SystemCapability.FileManagement.UserFileService
361
362**参数:**
363
364| 参数名  | 类型    | 必填 | 说明                       |
365| ------- | ------- | ---- | -------------------------- |
366| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回documentPicker保存后的结果集 |
367
368**示例:**
369
370```ts
371import { BusinessError } from '@kit.BasicServicesKit';
372import { common } from '@kit.AbilityKit';
373import  { picker } from '@kit.CoreFileKit';
374async function example12(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
375  try {
376    let documentPicker = new picker.DocumentViewPicker(context);
377    documentPicker.save((err: BusinessError, documentSaveResult: Array<string>) => {
378      if (err) {
379        console.error('DocumentViewPicker.save failed with err: ' + JSON.stringify(err));
380        return;
381      }
382      console.info('DocumentViewPicker.save successfully, documentSaveResult uri: ' + JSON.stringify(documentSaveResult));
383    });
384  } catch (error) {
385    let err: BusinessError = error as BusinessError;
386    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
387  }
388}
389```
390
391### getSelectedIndex<sup>14+</sup>;
392
393getSelectedIndex(): number
394
395获取保存成功后的文件后缀类型的下标。
396
397该方法只在调用 [save()](#save)时使用生效,其他场景下不可以使用。
398
399该方法需要配置参数[DocumentSaveOptions.fileSuffixChoices](#documentsaveoptions)使用。
400
401该方法返回的是所选后缀类型的下标(number),所选的后缀类型是开发者所传的参数[DocumentSaveOptions.fileSuffixChoices](#documentsaveoptions)里的某个后缀类型,如果没有传参,并且调用了getSelectedIndex()方法,返回值为-1。
402
403**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。
404
405**系统能力**:SystemCapability.FileManagement.UserFileService.FolderSelection
406
407```ts
408import { BusinessError } from '@kit.BasicServicesKit';
409import { common } from '@kit.AbilityKit';
410import  { picker } from '@kit.CoreFileKit';
411async function exampleIndex(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
412  try {
413    let documentSaveOptions = new picker.DocumentSaveOptions();
414    //保存文件的名字
415    documentSaveOptions.newFileNames = ['DocumentViewPicker01'];
416    //保存文件的后缀类型
417    documentSaveOptions.fileSuffixChoices = ['txt', 'mp4', 'pdf'];
418    let documentPicker = new picker.DocumentViewPicker(context);
419    documentPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => {
420      if (documentSaveOptions.fileSuffixChoices != undefined && documentSaveResult != undefined) {
421        //获取保存文件的后缀类型的下标
422        let index = documentPicker.getSelectedIndex();
423        //获取保存文件的后缀类型。
424        let selectedsuffix = documentSaveOptions.fileSuffixChoices[index];
425        console.info ('DocumentViewPicker.save selectedsuffix is ' + selectedsuffix);
426      }
427      console.info('DocumentViewPicker.save successfully, documentSaveResult uri: ' + JSON.stringify(documentSaveResult));
428    }).catch((err: BusinessError) => {
429      console.error('DocumentViewPicker.save failed with err: ' + JSON.stringify(err));
430    });
431  } catch (error) {
432    let err: BusinessError = error as BusinessError;
433    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
434  }
435}
436```
437## AudioViewPicker
438
439音频选择器对象,用来支撑选择和保存音频类文件等用户场景。在使用前,需要先创建AudioViewPicker实例。
440
441**系统能力**:SystemCapability.FileManagement.UserFileService
442
443### constructor<sup>12+</sup>
444
445constructor(context: Context)
446
447创建AudioViewPicker对象,推荐使用该构造函数,获取context参考[getContext](../apis-arkui/js-apis-getContext.md)
448
449**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
450
451**系统能力**:SystemCapability.FileManagement.UserFileService
452
453**参数:**
454| 参数名  | 类型    | 必填 | 说明                                                         |
455| ------- | ------- | ---- | ------------------------------------------------------------ |
456| context | Context| 是   | 应用上下文(仅支持UIAbilityContext)。Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-context.md)。 |
457
458**示例:**
459
460```ts
461import { common } from '@kit.AbilityKit';
462import  { picker } from '@kit.CoreFileKit';
463@Entry
464@Component
465struct Index {
466  @State message: string = 'hello World';
467
468  build() {
469    Row() {
470      Column() {
471        Text(this.message)
472          .fontSize(50)
473          .fontWeight(FontWeight.Bold)
474          .onClick(()=>{
475            let context = getContext(this) as common.Context; // 请确保getContext(this)返回结果为UIAbilityContext
476            let audioPicker = new picker.AudioViewPicker(context);
477          })
478      }
479      .width('100%')
480    }
481    .height('100%')
482  }
483}
484```
485### constructor<sup>12+</sup>
486
487constructor()
488
489创建AudioViewPicker对象,不推荐使用该构造函数,会出现概率性失败问题
490
491**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
492
493**系统能力**:SystemCapability.FileManagement.UserFileService
494
495**示例:**
496
497```ts
498let audioPicker = new picker.AudioViewPicker(); // 不推荐使用无参构造,会出现概率性拉起失败问题
499```
500
501### select
502
503select(option?: AudioSelectOptions): Promise&lt;Array&lt;string&gt;&gt;
504
505通过选择模式拉起audioPicker界面,用户可以选择一个或多个音频文件。接口采用Promise异步返回形式,传入可选参数AudioSelectOptions对象,返回选择音频文件的uri数组。
506
507**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[媒体类uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri介绍)。
508
509**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
510
511**系统能力**:SystemCapability.FileManagement.UserFileService
512
513**参数:**
514
515| 参数名  | 类型    | 必填 | 说明                       |
516| ------- | ------- | ---- | -------------------------- |
517| option | [AudioSelectOptions](#audioselectoptions) | 否   | audioPicker音频选择选项,若无此参数,则默认拉起audioPicker主界面  |
518
519**返回值:**
520
521| 类型                            | 说明    |
522| ----------------------------- | :---- |
523| Promise&lt;Array&lt;string&gt;&gt; | Promise对象。返回audioPicker选择音频后的结果集 |
524
525**示例:**
526
527```ts
528import { BusinessError } from '@kit.BasicServicesKit';
529import { common } from '@kit.AbilityKit';
530import  { picker } from '@kit.CoreFileKit';
531async function example13(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
532  try {
533    let audioSelectOptions = new picker.AudioSelectOptions();
534    let audioPicker = new picker.AudioViewPicker(context);
535    audioPicker.select(audioSelectOptions).then((audioSelectResult: Array<string>) => {
536      console.info('AudioViewPicker.select successfully, audioSelectResult uri: ' + JSON.stringify(audioSelectResult));
537    }).catch((err: BusinessError) => {
538      console.error('AudioViewPicker.select failed with err: ' + JSON.stringify(err));
539    });
540  } catch (error) {
541    let err: BusinessError = error as BusinessError;
542    console.error('AudioViewPicker failed with err: ' + JSON.stringify(err));
543  }
544}
545```
546
547### select
548
549select(option: AudioSelectOptions, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
550
551通过选择模式拉起audioPicker界面,用户可以选择一个或多个音频文件。接口采用callback异步返回形式,传入参数AudioSelectOptions对象,返回选择音频文件的uri数组。
552
553**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[媒体类uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri介绍)。
554
555**系统能力**:SystemCapability.FileManagement.UserFileService
556
557**参数:**
558
559| 参数名  | 类型    | 必填 | 说明                       |
560| ------- | ------- | ---- | -------------------------- |
561| option | [AudioSelectOptions](#audioselectoptions) | 是   | audioPicker音频选择选项 |
562| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回audioPicker选择音频后的结果集 |
563
564**示例:**
565
566```ts
567import { BusinessError } from '@kit.BasicServicesKit';
568import { common } from '@kit.AbilityKit';
569import  { picker } from '@kit.CoreFileKit';
570async function example14(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
571  try {
572    let audioSelectOptions = new picker.AudioSelectOptions();
573    let audioPicker = new picker.AudioViewPicker(context);
574    audioPicker.select(audioSelectOptions, (err: BusinessError, audioSelectResult: Array<string>) => {
575      if (err) {
576        console.error('AudioViewPicker.select failed with err: ' + JSON.stringify(err));
577        return;
578      }
579      console.info('AudioViewPicker.select successfully, audioSelectResult uri: ' + JSON.stringify(audioSelectResult));
580    });
581  } catch (error) {
582    let err: BusinessError = error as BusinessError;
583    console.error('AudioViewPicker failed with err: ' + JSON.stringify(err));
584  }
585}
586```
587
588### select
589
590select(callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
591
592通过选择模式拉起audioPicker界面,用户可以选择一个或多个音频文件。接口采用callback异步返回形式,返回选择音频文件的uri数组。
593
594**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[媒体类uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri介绍)。
595
596**系统能力**:SystemCapability.FileManagement.UserFileService
597
598**参数:**
599
600| 参数名  | 类型    | 必填 | 说明                       |
601| ------- | ------- | ---- | -------------------------- |
602| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回audioPicker选择音频后的结果集 |
603
604**示例:**
605
606```ts
607import { BusinessError } from '@kit.BasicServicesKit';
608import { common } from '@kit.AbilityKit';
609import  { picker } from '@kit.CoreFileKit';
610async function example15(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
611  try {
612    let audioPicker = new picker.AudioViewPicker(context);
613    audioPicker.select((err: BusinessError, audioSelectResult: Array<string>) => {
614      if (err) {
615        console.error('AudioViewPicker.select failed with err: ' + JSON.stringify(err));
616        return;
617      }
618      console.info('AudioViewPicker.select successfully, audioSelectResult uri: ' + JSON.stringify(audioSelectResult));
619    });
620  } catch (error) {
621    let err: BusinessError = error as BusinessError;
622    console.error('AudioViewPicker failed with err: ' + JSON.stringify(err));
623  }
624}
625```
626
627### save
628
629save(option?: AudioSaveOptions): Promise&lt;Array&lt;string&gt;&gt;
630
631通过保存模式拉起audioPicker界面(目前拉起的是documentPicker,audioPicker在规划中),用户可以保存一个或多个音频文件。接口采用Promise异步返回形式,传入可选参数AudioSaveOptions对象,返回保存音频文件的uri数组。
632
633**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
634
635**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
636
637**系统能力**:SystemCapability.FileManagement.UserFileService
638
639**参数:**
640
641| 参数名  | 类型    | 必填 | 说明                       |
642| ------- | ------- | ---- | -------------------------- |
643| option | [AudioSaveOptions](#audiosaveoptions) | 否   | audioPicker保存音频文件选项,若无此参数,则拉起audioPicker界面后需用户自行输入保存的文件名 |
644
645**返回值:**
646
647| 类型                            | 说明    |
648| ----------------------------- | ---- |
649| Promise&lt;Array&lt;string&gt;&gt; | Promise对象。返回audioPicker保存音频文件后的结果集 |
650
651**示例:**
652
653```ts
654import { BusinessError } from '@kit.BasicServicesKit';
655import { common } from '@kit.AbilityKit';
656import  { picker } from '@kit.CoreFileKit';
657async function example16(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
658  try {
659    let audioSaveOptions = new picker.AudioSaveOptions();
660    audioSaveOptions.newFileNames = ['AudioViewPicker01.mp3'];
661    let audioPicker = new picker.AudioViewPicker(context);
662    audioPicker.save(audioSaveOptions).then((audioSaveResult: Array<string>) => {
663      console.info('AudioViewPicker.save successfully, audioSaveResult uri: ' + JSON.stringify(audioSaveResult))
664    }).catch((err: BusinessError) => {
665      console.error('AudioViewPicker.save failed with err: ' + JSON.stringify(err));
666    });
667  } catch (error) {
668    let err: BusinessError = error as BusinessError;
669    console.error('AudioViewPicker failed with err: ' + JSON.stringify(err));
670  }
671}
672```
673
674### save
675
676save(option: AudioSaveOptions, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
677
678通过保存模式拉起audioPicker界面(目前拉起的是documentPicker,audioPicker在规划中),用户可以保存一个或多个音频文件。接口采用callback异步返回形式,传入参数AudioSaveOptions对象,返回保存音频文件的uri数组。
679
680**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
681
682**系统能力**:SystemCapability.FileManagement.UserFileService
683
684**参数:**
685
686| 参数名  | 类型    | 必填 | 说明                       |
687| ------- | ------- | ---- | -------------------------- |
688| option | [AudioSaveOptions](#audiosaveoptions) | 是   | audioPicker保存音频文件选项 |
689| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回audioPicker保存音频文件后的结果集 |
690
691**示例:**
692
693```ts
694import { BusinessError } from '@kit.BasicServicesKit';
695import { common } from '@kit.AbilityKit';
696import  { picker } from '@kit.CoreFileKit';
697async function example17(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
698  try {
699    let audioSaveOptions = new picker.AudioSaveOptions();
700    audioSaveOptions.newFileNames = ['AudioViewPicker02.mp3'];
701    let audioPicker = new picker.AudioViewPicker(context);
702    audioPicker.save(audioSaveOptions, (err: BusinessError, audioSaveResult: Array<string>) => {
703      if (err) {
704        console.error('AudioViewPicker.save failed with err: ' + JSON.stringify(err));
705        return;
706      }
707      console.info('AudioViewPicker.save successfully, audioSaveResult uri: ' + JSON.stringify(audioSaveResult));
708    });
709  } catch (error) {
710    let err: BusinessError = error as BusinessError;
711    console.error('AudioViewPicker failed with err: ' + JSON.stringify(err));
712  }
713}
714```
715
716### save
717
718save(callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
719
720通过保存模式拉起audioPicker界面(目前拉起的是documentPicker,audioPicker在规划中),用户可以保存一个或多个音频文件。接口采用callback异步返回形式,返回保存音频文件的uri数组。
721
722**注意**:此接口返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
723
724**系统能力**:SystemCapability.FileManagement.UserFileService
725
726**参数:**
727
728| 参数名  | 类型    | 必填 | 说明                       |
729| ------- | ------- | ---- | -------------------------- |
730| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回audioPicker保存音频文件后的结果集 |
731
732**示例:**
733
734```ts
735import { BusinessError } from '@kit.BasicServicesKit';
736import { common } from '@kit.AbilityKit';
737import  { picker } from '@kit.CoreFileKit';
738async function example18(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
739  try {
740    let audioPicker = new picker.AudioViewPicker(context);
741    audioPicker.save((err: BusinessError, audioSaveResult: Array<string>) => {
742      if (err) {
743        console.error('AudioViewPicker.save failed with err: ' + JSON.stringify(err));
744        return;
745      }
746      console.info('AudioViewPicker.save successfully, audioSaveResult uri: ' + JSON.stringify(audioSaveResult));
747    });
748  } catch (error) {
749    let err: BusinessError = error as BusinessError;
750    console.error('AudioViewPicker failed with err: ' + JSON.stringify(err));
751  }
752}
753```
754
755## DocumentSelectMode<sup>11+</sup>
756
757枚举,picker选择的文档类型。
758
759**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
760
761**系统能力:** SystemCapability.FileManagement.UserFileService.FolderSelection
762
763| 名称  |  值 |  说明 |
764| ----- |  ---- | ---- |
765| FILE  | 0  | 文件类型  |
766| FOLDER | 1  | 文件夹类型  |
767| MIXED | 2  | 文件和文件夹混合类型  |
768
769## DocumentSelectOptions
770
771文档选择选项。
772
773**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
774
775**系统能力:** SystemCapability.FileManagement.UserFileService
776
777| 名称                    | 类型                                          | 必填 | 说明                                       |
778| :---------------------- |---------------------------------------------| ---- |------------------------------------------|
779| maxSelectNumber<sup>10+</sup>       | number                                      | 否   | 选择文件最大个数,上限500,有效值范围1-500(选择目录仅对具有该系统能力的设备开放。且目录选择的最大个数为1)。默认值是1。**系统能力:** SystemCapability.FileManagement.UserFileService  |
780| defaultFilePathUri<sup>10+</sup>    | string                                      | 否   | 指定选择的文件或者目录路径                            |
781| fileSuffixFilters<sup>10+</sup>     | Array&lt;string&gt;                         | 否   | 选择文件的后缀类型,传入字符串数组,每一项代表一个后缀选项,每一项内部用"\|\"分为两部分,第一部分为描述,第二部分为过滤后缀。没有"\|\"则没有描述,该项整体是一个过滤后缀。每项过滤后缀可以存在多个后缀名,则每一个后缀名之间用英文逗号进行分隔,传入数组长度不能超过100。仅对具有该系统能力的设备开放。默认全部过滤,即显示所有文件。**系统能力:** SystemCapability.FileManagement.UserFileService   |
782| selectMode<sup>11+</sup>         | [DocumentSelectMode](#documentselectmode11) | 否   | 支持选择的资源类型,比如:文件、文件夹和二者混合,仅对具有该系统能力的设备开放,默认值是文件类型。**系统能力:** SystemCapability.FileManagement.UserFileService.FolderSelection  |
783| authMode<sup>12+</sup>    | boolean                              | 否   | 拉起授权picker,默认为false(非授权模式)。当authMode为true时为授权模式,defaultFilePathUri必填,表明待授权uri。仅对具有该系统能力的设备开放,**系统能力:** SystemCapability.FileManagement.UserFileService.FolderSelection  |
784
785## DocumentPickerMode<sup>12+</sup>
786
787枚举,picker选择的文档类型。
788
789**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
790
791**系统能力:** SystemCapability.FileManagement.UserFileService
792
793| 名称  |  值 |  说明 |
794| ----- |  ---- | ---- |
795| DEFAULT  | 0  | 标准模式 |
796| DOWNLOAD | 1  | 下载模式 |
797
798## DocumentSaveOptions
799
800文档保存选项。
801
802**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
803
804**系统能力:** SystemCapability.FileManagement.UserFileService
805
806| 名称                    | 类型                | 必填 |  说明                           |
807| ----------------------- | ------------------- | ---- | ---------------------------- |
808| newFileNames            | Array&lt;string&gt;    | 否   | 拉起documentPicker进行保存的文件名,若无此参数,则默认需要用户自行输入  |
809| defaultFilePathUri<sup>10+</sup>    | string  | 否   | 指定保存的文件或者目录路径  |
810| fileSuffixChoices<sup>10+</sup>     | Array&lt;string&gt; | 否   | 保存文件的后缀类型。传入字符串数组,每一项代表一个后缀选项,每一项内部用"\|\"分为两部分,第一部分为描述,第二部分为要保存的后缀。没有"\|\"则没有描述,该项整体是一个保存的后缀。默认没有后缀类型。 |
811| pickerMode<sup>12+</sup>     | [DocumentPickerMode](#documentpickermode12) | 否   | 拉起picker的类型, 默认为DEFAULT。当pickerMode设置为DOWNLOAD时,用户配置的参数newFileNames、defaultFilePathUri和fileSuffixChoices将不会生效 |
812
813## AudioSelectOptions
814
815音频选择选项。
816
817**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
818
819**系统能力:** SystemCapability.FileManagement.UserFileService
820| 名称                    | 类型                                          | 必填 | 说明                                       |
821| :---------------------- |---------------------------------------------| ---- |------------------------------------------|
822| maxSelectNumber<sup>12+</sup>       | number                                      | 否   | 选择文件最大个数,默认值为1,上限500,有效值范围1-500 |
823
824## AudioSaveOptions
825
826音频的保存选项。
827
828**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
829
830**系统能力:** SystemCapability.FileManagement.UserFileService
831
832| 名称                    | 类型                | 必填 |  说明                           |
833| ----------------------- | ------------------- | ---- | ---------------------------- |
834| newFileNames              | Array&lt;string&gt;    | 否  | 拉起audioPicker进行保存音频资源的文件名,若无此参数,则默认需要用户自行输入 |
835
836## PhotoViewPicker<sup>(deprecated)</sup>
837
838图库选择器对象,用来支撑选择图片/视频和保存图片/视频等用户场景。选择文件推荐使用[PhotoAccessHelper的PhotoViewPicker](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoviewpicker)。在使用前,需要先创建PhotoViewPicker实例。
839
840> **说明:**
841>
842> 从 API version 9开始支持,从API version 12开始废弃。建议使用[photoAccessHelper.PhotoViewPicker](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoviewpicker)替代。
843
844**系统能力**:SystemCapability.FileManagement.UserFileService
845
846### constructor<sup>12+</sup>
847
848constructor(context: Context)
849
850**系统能力**:SystemCapability.FileManagement.UserFileService
851
852创建PhotoViewPicker对象,推荐使用该构造函数,获取context参考[getContext](../apis-arkui/js-apis-getContext.md)
853
854**示例:**
855
856```ts
857import { common } from '@kit.AbilityKit';
858import  { picker } from '@kit.CoreFileKit';
859@Entry
860@Component
861struct Index {
862  @State message: string = 'hello World';
863
864  build() {
865    Row() {
866      Column() {
867        Text(this.message)
868          .fontSize(50)
869          .fontWeight(FontWeight.Bold)
870          .onClick(()=>{
871            let context = getContext(this) as common.Context; // 请确保 getContext(this) 返回结果为 UIAbilityContext
872            let photoPicker = new picker.PhotoViewPicker(context);
873          })
874      }
875      .width('100%')
876    }
877    .height('100%')
878  }
879}
880```
881
882### constructor<sup>12+</sup>
883
884constructor()
885
886**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
887
888**系统能力**:SystemCapability.FileManagement.UserFileService
889
890创建PhotoViewPicker对象,不推荐使用该构造函数,会出现概率性失败问题
891
892**示例:**
893
894```ts
895let photoPicker = new picker.PhotoViewPicker(); // 不推荐使用无参构造,会出现概率性拉起失败问题
896```
897
898### select
899
900select(option?: PhotoSelectOptions): Promise&lt;PhotoSelectResult&gt;
901
902通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用Promise异步返回形式,传入可选参数PhotoSelectOptions对象,返回PhotoSelectResult对象。
903
904> **说明:**
905>
906> 从 API version 9开始支持,从API version 12开始废弃。建议使用[photoAccessHelper.PhotoViewPicker#select](../apis-media-library-kit/js-apis-photoAccessHelper.md#select)替代。
907
908**注意**:此接口返回的PhotoSelectResult对象中的photoUris只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](../apis-media-library-kit/js-apis-photoAccessHelper.md#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。
909
910**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
911
912**系统能力**:SystemCapability.FileManagement.UserFileService
913
914**参数:**
915
916| 参数名  | 类型    | 必填 | 说明                       |
917| ------- | ------- | ---- | -------------------------- |
918| option | [PhotoSelectOptions](#photoselectoptionsdeprecated) | 否   | photoPicker选择选项,若无此参数,则默认选择媒体文件类型为图片和视频类型,选择媒体文件数量的默认最大值为50 |
919
920**返回值:**
921
922| 类型                            | 说明    |
923| ----------------------------- | :---- |
924| Promise&lt;[PhotoSelectResult](#photoselectresultdeprecated)&gt; | Promise对象。返回photoPicker选择后的结果集 |
925
926**示例:**
927
928```ts
929import { BusinessError } from '@kit.BasicServicesKit';
930import { common } from '@kit.AbilityKit';
931import  { picker } from '@kit.CoreFileKit';
932async function example01(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
933  try {
934    let photoSelectOptions = new picker.PhotoSelectOptions();
935    photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
936    photoSelectOptions.maxSelectNumber = 5;
937    let photoPicker = new picker.PhotoViewPicker(context);
938    photoPicker.select(photoSelectOptions).then((photoSelectResult: picker.PhotoSelectResult) => {
939      console.info('PhotoViewPicker.select successfully, photoSelectResult uri: ' + JSON.stringify(photoSelectResult));
940    }).catch((err: BusinessError) => {
941      console.error('PhotoViewPicker.select failed with err: ' + JSON.stringify(err));
942    });
943  } catch (error) {
944    let err: BusinessError = error as BusinessError;
945    console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err));
946  }
947}
948```
949
950### select
951
952select(option: PhotoSelectOptions, callback: AsyncCallback&lt;PhotoSelectResult&gt;): void
953
954通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用callback异步返回形式,传入参数PhotoSelectOptions对象,返回PhotoSelectResult对象。
955
956> **说明:**
957>
958> 从 API version 9开始支持,从API version 12开始废弃。建议使用[photoAccessHelper.PhotoViewPicker#select](../apis-media-library-kit/js-apis-photoAccessHelper.md#select-1)替代。
959
960**注意**:此接口返回的PhotoSelectResult对象中的photoUris只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](../apis-media-library-kit/js-apis-photoAccessHelper.md#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。
961
962**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
963
964**系统能力**:SystemCapability.FileManagement.UserFileService
965
966**参数:**
967
968| 参数名  | 类型    | 必填 | 说明                       |
969| ------- | ------- | ---- | -------------------------- |
970| option | [PhotoSelectOptions](#photoselectoptionsdeprecated) | 是   | photoPicker选择选项 |
971| callback | AsyncCallback&lt;[PhotoSelectResult](#photoselectresultdeprecated)&gt;      | 是   | callback 返回photoPicker选择后的结果集 |
972
973**示例:**
974
975```ts
976import { BusinessError } from '@kit.BasicServicesKit';
977import { common } from '@kit.AbilityKit';
978import  { picker } from '@kit.CoreFileKit';
979async function example02(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
980  try {
981    let photoSelectOptions = new picker.PhotoSelectOptions();
982    photoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
983    photoSelectOptions.maxSelectNumber = 5;
984    let photoPicker = new picker.PhotoViewPicker(context);
985    photoPicker.select(photoSelectOptions, (err: BusinessError, photoSelectResult: picker.PhotoSelectResult) => {
986      if (err) {
987        console.error('PhotoViewPicker.select failed with err: ' + JSON.stringify(err));
988        return;
989      }
990      console.info('PhotoViewPicker.select successfully, photoSelectResult uri: ' + JSON.stringify(photoSelectResult));
991    });
992  } catch (error) {
993    let err: BusinessError = error as BusinessError;
994    console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err));
995  }
996}
997```
998
999### select
1000
1001select(callback: AsyncCallback&lt;PhotoSelectResult&gt;): void
1002
1003通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频。接口采用callback异步返回形式,返回PhotoSelectResult对象。
1004
1005> **说明:**
1006>
1007> 从 API version 9开始支持,从API version 12开始废弃。建议使用[photoAccessHelper.PhotoViewPicker#select](../apis-media-library-kit/js-apis-photoAccessHelper.md#select-2)替代。
1008
1009**注意**:此接口返回的PhotoSelectResult对象中的photoUris只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](../apis-media-library-kit/js-apis-photoAccessHelper.md#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。
1010
1011**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1012
1013**系统能力**:SystemCapability.FileManagement.UserFileService
1014
1015**参数:**
1016
1017| 参数名  | 类型    | 必填 | 说明                       |
1018| ------- | ------- | ---- | -------------------------- |
1019| callback | AsyncCallback&lt;[PhotoSelectResult](#photoselectresultdeprecated)&gt;      | 是   | callback 返回photoPicker选择后的结果集 |
1020
1021**示例:**
1022
1023```ts
1024import { BusinessError } from '@kit.BasicServicesKit';
1025import { common } from '@kit.AbilityKit';
1026import  { picker } from '@kit.CoreFileKit';
1027async function example03(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
1028  try {
1029    let photoPicker = new picker.PhotoViewPicker(context);
1030    photoPicker.select((err: BusinessError, photoSelectResult: picker.PhotoSelectResult) => {
1031      if (err) {
1032        console.error('PhotoViewPicker.select failed with err: ' + JSON.stringify(err));
1033        return;
1034      }
1035      console.info('PhotoViewPicker.select successfully, photoSelectResult uri: ' + JSON.stringify(photoSelectResult));
1036    });
1037  } catch (error) {
1038    let err: BusinessError = error as BusinessError;
1039    console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err));
1040  }
1041}
1042```
1043
1044### save
1045
1046save(option?: PhotoSaveOptions): Promise&lt;Array&lt;string&gt;&gt;
1047
1048通过保存模式拉起photoPicker界面,用户可以保存一个或多个图片/视频。接口采用Promise异步返回形式,传入可选参数PhotoSaveOptions对象,返回保存文件的uri数组。
1049
1050> **说明:**
1051>
1052> 从 API version 9开始支持,从API version 12开始废弃。建议使用[SaveButton](../apis-arkui/arkui-ts/ts-security-components-savebutton.md#savebutton)替代。
1053
1054**注意**:此接口会将文件保存在文件管理器,而不是图库。返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
1055
1056**系统能力**:SystemCapability.FileManagement.UserFileService
1057
1058**参数:**
1059
1060| 参数名  | 类型    | 必填 | 说明                       |
1061| ------- | ------- | ---- | -------------------------- |
1062| option | [PhotoSaveOptions](#photosaveoptionsdeprecated) | 否   | photoPicker保存图片或视频文件选项,若无此参数,则拉起photoPicker界面后需用户自行输入保存的文件名 |
1063
1064**返回值:**
1065
1066| 类型                            | 说明    |
1067| ----------------------------- | :---- |
1068| Promise&lt;Array&lt;string&gt;&gt; | Promise对象。返回photoPicker保存图片或视频文件后的结果集 |
1069
1070**示例:**
1071
1072```ts
1073import { BusinessError } from '@kit.BasicServicesKit';
1074import { common } from '@kit.AbilityKit';
1075import  { picker } from '@kit.CoreFileKit';
1076async function example04(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
1077  try {
1078    let photoSaveOptions = new picker.PhotoSaveOptions();
1079    photoSaveOptions.newFileNames = ['PhotoViewPicker01.jpg', 'PhotoViewPicker01.mp4'];
1080    let photoPicker = new picker.PhotoViewPicker(context);
1081    photoPicker.save(photoSaveOptions).then((photoSaveResult: Array<string>) => {
1082      console.info('PhotoViewPicker.save successfully, photoSaveResult uri: ' + JSON.stringify(photoSaveResult));
1083    }).catch((err: BusinessError) => {
1084      console.error('PhotoViewPicker.save failed with err: ' + JSON.stringify(err));
1085    });
1086  } catch (error) {
1087    let err: BusinessError = error as BusinessError;
1088      console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err));
1089  }
1090}
1091```
1092
1093### save
1094
1095save(option: PhotoSaveOptions, callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
1096
1097通过保存模式拉起photoPicker界面,用户可以保存一个或多个图片/视频。接口采用callback异步返回形式,传入参数PhotoSaveOptions对象,返回保存文件的uri数组。
1098
1099> **说明:**
1100>
1101> 从 API version 9开始支持,从API version 12开始废弃。建议使用[SaveButton](../apis-arkui/arkui-ts/ts-security-components-savebutton.md#savebutton)替代。
1102
1103**注意**:此接口会将文件保存在文件管理器,而不是图库。返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
1104
1105**系统能力**:SystemCapability.FileManagement.UserFileService
1106
1107**参数:**
1108
1109| 参数名  | 类型    | 必填 | 说明                       |
1110| ------- | ------- | ---- | -------------------------- |
1111| option | [PhotoSaveOptions](#photosaveoptionsdeprecated) | 是   | photoPicker保存图片或视频文件选项 |
1112| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回photoPicker保存图片或视频文件后的结果集 |
1113
1114**示例:**
1115
1116```ts
1117import { BusinessError } from '@kit.BasicServicesKit';
1118import { common } from '@kit.AbilityKit';
1119import  { picker } from '@kit.CoreFileKit';
1120async function example05(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
1121  try {
1122    let photoSaveOptions = new picker.PhotoSaveOptions();
1123    photoSaveOptions.newFileNames = ['PhotoViewPicker02.jpg','PhotoViewPicker02.mp4'];
1124    let photoPicker = new picker.PhotoViewPicker(context);
1125    photoPicker.save(photoSaveOptions, (err: BusinessError, photoSaveResult: Array<string>) => {
1126      if (err) {
1127        console.error('PhotoViewPicker.save failed with err: ' + JSON.stringify(err));
1128        return;
1129      }
1130      console.info('PhotoViewPicker.save successfully, photoSaveResult uri: ' + JSON.stringify(photoSaveResult));
1131    });
1132  } catch (error) {
1133    let err: BusinessError = error as BusinessError;
1134    console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err));
1135  }
1136}
1137```
1138
1139### save
1140
1141save(callback: AsyncCallback&lt;Array&lt;string&gt;&gt;): void
1142
1143通过保存模式拉起photoPicker界面,用户可以保存一个或多个图片/视频。接口采用callback异步返回形式,返回保存文件的uri数组。
1144
1145> **说明:**
1146>
1147> 从 API version 9开始支持,从API version 12开始废弃。建议使用[SaveButton](../apis-arkui/arkui-ts/ts-security-components-savebutton.md#savebutton)替代。
1148
1149**注意**:此接口会将文件保存在文件管理器,而不是图库。返回的uri数组的具体使用方式参见用户文件uri介绍中的[文档类uri的使用方式](../../file-management/user-file-uri-intro.md#文档类uri的使用方式)。
1150
1151**系统能力**:SystemCapability.FileManagement.UserFileService
1152
1153**参数:**
1154
1155| 参数名  | 类型    | 必填 | 说明                       |
1156| ------- | ------- | ---- | -------------------------- |
1157| callback | AsyncCallback&lt;Array&lt;string&gt;&gt;      | 是   | callback 返回photoPicker保存图片或视频文件后的结果集 |
1158
1159**示例:**
1160
1161```ts
1162import { BusinessError } from '@kit.BasicServicesKit';
1163import { common } from '@kit.AbilityKit';
1164import  { picker } from '@kit.CoreFileKit';
1165async function example06(context: common.Context) { // 需确保 context 由 UIAbilityContext 转换而来
1166  try {
1167    let photoPicker = new picker.PhotoViewPicker(context);
1168    photoPicker.save((err: BusinessError, photoSaveResult: Array<string>) => {
1169      if (err) {
1170        console.error('PhotoViewPicker.save failed with err: ' + JSON.stringify(err));
1171        return;
1172      }
1173      console.info('PhotoViewPicker.save successfully, photoSaveResult uri: ' + JSON.stringify(photoSaveResult));
1174    });
1175  } catch (error) {
1176    let err: BusinessError = error as BusinessError;
1177    console.error('PhotoViewPicker failed with err: ' + JSON.stringify(err));
1178  }
1179}
1180```
1181
1182## PhotoViewMIMETypes<sup>(deprecated)</sup>
1183
1184枚举,可选择的媒体文件类型。
1185
1186> **说明:**
1187>
1188> 从 API version 9开始支持,从API version 12开始废弃。建议使用[photoAccessHelper.PhotoViewMIMETypes](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoviewmimetypes)替代。
1189
1190**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1191
1192**系统能力:** SystemCapability.FileManagement.UserFileService
1193
1194| 名称  |  值 |  说明 |
1195| ----- |  ---- | ---- |
1196| IMAGE_TYPE  |  'image/*' | 图片类型  |
1197| VIDEO_TYPE |  'video/*' | 视频类型  |
1198| IMAGE_VIDEO_TYPE |  '\*/*' | 图片和视频类型  |
1199
1200## PhotoSelectOptions<sup>(deprecated)</sup>
1201
1202图库选择选项。
1203
1204> **说明:**
1205>
1206> 从 API version 9开始支持,从API version 12开始废弃。建议使用[photoAccessHelper.PhotoSelectOptions](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoselectoptions)替代。
1207
1208**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1209
1210**系统能力:** SystemCapability.FileManagement.UserFileService
1211
1212| 名称                    | 类型                | 必填 | 说明                          |
1213| ----------------------- | ------------------- | ---- | -------------------------------- |
1214| MIMEType              | [PhotoViewMIMETypes](#photoviewmimetypesdeprecated)   | 否   | 可选择的媒体文件类型,若无此参数,则默认为图片和视频类型  |
1215| maxSelectNumber       | number | 否   | 选择媒体文件数量的最大值(默认值为50,最大值为500)      |
1216
1217## PhotoSelectResult<sup>(deprecated)</sup>
1218
1219返回图库选择后的结果集。
1220
1221> **说明:**
1222>
1223> 从 API version 9开始支持,从API version 12开始废弃。建议使用[photoAccessHelper.PhotoSelectResult](../apis-media-library-kit/js-apis-photoAccessHelper.md#photoselectresult)替代。
1224
1225**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。
1226
1227**系统能力:** SystemCapability.FileManagement.UserFileService
1228
1229| 名称                    | 类型                | 必填 | 说明                           |
1230| ----------------------- | ------------------- | ----| ------------------------------ |
1231| photoUris        | Array&lt;string&gt;    | 是   | 返回图库选择后的媒体文件的uri数组,此uri数组只能通过临时授权的方式调用[photoAccessHelper.getAssets接口](../apis-media-library-kit/js-apis-photoAccessHelper.md#getassets)去使用,具体使用方式参见用户文件uri介绍中的[媒体文件uri的使用方式](../../file-management/user-file-uri-intro.md#媒体文件uri的使用方式)。  |
1232| isOriginalPhoto        | boolean    | 是   | 返回图库选择后的媒体文件是否为原图。true为原图,false不是原图。  |
1233
1234## PhotoSaveOptions<sup>(deprecated)</sup>
1235
1236图片或视频的保存选项。
1237
1238> **说明:**
1239>
1240> 从 API version 9开始支持,从API version 12开始废弃。无替代接口和替代方法。
1241
1242**系统能力:** SystemCapability.FileManagement.UserFileService
1243
1244| 名称                    | 类型                | 必填 |  说明                           |
1245| ----------------------- | ------------------- | ---- | ---------------------------- |
1246| newFileNames              | Array&lt;string&gt;    | 否  | 拉起photoPicker进行保存图片或视频资源的文件名,若无此参数,则默认需要用户自行输入 |