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