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