1# @ohos.inputMethod (输入法框架) 2 3本模块主要面向普通前台应用(备忘录、信息、设置等系统应用与三方应用),提供对输入法的控制、管理能力,包括显示/隐藏输入法软键盘、切换输入法、获取所有输入法列表等。 4 5>**说明:** 6> 7>本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8 9 10## 导入模块 11 12``` 13import inputMethod from '@ohos.inputMethod'; 14``` 15 16## 常量<sup>8+</sup> 17 18常量值。 19 20**系统能力:** SystemCapability.MiscServices.InputMethodFramework 21 22| 参数名 | 类型 | 常量值 | 说明 | 23| -------- | -------- | -------- | -------- | 24| MAX_TYPE_NUM | number | 128 | 可支持的最大输入法个数。 | 25 26## InputMethodProperty<sup>8+</sup> 27 28输入法应用属性。 29 30**系统能力:** SystemCapability.MiscServices.InputMethodFramework 31 32| 名称 | 类型 | 可读 | 可写 | 说明 | 33| -------- | -------- | -------- | -------- | -------- | 34| name<sup>9+</sup> | string | 是 | 否 | 输入法内部名称。必填。| 35| id<sup>9+</sup> | string | 是 | 否 | 输入法唯一标识。必填。| 36| label<sup>9+</sup> | string | 是 | 否 | 输入法对外显示名称。 非必填。| 37| icon<sup>9+</sup> | string | 是 | 否 | 输入法图标数据。非必填。 | 38| iconId<sup>9+</sup> | number | 是 | 否 | 输入法图标资源号。非必填。 | 39| extra<sup>9+</sup> | object | 是 | 是 | 输入法扩展信息。 必填。| 40| packageName<sup>(deprecated)</sup> | string | 是 | 否 | 输入法包名。必填。<br/>**说明:** 从API version 8开始支持,从API version 9开始废弃,建议使用name替代。 | 41| methodId<sup>(deprecated)</sup> | string | 是 | 否 | 输入法唯一标识。必填。<br/>**说明:** 从API version 8开始支持,从API version 9开始废弃,建议使用id替代。 | 42 43## inputMethod.getController<sup>9+</sup> 44 45getController(): InputMethodController 46 47获取客户端实例[InputMethodController](#inputmethodcontroller)。 48 49**系统能力:** SystemCapability.MiscServices.InputMethodFramework 50 51**返回值:** 52 53| 类型 | 说明 | 54| ----------------------------------------------- | ------------------------ | 55| [InputMethodController](#inputmethodcontroller) | 回调返回当前客户端实例。 | 56 57**错误码:** 58 59以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 60 61| 错误码ID | 错误信息 | 62| -------- | ------------------------------ | 63| 12800006 | Input method controller error. | 64 65**示例:** 66 67```js 68let inputMethodController = inputMethod.getController(); 69``` 70 71## inputMethod.getSetting<sup>9+</sup> 72 73getSetting(): InputMethodSetting 74 75获取客户端设置实例[InputMethodSetting](#inputmethodsetting8)。 76 77**系统能力:** SystemCapability.MiscServices.InputMethodFramework 78 79**返回值:** 80 81| 类型 | 说明 | 82| ----------------------------------------- | ---------------------------- | 83| [InputMethodSetting](#inputmethodsetting8) | 回调返回当前客户端设置实例。 | 84 85**错误码:** 86 87以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 88 89| 错误码ID | 错误信息 | 90| -------- | -------------------------------------- | 91| 12800007 | Input method settings extension error. | 92 93**示例:** 94 95```js 96let inputMethodSetting = inputMethod.getSetting(); 97``` 98 99## inputMethod.switchInputMethod<sup>9+</sup> 100 101switchInputMethod(target: InputMethodProperty, callback: AsyncCallback<boolean>): void 102 103切换输入法。使用callback异步回调。 104 105**需要权限:** ohos.permission.CONNECT_IME_ABILITY,仅系统应用可用。 106 107**系统能力:** SystemCapability.MiscServices.InputMethodFramework 108 109**参数:** 110 111| 参数名 | 类型 | 必填 | 说明 | 112| -------- | -------- | -------- | -------- | 113| target | [InputMethodProperty](#inputmethodproperty8) | 是 | 传入要切换的目标输入法。 | 114| callback | AsyncCallback<boolean> | 是 | 回调函数。当输入法切换成功,err为undefined,data为true;否则为错误对象。 | 115 116**错误码:** 117 118以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 119 120| 错误码ID | 错误信息 | 121| -------- | -------------------------------------- | 122| 12800005 | Configuration persisting error. | 123| 12800008 | Input method manager service error. | 124 125**示例:** 126 127```js 128let im = inputMethod.getCurrentInputMethod(); 129let prop = { 130 packageName: im.packageName, 131 methodId: im.methodId, 132 name: im.packageName, 133 id: im.methodId, 134 extra: {} 135} 136try{ 137 inputMethod.switchInputMethod(prop, (err, result) => { 138 if (err !== undefined) { 139 console.error('Failed to switchInputMethod: ' + JSON.stringify(err)); 140 return; 141 } 142 if (result) { 143 console.info('Succeeded in switching inputmethod.'); 144 } else { 145 console.error('Failed to switchInputMethod.'); 146 } 147 }); 148} catch(err) { 149 console.error('Failed to switchInputMethod: ' + JSON.stringify(err)); 150} 151``` 152## inputMethod.switchInputMethod<sup>9+</sup> 153switchInputMethod(target: InputMethodProperty): Promise<boolean> 154 155切换输入法。使用promise异步回调。 156 157**需要权限:** ohos.permission.CONNECT_IME_ABILITY,仅系统应用可用。 158 159**系统能力:** SystemCapability.MiscServices.InputMethodFramework 160 161**参数:** 162 163 | 参数名 | 类型 | 必填 | 说明 | 164 | -------- | -------- | -------- | -------- | 165 |target | [InputMethodProperty](#inputmethodproperty8)| 是 | 传入要切换的目标输入法。 | 166 167**返回值:** 168 169 | 类型 | 说明 | 170 | ----------------------------------------- | ---------------------------- | 171 | Promise\<boolean> | Promise对象。返回true表示切换输入法成功;返回false表示切换输入法失败。 | 172 173**错误码:** 174 175以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 176 177| 错误码ID | 错误信息 | 178| -------- | -------------------------------------- | 179| 12800005 | Configuration persisting error. | 180| 12800008 | Input method manager service error. | 181 182**示例:** 183 184```js 185let im = inputMethod.getCurrentInputMethod(); 186let prop = { 187 packageName: im.packageName, 188 methodId: im.methodId, 189 name: im.packageName, 190 id: im.methodId, 191 extra: {} 192} 193try { 194 inputMethod.switchInputMethod(prop).then((result) => { 195 if (result) { 196 console.info('Succeeded in switching inputmethod.'); 197 } else { 198 console.error('Failed to switchInputMethod.'); 199 } 200 }).catch((err) => { 201 console.error('Failed to switchInputMethod: ' + JSON.stringify(err)); 202 }) 203} catch(err) { 204 console.error('Failed to switchInputMethod: ' + JSON.stringify(err)); 205} 206``` 207 208## inputMethod.getCurrentInputMethod<sup>9+</sup> 209 210getCurrentInputMethod(): InputMethodProperty 211 212获取当前输入法扩展应用,提供同步接口,返回当前输入法属性。 213 214**系统能力:** SystemCapability.MiscServices.InputMethodFramework 215 216**返回值:** 217 218| 类型 | 说明 | 219| -------------------------------------------- | ------------------------ | 220| [InputMethodProperty](#inputmethodproperty8) | 返回当前输入法属性对象。 | 221 222**示例:** 223 224```js 225let currentIme = inputMethod.getCurrentInputMethod(); 226``` 227 228## inputMethod.switchCurrentInputMethodSubtype<sup>9+</sup> 229 230switchCurrentInputMethodSubtype(target: InputMethodSubtype, callback: AsyncCallback\<boolean>): void 231 232在当前输入法应用内切换子类型。使用callback异步回调。 233 234**需要权限:** ohos.permission.CONNECT_IME_ABILITY,仅系统应用可用。 235 236**系统能力:** SystemCapability.MiscServices.InputMethodFramework 237 238**参数:** 239 240| 参数名 | 类型 | 必填 | 说明 | 241| -------- | -------- | -------- | -------- | 242| target | [InputMethodSubtype](./js-apis-inputmethod-subtype.md#inputmethodsubtype)| 是 | 传入要切换的目标输入法子类型。 | 243| callback | AsyncCallback<boolean> | 是 | 回调函数。当输入法子类型切换成功,err为undefined,data为true;否则为错误对象。| 244 245**错误码:** 246 247以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 248 249| 错误码ID | 错误信息 | 250| -------- | -------------------------------------- | 251| 12800005 | Configuration persisting error. | 252| 12800008 | Input method manager service error. | 253 254**示例:** 255 256```js 257try { 258 inputMethod.switchCurrentInputMethodSubtype({ 259 id: "ServiceExtAbility", 260 label: "", 261 name: "com.example.kikakeyboard", 262 mode: "upper", 263 locale: "", 264 language: "", 265 icon: "", 266 iconId: 0, 267 extra: {} 268 }, (err, result) => { 269 if (err !== undefined) { 270 console.error('Failed to switchCurrentInputMethodSubtype: ' + JSON.stringify(err)); 271 return; 272 } 273 if (result) { 274 console.info('Succeeded in switching currentInputMethodSubtype.'); 275 } else { 276 console.error('Failed to switchCurrentInputMethodSubtype'); 277 } 278 }); 279} catch(err) { 280 console.error('Failed to switchCurrentInputMethodSubtype: ' + JSON.stringify(err)); 281} 282``` 283 284## inputMethod.switchCurrentInputMethodSubtype<sup>9+</sup> 285 286switchCurrentInputMethodSubtype(target: InputMethodSubtype): Promise<boolean> 287 288在当前输入法应用内切换子类型。使用promise异步回调。 289 290**需要权限:** ohos.permission.CONNECT_IME_ABILITY,仅系统应用可用。 291 292**系统能力:** SystemCapability.MiscServices.InputMethodFramework 293 294**参数:** 295 296| 参数名 | 类型 | 必填 | 说明 | 297| -------- | -------- | -------- | -------- | 298|target | [InputMethodSubtype](./js-apis-inputmethod-subtype.md#inputmethodsubtype)| 是 | 传入要切换的目标输入法子类型。 | 299 300**返回值:** 301 302| 类型 | 说明 | 303| ----------------------------------------- | ---------------------------- | 304| Promise\<boolean> | Promise对象。返回true表示在当前输入法应用内切换子类型成功;返回false表示在当前输入法应用内切换子类型失败。 | 305 306**错误码:** 307 308以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 309 310| 错误码ID | 错误信息 | 311| -------- | -------------------------------------- | 312| 12800005 | Configuration persisting error. | 313| 12800008 | Input method manager service error. | 314 315**示例:** 316 317```js 318try { 319 inputMethod.switchCurrentInputMethodSubtype({ 320 id: "ServiceExtAbility", 321 label: "", 322 name: "com.example.kikakeyboard", 323 mode: "upper", 324 locale: "", 325 language: "", 326 icon: "", 327 iconId: 0, 328 extra: {} 329 }).then((result) => { 330 if (result) { 331 console.info('Succeeded in switching currentInputMethodSubtype.'); 332 } else { 333 console.error('Failed to switchCurrentInputMethodSubtype.'); 334 } 335 }).catch((err) => { 336 console.error('Failed to switchCurrentInputMethodSubtype: ' + JSON.stringify(err)); 337 }) 338} catch(err) { 339 console.error('Failed to switchCurrentInputMethodSubtype: ' + JSON.stringify(err)); 340} 341``` 342 343## inputMethod.getCurrentInputMethodSubtype<sup>9+</sup> 344 345getCurrentInputMethodSubtype(): InputMethodSubtype 346 347获取当前输入法子类型。 348 349**系统能力:** SystemCapability.MiscServices.InputMethodFramework 350 351**返回值:** 352 353| 类型 | 说明 | 354| -------------------------------------------- | ------------------------ | 355| [InputMethodSubtype](./js-apis-inputmethod-subtype.md#inputmethodsubtype) | 返回当前输入法子类型对象。 | 356 357**示例:** 358 359```js 360let currentImeSubType = inputMethod.getCurrentInputMethodSubtype(); 361``` 362 363## inputMethod.switchCurrentInputMethodAndSubtype<sup>9+</sup> 364 365switchCurrentInputMethodAndSubtype(inputMethodProperty: InputMethodProperty, inputMethodSubtype: InputMethodSubtype, callback: AsyncCallback\<boolean>): void 366 367切换至指定输入法应用的指定子类型,用于跨输入法应用切换子类型。使用callback异步回调。 368 369**需要权限:** ohos.permission.CONNECT_IME_ABILITY,仅系统应用可用。 370 371**系统能力:** SystemCapability.MiscServices.InputMethodFramework 372 373**参数:** 374 375| 参数名 | 类型 | 必填 | 说明 | 376| -------- | -------- | -------- | -------- | 377|inputMethodProperty | [InputMethodProperty](#inputmethodproperty8)| 是 | 传入要切换的目标输入法。 | 378|inputMethodSubtype | [InputMethodSubtype](./js-apis-inputmethod-subtype.md#inputmethodsubtype)| 是 | 传入要切换的目标输入法子类型。 | 379| callback | AsyncCallback<boolean> | 是 | 回调函数。当输入法和子类型切换成功,err为undefined,data为获取到的切换子类型结果true;否则为错误对象。 | 380 381**错误码:** 382 383以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 384 385| 错误码ID | 错误信息 | 386| -------- | -------------------------------------- | 387| 12800005 | Configuration persisting error. | 388| 12800008 | Input method manager service error. | 389 390**示例:** 391 392```js 393let im = inputMethod.getCurrentInputMethod(); 394let imSubType = inputMethod.getCurrentInputMethodSubtype(); 395try { 396 inputMethod.switchCurrentInputMethodAndSubtype(im, imSubType, (err,result) => { 397 if (err !== undefined) { 398 console.error('Failed to switchCurrentInputMethodAndSubtype: ' + JSON.stringify(err)); 399 return; 400 } 401 if (result) { 402 console.info('Succeeded in switching currentInputMethodAndSubtype.'); 403 } else { 404 console.error('Failed to switchCurrentInputMethodAndSubtype.'); 405 } 406 }); 407} catch (err) { 408 console.error('Failed to switchCurrentInputMethodAndSubtype: ' + JSON.stringify(err)); 409} 410``` 411 412## inputMethod.switchCurrentInputMethodAndSubtype<sup>9+</sup> 413 414switchCurrentInputMethodAndSubtype(inputMethodProperty: InputMethodProperty, inputMethodSubtype: InputMethodSubtype): Promise<boolean> 415 416切换至指定输入法应用的指定子类型,用于跨输入法应用切换子类型。使用promise异步回调。 417 418**需要权限:** ohos.permission.CONNECT_IME_ABILITY,仅系统应用可用。 419 420**系统能力:** SystemCapability.MiscServices.InputMethodFramework 421 422**参数:** 423 424| 参数名 | 类型 | 必填 | 说明 | 425| -------- | -------- | -------- | -------- | 426|inputMethodProperty | [InputMethodProperty](#inputmethodproperty8)| 是 | 传入要切换的目标输入法。 | 427|inputMethodSubtype | [InputMethodSubtype](./js-apis-inputmethod-subtype.md#inputmethodsubtype)| 是 | 传入要切换的目标输入法子类型。 | 428 429**返回值:** 430 431| 类型 | 说明 | 432| ----------------------------------------- | ---------------------------- | 433| Promise\<boolean> | Promise对象。返回true表示切换至指定输入法应用的指定子类型成功;返回false表示切换至指定输入法应用的指定子类型失败。 | 434 435**错误码:** 436 437以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 438 439| 错误码ID | 错误信息 | 440| -------- | -------------------------------------- | 441| 12800005 | Configuration persisting error. | 442| 12800008 | Input method manager service error. | 443 444**示例:** 445 446```js 447let im = inputMethod.getCurrentInputMethod(); 448let imSubType = inputMethod.getCurrentInputMethodSubtype(); 449try { 450 inputMethod.switchCurrentInputMethodAndSubtype(im, imSubType).then((result) => { 451 if (result) { 452 console.info('Succeeded in switching currentInputMethodAndSubtype.'); 453 } else { 454 console.error('Failed to switchCurrentInputMethodAndSubtype.'); 455 } 456 }).catch((err) => { 457 console.error('Failed to switchCurrentInputMethodAndSubtype: ' + JSON.stringify(err)); 458 }) 459} catch(err) { 460 console.error('Failed to switchCurrentInputMethodAndSubtype: ' + JSON.stringify(err)); 461} 462``` 463 464## inputMethod.getInputMethodController<sup>(deprecated)</sup> 465 466getInputMethodController(): InputMethodController 467 468获取客户端实例[InputMethodController](#inputmethodcontroller)。 469 470> **说明:** 471> 472> 从API version 6开始支持,从API version 9开始废弃, 建议使用[getController()](#inputmethodgetcontroller9)替代。 473 474**系统能力:** SystemCapability.MiscServices.InputMethodFramework 475 476**返回值:** 477 478| 类型 | 说明 | 479| ----------------------------------------------- | ------------------------ | 480| [InputMethodController](#inputmethodcontroller) | 回调返回当前客户端实例。 | 481 482**示例:** 483 484```js 485let inputMethodController = inputMethod.getInputMethodController(); 486``` 487 488## inputMethod.getInputMethodSetting<sup>(deprecated)</sup> 489 490getInputMethodSetting(): InputMethodSetting 491 492获取客户端设置实例[InputMethodSetting](#inputmethodsetting8)。 493 494> **说明:** 495> 496> 从API version 6开始支持,从API version 9开始废弃, 建议使用[getSetting()](#inputmethodgetsetting9)替代。 497 498**系统能力:** SystemCapability.MiscServices.InputMethodFramework 499 500**返回值:** 501 502| 类型 | 说明 | 503| ----------------------------------------- | ---------------------------- | 504| [InputMethodSetting](#inputmethodsetting8) | 回调返回当前客户端设置实例。 | 505 506**示例:** 507 508```js 509let inputMethodSetting = inputMethod.getInputMethodSetting(); 510``` 511 512## InputMethodController 513 514下列API示例中都需使用[getController](#inputmethodgetcontroller9)获取到InputMethodController实例,再通过此实例调用对应方法。 515 516### stopInputSession<sup>9+</sup> 517 518stopInputSession(callback: AsyncCallback<boolean>): void 519 520结束输入会话。通过点击输入框实现输入会话的开启之后该接口的调用才可生效。使用callback异步回调。 521 522**系统能力:** SystemCapability.MiscServices.InputMethodFramework 523 524**参数:** 525 526| 参数名 | 类型 | 必填 | 说明 | 527| -------- | -------- | -------- | -------- | 528| callback | AsyncCallback<boolean> | 是 | 回调函数。当结束输入会话成功时,err为undefined,data为true;否则为错误对象。 | 529 530**错误码:** 531 532以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 533 534| 错误码ID | 错误信息 | 535| -------- | -------------------------------------- | 536| 12800003 | Input method client error. | 537| 12800008 | Input method manager service error. | 538 539**示例:** 540 541```js 542try { 543 inputMethodController.stopInputSession((error, result) => { 544 if (error !== undefined) { 545 console.error('Failed to stopInputSession: ' + JSON.stringify(error)); 546 return; 547 } 548 if (result) { 549 console.info('Succeeded in stopping inputSession.'); 550 } else { 551 console.error('Failed to stopInputSession.'); 552 } 553 }); 554} catch(error) { 555 console.error('Failed to stopInputSession: ' + JSON.stringify(error)); 556} 557``` 558 559### stopInputSession<sup>9+</sup> 560 561stopInputSession(): Promise<boolean> 562 563结束输入会话。通过点击输入框实现输入会话的开启之后此接口才可生效。使用promise异步回调。 564 565**系统能力:** SystemCapability.MiscServices.InputMethodFramework 566 567**返回值:** 568 569| 类型 | 说明 | 570| -------- | -------- | 571| Promise<boolean> | Promise对象。返回true表示结束输入会话成功;返回false表示结束输入会话失败。 | 572 573**错误码:** 574 575以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 576 577| 错误码ID | 错误信息 | 578| -------- | -------------------------------------- | 579| 12800003 | Input method client error. | 580| 12800008 | Input method manager service error. | 581 582**示例:** 583 584```js 585try { 586 inputMethodController.stopInputSession().then((result) => { 587 if (result) { 588 console.info('Succeeded in stopping inputSession.'); 589 } else { 590 console.error('Failed to stopInputSession.'); 591 } 592 }).catch((err) => { 593 console.error('Failed to stopInputSession: ' + JSON.stringify(err)); 594 }) 595} catch(err) { 596 console.error('Failed to stopInputSession: ' + JSON.stringify(err)); 597} 598``` 599 600### showSoftKeyboard<sup>9+</sup> 601 602showSoftKeyboard(callback: AsyncCallback<void>): void 603 604显示软键盘。需要与输入框绑定使用。当点击输入框后,才可通过该接口的调用显示出当前输入法的软键盘。使用callback异步回调。 605 606**需要权限:** ohos.permission.CONNECT_IME_ABILITY,仅系统应用可用。 607 608**系统能力:** SystemCapability.MiscServices.InputMethodFramework 609 610**参数:** 611 612| 参数名 | 类型 | 必填 | 说明 | 613| -------- | ------------------------- | ---- | ---------- | 614| callback | AsyncCallback<void> | 是 | 回调函数。当软键盘显示成功。err为undefined,否则为错误对象。 | 615 616**错误码:** 617 618以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 619 620| 错误码ID | 错误信息 | 621| -------- | -------------------------------------- | 622| 12800003 | Input method client error. | 623| 12800008 | Input method manager service error. | 624 625**示例:** 626 627```js 628inputMethodController.showSoftKeyboard((err) => { 629 if (err === undefined) { 630 console.info('Succeeded in showing softKeyboard.'); 631 } else { 632 console.error('Failed to showSoftKeyboard: ' + JSON.stringify(err)); 633 } 634}) 635``` 636 637### showSoftKeyboard<sup>9+</sup> 638 639showSoftKeyboard(): Promise<void> 640 641显示软键盘。需要与输入框绑定使用。当点击输入框后,才可通过该接口的调用显示出当前输入法的软键盘。使用Promise异步回调。 642 643**需要权限:** ohos.permission.CONNECT_IME_ABILITY,仅系统应用可用。 644 645**系统能力:** SystemCapability.MiscServices.InputMethodFramework 646 647**返回值:** 648 649| 类型 | 说明 | 650| ------------------- | ------------------------- | 651| Promise<void> | 无返回结果的Promise对象。 | 652 653**错误码:** 654 655以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 656 657| 错误码ID | 错误信息 | 658| -------- | -------------------------------------- | 659| 12800003 | Input method client error. | 660| 12800008 | Input method manager service error. | 661 662**示例:** 663 664```js 665inputMethodController.showSoftKeyboard().then(() => { 666 console.log('Succeeded in showing softKeyboard.'); 667}).catch((err) => { 668 console.error('Failed to showSoftKeyboard: ' + JSON.stringify(err)); 669}); 670``` 671 672### hideSoftKeyboard<sup>9+</sup> 673 674hideSoftKeyboard(callback: AsyncCallback<void>): void 675 676隐藏软键盘。需要与输入框绑定使用。点击输入框后,才可以使用该接口的调用隐藏软键盘。使用callback异步回调。 677 678**需要权限:** ohos.permission.CONNECT_IME_ABILITY,仅系统应用可用。 679 680**系统能力:** SystemCapability.MiscServices.InputMethodFramework 681 682**参数:** 683 684| 参数名 | 类型 | 必填 | 说明 | 685| -------- | ------------------------- | ---- | ---------- | 686| callback | AsyncCallback<void> | 是 | 回调函数。当软键盘隐藏成功。err为undefined,否则为错误对象。 | 687 688**错误码:** 689 690以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 691 692| 错误码ID | 错误信息 | 693| -------- | -------------------------------------- | 694| 12800003 | Input method client error. | 695| 12800008 | Input method manager service error. | 696 697**示例:** 698 699```js 700inputMethodController.hideSoftKeyboard((err) => { 701 if (err === undefined) { 702 console.info('Succeeded in hiding softKeyboard.'); 703 } else { 704 console.error('Failed to hideSoftKeyboard: ' + JSON.stringify(err)); 705 } 706}) 707``` 708 709### hideSoftKeyboard<sup>9+</sup> 710 711hideSoftKeyboard(): Promise<void> 712 713隐藏软键盘。需要与输入框绑定使用。点击输入框后,才可以使用该接口的调用隐藏软键盘。使用Promise异步回调。 714 715**需要权限:** ohos.permission.CONNECT_IME_ABILITY,仅系统应用可用。 716 717**系统能力:** SystemCapability.MiscServices.InputMethodFramework 718 719**返回值:** 720 721| 类型 | 说明 | 722| ------------------- | ------------------------- | 723| Promise<void> | 无返回结果的Promise对象。 | 724 725**错误码:** 726 727以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 728 729| 错误码ID | 错误信息 | 730| -------- | -------------------------------------- | 731| 12800003 | Input method client error. | 732| 12800008 | Input method manager service error. | 733 734**示例:** 735 736```js 737inputMethodController.hideSoftKeyboard().then(() => { 738 console.log('Succeeded in hiding softKeyboard.'); 739}).catch((err) => { 740 console.error('Failed to hideSoftKeyboard: ' + JSON.stringify(err)); 741}); 742``` 743 744### stopInput<sup>(deprecated)</sup> 745 746stopInput(callback: AsyncCallback<boolean>): void 747 748结束输入会话。通过点击输入框实现输入会话的开启之后该接口的调用才可生效。使用callback异步回调。 749 750> **说明:** 751> 752> 从API version 6开始支持,从API version 9开始废弃, 建议使用[stopInputSession()](#stopinputsession9)替代。 753 754**系统能力:** SystemCapability.MiscServices.InputMethodFramework 755 756**参数:** 757 758| 参数名 | 类型 | 必填 | 说明 | 759| -------- | -------- | -------- | -------- | 760| callback | AsyncCallback<boolean> | 是 | 回调函数。当输入法隐藏成功,err为undefined,data为true;否则为错误对象。 | 761 762**示例:** 763 764```js 765inputMethodController.stopInput((error, result) => { 766 if (error !== undefined) { 767 console.error('Failed to stopInput: ' + JSON.stringify(error)); 768 return; 769 } 770 if (result) { 771 console.info('Succeeded in stopping input.'); 772 } else { 773 console.error('Failed to stopInput.'); 774 } 775}); 776``` 777 778### stopInput<sup>(deprecated)</sup> 779 780stopInput(): Promise<boolean> 781 782结束输入会话。通过点击输入框实现输入会话的开启之后该接口的调用才可生效。使用promise异步回调。 783 784> **说明:** 785> 786> 从API version 6开始支持,从API version 9开始废弃, 建议使用[stopInputSession()](#stopinputsession9)替代。 787 788**系统能力:** SystemCapability.MiscServices.InputMethodFramework 789 790**返回值:** 791 792| 类型 | 说明 | 793| -------- | -------- | 794| Promise<boolean> | Promise对象。返回true表示输入法隐藏成功;返回false表示输入法隐藏失败。 | 795 796**示例:** 797 798```js 799inputMethodController.stopInput().then((result) => { 800 if (result) { 801 console.info('Succeeded in stopping input.'); 802 } else { 803 console.error('Failed to stopInput.'); 804 } 805}).catch((err) => { 806 console.error('Failed to stopInput: ' + err); 807}) 808``` 809 810## InputMethodSetting<sup>8+</sup> 811 812下列API示例中都需使用[getSetting](#inputmethodgetsetting9)获取到InputMethodSetting实例,再通过此实例调用对应方法。 813 814### on('imeChange')<sup>9+</sup> 815 816on(type: 'imeChange', callback: (inputMethodProperty: InputMethodProperty, inputMethodSubtype: InputMethodSubtype) => void): void 817 818订阅输入法及子类型变化监听事件。使用callback异步回调。 819 820**系统能力:** SystemCapability.MiscServices.InputMethodFramework 821 822**参数:** 823 824| 参数名 | 类型 | 必填 | 说明 | 825| -------- | ------------------------------- | ---- | ------------------------------------------------------------ | 826| type | string | 是 | 设置监听类型。<br/>-type为‘imeChange’时表示订阅输入法及子类型变化监听事件。 | 827| callback | (inputMethodProperty: [InputMethodProperty](#inputmethodproperty8), inputMethodSubtype: [InputMethodSubtype](./js-apis-inputmethod-subtype.md#inputmethodsubtype)) => void | 是 | 回调函数,返回输入法属性对象及输入法子类型对象。 | 828 829**示例:** 830 831```js 832inputMethodSetting.on('imeChange', (inputMethodProperty, inputMethodSubtype) => { 833 console.info('Succeeded in subscribing imeChange: inputMethodProperty: ' + JSON.stringify(inputMethodProperty) + " , inputMethodSubtype: " + JSON.stringify(inputMethodSubtype)); 834}); 835``` 836 837### off('imeChange')<sup>9+</sup> 838 839off(type: 'imeChange', callback?: (inputMethodProperty: InputMethodProperty, inputMethodSubtype: InputMethodSubtype) => void): void 840 841取消订阅输入法及子类型变化监听事件。使用callback异步回调。 842 843**系统能力:** SystemCapability.MiscServices.InputMethodFramework 844 845**参数:** 846 847| 参数名 | 类型 | 必填 | 说明 | 848| -------- | ------------------------------- | ---- | ------------------------------------------------------------ | 849| type | string | 是 | 设置监听类型。<br/>-type为‘imeChange’时表示取消订阅输入法及子类型变化监听事件。 | 850| callback | (inputMethodProperty: [InputMethodProperty](#inputmethodproperty8), inputMethodSubtype: [InputMethodSubtype](./js-apis-inputmethod-subtype.md#inputmethodsubtype)) => void | 否 | 回调函数,返回取消订阅的输入法属性对象及输入法子类型对象。 | 851 852**示例:** 853 854```js 855inputMethodSetting.off('imeChange'); 856``` 857 858### listInputMethodSubtype<sup>9+</sup> 859 860listInputMethodSubtype(inputMethodProperty: InputMethodProperty, callback: AsyncCallback<Array<InputMethodSubtype>>): void 861 862获取指定输入法应用的所有子类型。使用callback异步回调。 863 864**系统能力:** SystemCapability.MiscServices.InputMethodFramework 865 866**参数:** 867 868| 参数名 | 类型 | 必填 | 说明 | 869| -------- | -------------------------------------------------- | ---- | ---------------------- | 870| inputMethodProperty | InputMethodProperty| 是 | 子类型所属的输入法应用。 | 871| callback | AsyncCallback<Array<[InputMethodSubtype](./js-apis-inputmethod-subtype.md#inputmethodsubtype)>> | 是 | 回调函数,返回指定输入法应用的所有子类型。 | 872 873**错误码:** 874 875以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 876 877| 错误码ID | 错误信息 | 878| -------- | -------------------------------------- | 879| 12800001 | Package manager error. | 880| 12800008 | Input method manager service error. | 881 882**示例:** 883 884```js 885let inputMethodProperty = { 886 packageName: 'com.example.kikakeyboard', 887 methodId: 'com.example.kikakeyboard', 888 name: 'com.example.kikakeyboard', 889 id: 'com.example.kikakeyboard', 890 extra:{} 891} 892try { 893 inputMethodSetting.listInputMethodSubtype(inputMethodProperty, (err,data) => { 894 if (err !== undefined) { 895 console.error('Failed to listInputMethodSubtype: ' + JSON.stringify(err)); 896 return; 897 } 898 console.log('Succeeded in listing inputMethodSubtype.'); 899 }); 900} catch (err) { 901 console.error('Failed to listInputMethodSubtype: ' + JSON.stringify(err)); 902} 903``` 904 905### listInputMethodSubtype<sup>9+</sup> 906 907listInputMethodSubtype(inputMethodProperty: InputMethodProperty): Promise<Array<InputMethodSubtype>> 908 909获取指定输入法应用的所有子类型。使用promise异步回调。 910 911**系统能力:** SystemCapability.MiscServices.InputMethodFramework 912 913**参数:** 914 915| 参数名 | 类型 | 必填 | 说明 | 916| -------- | -------------------------------------------------- | ---- | ---------------------- | 917| inputMethodProperty | InputMethodProperty| 是 | 子类型所属的输入法应用。 | 918 919**返回值:** 920 921| 类型 | 说明 | 922| ----------------------------------------------------------- | ---------------------- | 923| Promise<Array<[InputMethodSubtype](./js-apis-inputmethod-subtype.md#inputmethodsubtype)>> | Promise对象,返回指定输入法应用的所有子类型。 | 924 925**错误码:** 926 927以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 928 929| 错误码ID | 错误信息 | 930| -------- | -------------------------------------- | 931| 12800001 | Package manager error. | 932| 12800008 | Input method manager service error. | 933 934**示例:** 935 936```js 937let inputMethodProperty = { 938 packageName: 'com.example.kikakeyboard', 939 methodId: 'com.example.kikakeyboard', 940 name: 'com.example.kikakeyboard', 941 id: 'com.example.kikakeyboard', 942 extra:{} 943} 944try { 945 inputMethodSetting.listInputMethodSubtype(inputMethodProperty).then((data) => { 946 console.info('Succeeded in listing inputMethodSubtype.'); 947 }).catch((err) => { 948 console.error('Failed to listInputMethodSubtype: ' + JSON.stringify(err)); 949 }) 950} catch(err) { 951 console.error('Failed to listInputMethodSubtype: ' + JSON.stringify(err)); 952} 953``` 954 955### listCurrentInputMethodSubtype<sup>9+</sup> 956 957listCurrentInputMethodSubtype(callback: AsyncCallback<Array<InputMethodSubtype>>): void 958 959查询当前输入法应用的所有子类型。使用callback异步回调。 960 961**系统能力:** SystemCapability.MiscServices.InputMethodFramework 962 963**参数:** 964 965| 参数名 | 类型 | 必填 | 说明 | 966| -------- | -------------------------------------------------- | ---- | ---------------------- | 967| callback | AsyncCallback<Array<[InputMethodSubtype](./js-apis-inputmethod-subtype.md#inputmethodsubtype)>> | 是 | 回调函数,返回当前输入法应用的所有子类型。 | 968 969**错误码:** 970 971以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 972 973| 错误码ID | 错误信息 | 974| -------- | -------------------------------------- | 975| 12800001 | Package manager error. | 976| 12800008 | Input method manager service error. | 977 978**示例:** 979 980```js 981try { 982 inputMethodSetting.listCurrentInputMethodSubtype((err, data) => { 983 if (err !== undefined) { 984 console.error('Failed to listCurrentInputMethodSubtype: ' + JSON.stringify(err)); 985 return; 986 } 987 console.log('Succeeded in listing currentInputMethodSubtype.'); 988 }); 989} catch(err) { 990 console.error('Failed to listCurrentInputMethodSubtype: ' + JSON.stringify(err)); 991} 992``` 993 994### listCurrentInputMethodSubtype<sup>9+</sup> 995 996listCurrentInputMethodSubtype(): Promise<Array<InputMethodSubtype>> 997 998查询当前输入法的子类型列表。使用promise异步回调。 999 1000**系统能力:** SystemCapability.MiscServices.InputMethodFramework 1001 1002**返回值:** 1003 1004| 类型 | 说明 | 1005| ----------------------------------------------------------- | ---------------------- | 1006| Promise<Array<[InputMethodSubtype](./js-apis-inputmethod-subtype.md#inputmethodsubtype)>> | Promise对象,返回当前输入法应用的所有子类型。 | 1007 1008**错误码:** 1009 1010以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 1011 1012| 错误码ID | 错误信息 | 1013| -------- | -------------------------------------- | 1014| 12800001 | Package manager error. | 1015| 12800008 | Input method manager service error. | 1016 1017**示例:** 1018 1019```js 1020try { 1021 inputMethodSetting.listCurrentInputMethodSubtype().then((data) => { 1022 console.info('Succeeded in listing currentInputMethodSubtype.'); 1023 }).catch((err) => { 1024 console.error('Failed to listCurrentInputMethodSubtype: ' + JSON.stringify(err)); 1025 }) 1026} catch(err) { 1027 console.error('Failed to listCurrentInputMethodSubtype: ' + JSON.stringify(err)); 1028} 1029``` 1030 1031### getInputMethods<sup>9+</sup> 1032 1033getInputMethods(enable: boolean, callback: AsyncCallback<Array<InputMethodProperty>>): void 1034 1035获取已激活/未激活输入法列表。参数enable取true,返回已激活输入法列表,取false返回未激活输入法列表。已激活/未激活输入法的确切功能当前版本未支持。当前版本中,已激活输入法包括当前使用的输入法,未激活输入法包括当前输入法以外的其他已安装的输入法。使用callback异步回调。 1036 1037**系统能力:** SystemCapability.MiscServices.InputMethodFramework 1038 1039**参数:** 1040 1041| 参数名 | 类型 | 必填 | 说明 | 1042| -------- | --------------------------------------------------- | ---- | ----------------------------- | 1043| enable | boolean | 是 | 指定返回已激活/未激活。 | 1044| callback | AsyncCallback<Array<[InputMethodProperty](#inputmethodproperty8)>> | 是 | 回调函数,返回已激活/未激活输入法列表。 | 1045 1046**错误码:** 1047 1048以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 1049 1050| 错误码ID | 错误信息 | 1051| -------- | -------------------------------------- | 1052| 12800001 | Package manager error. | 1053| 12800008 | Input method manager service error. | 1054 1055**示例:** 1056 1057```js 1058try { 1059 inputMethodSetting.getInputMethods(true, (err,data) => { 1060 if (err !== undefined) { 1061 console.error('Failed to getInputMethods: ' + JSON.stringify(err)); 1062 return; 1063 } 1064 console.log('Succeeded in getting inputMethods.'); 1065 }); 1066} catch (err) { 1067 console.error('Failed to getInputMethods: ' + JSON.stringify(err)); 1068} 1069``` 1070 1071### getInputMethods<sup>9+</sup> 1072 1073getInputMethods(enable: boolean): Promise<Array<InputMethodProperty>> 1074 1075获取已激活/未激活输入法列表。参数enable取true,返回已激活输入法列表,取false返回未激活输入法列表。已激活/未激活输入法的确切功能当前版本未支持。当前版本中,已激活输入法包括当前使用的输入法,未激活输入法包括当前输入法以外的其他已安装的输入法。使用promise异步回调。 1076 1077**系统能力:** SystemCapability.MiscServices.InputMethodFramework 1078 1079**参数:** 1080 1081| 参数名 | 类型 | 必填 | 说明 | 1082| ------ | ------- | ---- | ----------------------- | 1083| enable | boolean | 是 | 指定返回已激活/未激活。 | 1084 1085**错误码:** 1086 1087以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 1088 1089| 错误码ID | 错误信息 | 1090| -------- | -------------------------------------- | 1091| 12800001 | Package manager error. | 1092| 12800008 | Input method manager service error. | 1093 1094**返回值:** 1095 1096| 类型 | 说明 | 1097| ------------------------------------------------------------ | ----------------------------- | 1098| Promise<Array<[InputMethodProperty](#inputmethodproperty8)>> | Promise对象,返回已激活/未激活输入法列表。 | 1099 1100**示例:** 1101 1102```js 1103try { 1104 inputMethodSetting.getInputMethods(true).then((data) => { 1105 console.info('Succeeded in getting inputMethods.'); 1106 }).catch((err) => { 1107 console.error('Failed to getInputMethods: ' + JSON.stringify(err)); 1108 }) 1109} catch(err) { 1110 console.error('Failed to getInputMethods: ' + JSON.stringify(err)); 1111} 1112``` 1113 1114### showOptionalInputMethods<sup>9+</sup> 1115 1116showOptionalInputMethods(callback: AsyncCallback<boolean>): void 1117 1118显示输入法选择对话框。使用callback异步回调。 1119 1120**系统能力:** SystemCapability.MiscServices.InputMethodFramework 1121 1122**参数:** 1123 1124| 参数名 | 类型 | 必填 | 说明 | 1125| -------- | -------- | -------- | -------- | 1126| callback | AsyncCallback<boolean> | 是 | 回调函数。当输入法选择对话框显示成功,err为undefined,data为true;否则为错误对象。 | 1127 1128**错误码:** 1129 1130以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 1131 1132| 错误码ID | 错误信息 | 1133| -------- | -------------------------------------- | 1134| 12800008 | Input method manager service error. | 1135 1136**示例:** 1137 1138```js 1139try { 1140 inputMethodSetting.showOptionalInputMethods((err, data) => { 1141 if (err !== undefined) { 1142 console.error('Failed to showOptionalInputMethods: ' + JSON.stringify(err)); 1143 return; 1144 } 1145 console.info('Succeeded in showing optionalInputMethods.'); 1146 }); 1147} catch (err) { 1148 console.error('Failed to showOptionalInputMethods: ' + JSON.stringify(err)); 1149} 1150``` 1151 1152### showOptionalInputMethods<sup>9+</sup> 1153 1154showOptionalInputMethods(): Promise<boolean> 1155 1156显示输入法选择对话框。使用promise异步回调。 1157 1158**系统能力:** SystemCapability.MiscServices.InputMethodFramework 1159 1160**返回值:** 1161 1162| 类型 | 说明 | 1163| -------- | -------- | 1164| Promise<boolean> | Promise对象。返回true表示输入法选择对话框显示成功;返回false表示输入法选择对话框显示失败。 | 1165 1166**错误码:** 1167 1168以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errorcode-inputmethod-framework.md)。 1169 1170| 错误码ID | 错误信息 | 1171| -------- | -------------------------------------- | 1172| 12800008 | Input method manager service error. | 1173 1174**示例:** 1175 1176```js 1177inputMethodSetting.showOptionalInputMethods().then((data) => { 1178 console.info('Succeeded in showing optionalInputMethods.'); 1179}).catch((err) => { 1180 console.error('Failed to showOptionalInputMethods: ' + JSON.stringify(err)); 1181}) 1182``` 1183 1184### listInputMethod<sup>(deprecated)</sup> 1185 1186listInputMethod(callback: AsyncCallback<Array<InputMethodProperty>>): void 1187 1188查询已安装的输入法列表。使用callback异步回调。 1189 1190> **说明:** 1191> 1192> 从API version 8开始支持,从API version 9开始废弃, 建议使用[getInputMethods](#getinputmethods9)替代。 1193 1194**系统能力:** SystemCapability.MiscServices.InputMethodFramework 1195 1196**参数:** 1197 1198| 参数名 | 类型 | 必填 | 说明 | 1199| -------- | -------------------------------------------------- | ---- | ---------------------- | 1200| callback | AsyncCallback<Array<[InputMethodProperty](#inputmethodproperty8)>> | 是 | 回调函数,返回已安装的输入法列表。 | 1201 1202**示例:** 1203 1204```js 1205inputMethodSetting.listInputMethod((err,data) => { 1206 if (err !== undefined) { 1207 console.error('Failed to listInputMethod: ' + JSON.stringify(err)); 1208 return; 1209 } 1210 console.log('Succeeded in listing inputMethod.'); 1211 }); 1212``` 1213 1214### listInputMethod<sup>(deprecated)</sup> 1215 1216listInputMethod(): Promise<Array<InputMethodProperty>> 1217 1218查询已安装的输入法列表。使用promise异步回调。 1219 1220> **说明:** 1221> 1222> 从API version 8开始支持,从API version 9开始废弃, 建议使用[getInputMethods](#getinputmethods9-1)替代。 1223 1224**系统能力:** SystemCapability.MiscServices.InputMethodFramework 1225 1226**返回值:** 1227 1228| 类型 | 说明 | 1229| ----------------------------------------------------------- | ---------------------- | 1230| Promise<Array<[InputMethodProperty](#inputmethodproperty8)>> | Promise对象,返回已安装输入法列表。 | 1231 1232**示例:** 1233 1234```js 1235inputMethodSetting.listInputMethod().then((data) => { 1236 console.info('Succeeded in listing inputMethod.'); 1237}).catch((err) => { 1238 console.error('Failed to listInputMethod: ' + JSON.stringify(err)); 1239}) 1240``` 1241 1242### displayOptionalInputMethod<sup>(deprecated)</sup> 1243 1244displayOptionalInputMethod(callback: AsyncCallback<void>): void 1245 1246显示输入法选择对话框。使用callback异步回调。 1247 1248> **说明:** 1249> 1250> 从API version 8开始支持,从API version 9开始废弃, 建议使用[showOptionalInputMethods()](#showoptionalinputmethods9)替代。 1251 1252**系统能力:** SystemCapability.MiscServices.InputMethodFramework 1253 1254**参数:** 1255 1256| 参数名 | 类型 | 必填 | 说明 | 1257| -------- | -------- | -------- | -------- | 1258| callback | AsyncCallback<void> | 是 | 回调函数。当输入法选择对话框显示成功。err为undefined,否则为错误对象。 | 1259 1260**示例:** 1261 1262```js 1263inputMethodSetting.displayOptionalInputMethod((err) => { 1264 if (err !== undefined) { 1265 console.error('Failed to displayOptionalInputMethod: ' + JSON.stringify(err)); 1266 return; 1267 } 1268 console.info('Succeeded in displaying optionalInputMethod.'); 1269}); 1270``` 1271 1272### displayOptionalInputMethod<sup>(deprecated)</sup> 1273 1274displayOptionalInputMethod(): Promise<void> 1275 1276显示输入法选择对话框。使用promise异步回调。 1277 1278> **说明:** 1279> 1280> 从API version 8开始支持,从API version 9开始废弃, 建议使用[showOptionalInputMethods()](#showoptionalinputmethods9-1)替代。 1281 1282**系统能力:** SystemCapability.MiscServices.InputMethodFramework 1283 1284**返回值:** 1285 1286| 类型 | 说明 | 1287| -------- | -------- | 1288| Promise<void> | 无返回结果的Promise对象。 | 1289 1290**示例:** 1291 1292```js 1293inputMethodSetting.displayOptionalInputMethod().then(() => { 1294 console.info('Succeeded in displaying optionalInputMethod.'); 1295}).catch((err) => { 1296 console.error('Failed to displayOptionalInputMethod: ' + JSON.stringify(err)); 1297}) 1298``` 1299