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