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<Array<string>> 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<Array<string>> | 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<Array<string>>): 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<Array<string>> | 是 | 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<Array<string>>): 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<Array<string>> | 是 | 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<Array<string>> 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<Array<string>> | 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<Array<string>>): 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<Array<string>> | 是 | 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<Array<string>>): 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<Array<string>> | 是 | 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<Array<string>> 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<Array<string>> | 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<Array<string>>): 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<Array<string>> | 是 | 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<Array<string>>): 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<Array<string>> | 是 | 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<Array<string>> 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<Array<string>> | 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<Array<string>>): 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<Array<string>> | 是 | 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<Array<string>>): 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<Array<string>> | 是 | 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<string> | 否 | 是 | 选择文件的后缀类型。传入字符串数组,每一项代表一个后缀选项,每一项内部用"\|\"分为两部分,第一部分为描述,第二部分为过滤后缀。没有"\|\"则没有描述,该项整体是一个过滤后缀。每项过滤后缀可以存在多个后缀名,则每一个后缀名之间用英文逗号进行分隔,传入数组长度不能超过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<string> |否 | 是 | 传入需要批量授权的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<string> | 否 | 拉起documentPicker进行保存的文件名。若无此参数,则默认需要用户自行输入。 | 853| defaultFilePathUri<sup>10+</sup> | string | 否 | 指定保存的文件或者目录的URI。 | 854| fileSuffixChoices<sup>10+</sup> | Array<string> | 否 | 保存文件的后缀类型。传入字符串数组,每一项代表一个后缀选项,每一项内部用"\|\"分为两部分,第一部分为描述,第二部分为要保存的后缀。没有"\|\"则没有描述,该项整体是一个保存的后缀。默认没有后缀类型。 | 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<string> | 否 | 拉起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<PhotoSelectResult> 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<[PhotoSelectResult](#photoselectresultdeprecated)> | 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<PhotoSelectResult>): 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<[PhotoSelectResult](#photoselectresultdeprecated)> | 是 | 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<PhotoSelectResult>): 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<[PhotoSelectResult](#photoselectresultdeprecated)> | 是 | 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<Array<string>> 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<Array<string>> | 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<Array<string>>): 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<Array<string>> | 是 | 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<Array<string>>): 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<Array<string>> | 是 | 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<string> | 是 | 返回图库选择后的媒体文件的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<string> | 否 | 拉起photoPicker进行保存图片或视频资源的文件名。若无此参数,则默认需要用户自行输入。 | 1306