# 输入法框架 本模块提供对输入法框架的管理,包括隐藏输入法、查询已安装的输入法列表和显示输入法选择对话框。 > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > > 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 ## 导入模块 ``` import inputMethod from '@ohos.inputmethod'; ``` ## inputMethod8+ 常量值。 **系统能力**:以下各项对应的系统能力均为SystemCapability.MiscServices.InputMethodFramework | 名称 | 参数类型 | 可读 | 可写 | 说明 | | -------- | -------- | -------- | -------- | -------- | | MAX_TYPE_NUM | number | 是 | 否 | 可支持的最大输入法个数。 | | EXCEPTION_PERMISSION9+ | number | 是 | 否 | 错误码。详见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md),下同 | | EXCEPTION_PARAMCHECK9+ | number | 是 | 否 | 错误码。 | | EXCEPTION_UNSUPPORTED9+ | number | 是 | 否 | 错误码。 | | EXCEPTION_PACKAGEMANAGER9+ | number | 是 | 否 | 错误码。 | | EXCEPTION_IMENGINE9+ | number | 是 | 否 | 错误码。 | | EXCEPTION_IMCLIENT9+ | number | 是 | 否 | 错误码。 | | EXCEPTION_KEYEVENT9+ | number | 是 | 否 | 错误码。 | | EXCEPTION_CONFPERSIST9+ | number | 是 | 否 | 错误码。 | | EXCEPTION_CONTROLLER9+ | number | 是 | 否 | 错误码。 | | EXCEPTION_SETTINGS9+ | number | 是 | 否 | 错误码。 | | EXCEPTION_IMMS9+ | number | 是 | 否 | 错误码。 | | EXCEPTION_OTHERS9+ | number | 是 | 否 | 错误码。 | ## InputMethodProperty8+ 输入法应用属性。 **系统能力**:以下各项对应的系统能力均为SystemCapability.MiscServices.InputMethodFramework | 名称 | 参数类型 | 可读 | 可写 | 说明 | | -------- | -------- | -------- | -------- | -------- | | packageName(deprecated) | string | 是 | 否 | 包名。 | | methodId(deprecated) | string | 是 | 否 | Ability名。 | | name9+ | string | 是 | 否 | 包名。 | | id9+ | string | 是 | 否 | Ability名。 | | label9+ | string | 是 | 否 | 输入法标签,非必填项。| | icon9+ | string | 是 | 否 | 输入法图标,非必填项。 | | iconId9+ | number | 是 | 否 | 输入法图标id,非必填项。 | | extra9+ | object | 是 | 否 | 输入法其他信息。 | ## inputMethod.getController9+ getController(): InputMethodController 获取客户端实例[InputMethodController](#inputmethodcontroller)。 **系统能力**:SystemCapability.MiscServices.InputMethodFramework **返回值:** | 类型 | 说明 | | ----------------------------------------------- | ------------------------ | | [InputMethodController](#inputmethodcontroller) | 回调返回当前客户端实例。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | ------------------------------ | | 12800006 | Input method controller error. | **示例:** ```js let InputMethodController = inputMethod.getController(); ``` ## inputMethod.getSetting9+ getSetting(): InputMethodSetting 获取客户端设置实例[InputMethodSetting](#inputmethodsetting8)。 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **返回值:** | 类型 | 说明 | | ----------------------------------------- | ---------------------------- | | [InputMethodSetting](#inputmethodsetting8) | 回调返回当前客户端设置实例。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800007 | Input method settings extension error. | **示例:** ```js let InputMethodSetting = inputMethod.getSetting(); ``` ## inputMethod.switchInputMethod9+ switchInputMethod(target: InputMethodProperty, callback: AsyncCallback<boolean>): void 切换输入法。使用callback异步回调。 **需要权限**: ohos.permission.CONNECT_IME_ABILITY **系统能力**:SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | target | [InputMethodProperty](#inputmethodproperty8) | 是 | 传入要切换的目标输入法。 | | callback | AsyncCallback<boolean> | 是 | 回调函数。当输入法切换成功,err为undefined,data为true;否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800005 | Configuration persisting error. | | 12800008 | Input method settings extension error. | **示例:** ```js try{ inputMethod.switchInputMethod({packageName:'com.example.kikakeyboard', methodId:'com.example.kikakeyboard'}, (err, result) => { if (err) { console.error('switchInputMethod err: ' + JSON.stringify(err)); return; } if (result) { console.info('Success to switchInputMethod.(callback)'); } else { console.error('Failed to switchInputMethod.(callback)'); } }); } catch(err) { console.error('switchInputMethod err: ' + JSON.stringify(err)); } ``` ## inputMethod.switchInputMethod9+ switchInputMethod(target: InputMethodProperty): Promise<boolean> 切换输入法。使用promise异步回调。 **需要权限**: ohos.permission.CONNECT_IME_ABILITY **系统能力**: SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | |target | [InputmethodProperty](#inputmethodproperty8)| 是 | 传入要切换的目标输入法。 | **返回值:** | 类型 | 说明 | | ----------------------------------------- | ---------------------------- | | Promise\ | Promise对象。返回true表示切换输入法成功;返回false表示切换输入法失败。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800005 | Configuration persisting error. | | 12800008 | Input method settings extension error. | **示例:** ```js try { inputMethod.switchInputMethod({packageName:'com.example.kikakeyboard', methodId:'com.example.kikakeyboard'}).then((result) => { if (result) { console.info('Success to switchInputMethod.'); } else { console.error('Failed to switchInputMethod.'); } }).catch((err) => { console.error('switchInputMethod err: ' + JSON.stringify(err)); }) } catch(err) { console.error('switchInputMethod err: ' + JSON.stringify(err)); } ``` ## inputMethod.getCurrentInputMethod9+ getCurrentInputMethod(): InputMethodProperty 获取当前输入法扩展应用,提供同步接口,返回当前输入法属性。 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **返回值:** | 类型 | 说明 | | -------------------------------------------- | ------------------------ | | [InputmethodProperty](#inputmethodproperty8) | 返回当前输入法属性对象。 | **示例:** ```js let currentIme = inputMethod.getCurrentInputMethod(); ``` ## inputMethod.switchCurrentInputMethodSubtype9+ switchCurrentInputMethodSubtype(target: InputMethodSubtype, callback: AsyncCallback\): void 在当前输入法应用内切换子类型。使用callback异步回调。 **需要权限**: ohos.permission.CONNECT_IME_ABILITY **系统能力**: SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | target | [InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype)| 是 | 传入要切换的目标输入法子类型。 | | callback | AsyncCallback<boolean> | 是 | 回调函数。当输入法子类型切换成功,err为undefined,data为true;否则为错误对象。| **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800005 | Configuration persisting error. | | 12800008 | Input method settings extension error. | **示例:** ```js let inputMethodSubtype = { id: "com.example.kikainput", label: "ServiceExtAbility" } try { inputMethod.switchCurrentInputMethodSubtype(inputMethodSubtype, (err, result) => { if (err) { console.error('switchCurrentInputMethodSubtype err: ' + JSON.stringify(err)); return; } if (result) { console.info('Success to switchCurrentInputMethodSubtype.(callback)'); } else { console.error('Failed to switchCurrentInputMethodSubtype.(callback)'); } }); } catch(err) { console.error('switchCurrentInputMethodSubtype err: ' + JSON.stringify(err)); } ``` ## inputMethod.switchCurrentInputMethodSubtype9+ switchCurrentInputMethodSubtype(target: InputMethodSubtype): Promise<boolean> 在当前输入法应用内切换子类型。使用promise异步回调。 **需要权限**: ohos.permission.CONNECT_IME_ABILITY **系统能力**: SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | |target | [InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype)| 是 | 传入要切换的目标输入法子类型。 | **返回值:** | 类型 | 说明 | | ----------------------------------------- | ---------------------------- | | Promise\ | Promise对象。返回true表示在当前输入法应用内切换子类型成功;返回false表示在当前输入法应用内切换子类型失败。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800005 | Configuration persisting error. | | 12800008 | Input method settings extension error. | **示例:** ```js let inputMethodSubtype = { id: "com.example.kikainput", label: "ServiceExtAbility" } try { inputMethod.switchCurrentInputMethodSubtype(inputMethodSubtype).then((result) => { if (result) { console.info('Success to switchCurrentInputMethodSubtype.'); } else { console.error('Failed to switchCurrentInputMethodSubtype.'); } }).catch((err) => { console.error('switchCurrentInputMethodSubtype err: ' + JSON.stringify(err)); }) } catch(err) { console.error('switchCurrentInputMethodSubtype err: ' + JSON.stringify(err)); } ``` ## inputMethod.getCurrentInputMethodSubtype9+ getCurrentInputMethodSubtype(): InputMethodSubtype 获取当前输入法子类型。 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **返回值:** | 类型 | 说明 | | -------------------------------------------- | ------------------------ | | [InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype) | 返回当前输入法子类型对象。 | **示例:** ```js let currentImeSubType = inputMethod.getCurrentInputMethodSubtype(); ``` ## inputMethod.switchCurrentInputMethodAndSubtype9+ switchCurrentInputMethodAndSubtype(inputMethodProperty: InputMethodProperty, inputMethodSubtype: InputMethodSubtype, callback: AsyncCallback\): void 切换至指定输入法应用的指定子类型,用于跨输入法应用切换子类型。使用callback异步回调。 **需要权限**: ohos.permission.CONNECT_IME_ABILITY **系统能力**: SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | |inputMethodProperty | [InputMethodProperty](#inputmethodproperty8)| 是 | 传入要切换的目标输入法。 | |inputMethodSubtype | [InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype)| 是 | 传入要切换的目标输入法子类型。 | | callback | AsyncCallback<boolean> | 是 | 回调函数。当输入法和子类型切换成功,err为undefined,data为获取到的切换子类型结果true;否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800005 | Configuration persisting error. | | 12800008 | Input method settings extension error. | **示例:** ```js let inputMethodProperty = { packageName:"com.example.kikakeyboard", methodId:"ServiceExtAbility" } let inputMethodSubProperty = { id: "com.example.kikainput", label: "ServiceExtAbility" } try { inputMethod.switchCurrentInputMethodAndSubtype(inputMethodProperty, inputMethodSubProperty, (err,result) => { if (err) { console.error('switchCurrentInputMethodAndSubtype err: ' + JSON.stringify(err)); return; } if (result) { console.info('Success to switchCurrentInputMethodAndSubtype.(callback)'); } else { console.error('Failed to switchCurrentInputMethodAndSubtype.(callback)'); } }); } catch (err) { console.error('switchCurrentInputMethodAndSubtype err: ' + JSON.stringify(err)); } ``` ## inputMethod.switchCurrentInputMethodAndSubtype9+ switchCurrentInputMethodAndSubtype(inputMethodProperty: InputMethodProperty, inputMethodSubtype: InputMethodSubtype): Promise<boolean> 切换至指定输入法应用的指定子类型,用于跨输入法应用切换子类型。使用promise异步回调。 **需要权限**: ohos.permission.CONNECT_IME_ABILITY **系统能力**: SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | |inputMethodProperty | [InputMethodProperty](#inputmethodproperty8)| 是 | 传入要切换的目标输入法。 | |inputMethodSubtype | [InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype)| 是 | 传入要切换的目标输入法子类型。 | **返回值:** | 类型 | 说明 | | ----------------------------------------- | ---------------------------- | | Promise\ | Promise对象。返回true表示切换至指定输入法应用的指定子类型成功;返回false表示切换至指定输入法应用的指定子类型失败。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800005 | Configuration persisting error. | | 12800008 | Input method settings extension error. | **示例:** ```js let inputMethodProperty = { name: "com.example.kikakeyboard", id: "ServiceExtAbility" } let inputMethodSubProperty = { id: "com.example.kikakeyboard", name: "", locale: "", label: "ServiceExtAbility", language: "", extra : {} } try { inputMethod.switchCurrentInputMethodAndSubtype(property, subType).then((result) => { if (result) { console.info('Success to switchCurrentInputMethodAndSubtype.'); } else { console.error('Failed to switchCurrentInputMethodAndSubtype.'); } }).catch((err) => { console.error('switchCurrentInputMethodAndSubtype err: ' + err); }) } catch(err) { console.error('switchCurrentInputMethodAndSubtype err: ' + err); } ``` ## inputMethod.getInputMethodController(deprecated) getInputMethodController(): InputMethodController 获取客户端实例[InputMethodController](#inputmethodcontroller)。 > **说明:** > 从API version 6开始支持,从API version 9开始废弃, 建议使用[getController()](#inputmethodgetcontroller9)替代 **系统能力**:SystemCapability.MiscServices.InputMethodFramework **返回值:** | 类型 | 说明 | | ----------------------------------------------- | ------------------------ | | [InputMethodController](#inputmethodcontroller) | 回调返回当前客户端实例。 | **示例:** ```js let InputMethodController = inputMethod.getInputMethodController(); ``` ## inputMethod.getInputMethodSetting(deprecated) getInputMethodSetting(): InputMethodSetting 获取客户端设置实例[InputMethodSetting](#inputmethodsetting8)。 > **说明:** > 从API version 6开始支持,从API version 9开始废弃, 建议使用[getSetting()](#inputmethodgetsetting9)替代 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **返回值:** | 类型 | 说明 | | ----------------------------------------- | ---------------------------- | | [InputMethodSetting](#inputmethodsetting8) | 回调返回当前客户端设置实例。 | **示例:** ```js let InputMethodSetting = inputMethod.getInputMethodSetting(); ``` ## InputMethodController 下列API示例中都需使用[getController](##inputmethodgetcontroller9)回调获取到InputMethodController实例,再通过此实例调用对应方法。 ### stopInputSession9+ stopInputSession(callback: AsyncCallback<boolean>): void 隐藏输入法。使用callback异步回调。 **系统能力**:SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | callback | AsyncCallback<boolean> | 是 | 回调函数。当输入法隐藏成功,err为undefined,data为true;否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800003 | Input method client error. | | 12800008 | Input method settings extension error. | **示例:** ```js try { InputMethodController.stopInputSession((error, result) => { if (error) { console.error('stopInputSession err: ' + JSON.stringify(error)); return; } if (result) { console.info('Success to stopInputSession.(callback)'); } else { console.error('Failed to stopInputSession.(callback)'); } }); } catch(error) { console.error('stopInputSession err: ' + JSON.stringify(error)); } ``` ### stopInputSession9+ stopInputSession(): Promise<boolean> 隐藏输入法。使用promise异步回调。 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise<boolean> | Promise对象。返回true表示输入法隐藏成功;返回false表示输入法隐藏失败。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800003 | Input method client error. | | 12800008 | Input method settings extension error. | **示例:** ```js try { InputMethodController.stopInputSession().then((result) => { if (result) { console.info('Success to stopInputSession.'); } else { console.error('Failed to stopInputSession.'); } }).catch((err) => { console.error('stopInputSession err: ' + JSON.stringify(err)); }) } catch(err) { console.error('stopInputSession err: ' + JSON.stringify(err)); } ``` ### showSoftKeyboard9+ showSoftKeyboard(callback: AsyncCallback<void>): void 显示软键盘。使用callback异步回调。 **需要权限**: ohos.permission.CONNECT_IME_ABILITY **系统能力:** SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 参数类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ---------- | | callback | AsyncCallback<void> | 是 | 回调函数。当软键盘显示成功。err为undefined,否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800003 | Input method client error. | | 12800008 | Input method settings extension error. | **示例:** ```js InputMethodController.showSoftKeyboard((err) => { if (err === undefined) { console.info('showSoftKeyboard success'); } else { console.error('showSoftKeyboard failed because : ' + JSON.stringify(err)); } }) ``` ### showSoftKeyboard9+ showSoftKeyboard(): Promise<void> 显示软键盘,使用Promise异步回调。 **需要权限**: ohos.permission.CONNECT_IME_ABILITY **系统能力:** SystemCapability.MiscServices.InputMethodFramework **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | Promise对象。无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800003 | Input method client error. | | 12800008 | Input method settings extension error. | **示例:** ```js InputMethodController.showSoftKeyboard().then(async (err) => { console.log('showSoftKeyboard success'); }).catch((err) => { console.error('showSoftKeyboard err: ' + JSON.stringify(err)); }); ``` ### hideSoftKeyboard9+ hideSoftKeyboard(callback: AsyncCallback<void>): void 隐藏软键盘。使用callback异步回调。 **需要权限**: ohos.permission.CONNECT_IME_ABILITY **系统能力:** SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 参数类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | ---------- | | callback | AsyncCallback<void> | 是 | 回调函数。当软键盘隐藏成功。err为undefined,否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800003 | Input method client error. | | 12800008 | Input method settings extension error. | **示例:** ```js InputMethodController.hideSoftKeyboard((err) => { if (err === undefined) { console.info('hideSoftKeyboard success'); } else { console.error('hideSoftKeyboard failed because : ' + JSON.stringify(err)); } }) ``` ### hideSoftKeyboard9+ hideSoftKeyboard(): Promise<void> 隐藏软键盘,使用Promise异步回调。参数个数为0,否则抛出异常。 **需要权限**: ohos.permission.CONNECT_IME_ABILITY **系统能力:** SystemCapability.MiscServices.InputMethodFramework **返回值:** | 类型 | 说明 | | ------------------- | ------------------------- | | Promise<void> | Promise对象。无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800003 | Input method client error. | | 12800008 | Input method settings extension error. | **示例:** ```js InputMethodController.hideSoftKeyboard().then(async (err) => { console.log('hideSoftKeyboard success'); }).catch((err) => { console.error('hideSoftKeyboard err: ' + JSON.stringify(err)); }); ``` ### stopInput(deprecated) stopInput(callback: AsyncCallback<boolean>): void 隐藏输入法。使用callback异步回调。 > **说明:** > 从API version 6开始支持,从API version 9开始废弃, 建议使用[stopInputSession()](#stopinputsession9)替代 **系统能力**:SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | callback | AsyncCallback<boolean> | 是 | 回调函数。当输入法隐藏成功,err为undefined,data为true;否则为错误对象。 | **示例:** ```js InputMethodController.stopInput((error, result) => { if (error) { console.error('failed to stopInput because: ' + JSON.stringify(error)); return; } if (result) { console.info('Success to stopInput.(callback)'); } else { console.error('Failed to stopInput.(callback)'); } }); ``` ### stopInput(deprecated) stopInput(): Promise<boolean> 隐藏输入法。使用promise异步回调。 > **说明:** > 从API version 6开始支持,从API version 9开始废弃, 建议使用[stopInputSession()](#stopinputsession9)替代 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise<boolean> | Promise对象。返回true表示输入法隐藏成功;返回false表示输入法隐藏失败。 | **示例:** ```js InputMethodController.stopInput().then((result) => { if (result) { console.info('Success to stopInput.'); } else { console.error('Failed to stopInput.'); } }).catch((err) => { console.error('stopInput err: ' + err); }) ``` ## InputMethodSetting8+ 下列API示例中都需使用[getSetting](#inputmethodgetsetting9)回调获取到InputMethodSetting实例,再通过此实例调用对应方法。 ### on('imeChange')9+ on(type: 'imeChange', callback: (inputMethodProperty: InputMethodProperty, inputMethodSubtype: InputMethodSubtype) => void): void 订阅输入法及子类型变化监听事件。使用callback异步回调。 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------------- | ---- | ------------------------------------------------------------ | | type | string | 是 | 设置监听类型。
-type为‘imeChange’时表示订阅输入法及子类型变化监听事件。 | | callback | [InputMethodProperty](#inputmethodproperty8), [InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype) | 是 | 回调函数,返回输入法属性对象及输入法子类型对象。 | **示例:** ```js let InputMethodSetting = inputMethod.getSetting(); InputMethodSetting.on('imeChange', (inputMethodProperty, inputMethodSubtype) => { InputMethodProperty = inputMethodProperty; InputMethodSubtype = inputMethodSubtype; }); ``` ### off('imeChange')9+ off(type: 'imeChange', callback?: (inputMethodProperty: InputMethodProperty, inputMethodSubtype: InputMethodSubtype) => void): void 取消订阅输入法及子类型变化监听事件。使用callback异步回调。 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------------- | ---- | ------------------------------------------------------------ | | type | string | 是 | 设置监听类型。
-type为‘imeChange’时表示取消订阅输入法及子类型变化监听事件。 | | callback | [InputMethodProperty](#inputmethodproperty8), [InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype) | 否 | 回调函数,返回取消订阅的输入法属性对象及输入法子类型对象。 | **示例:** ```js let InputMethodSetting = inputMethod.getSetting(); InputMethodSetting.off('imeChange'); ``` ### listInputMethodSubtype9+ listInputMethodSubtype(inputMethodProperty: InputMethodProperty, callback: AsyncCallback<Array<InputMethodSubtype>>): void 获取指定输入法应用的所有子类型。使用callback异步回调。 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------------------- | ---- | ---------------------- | | inputMethodProperty | InputMethodProperty| 是 | 指定获取子类型所属的输入法应用 | callback | Array<[InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype)> | 是 | 回调函数,返回指定输入法应用的所有子类型。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800001 | Package manager error. | | 12800008 | Input method settings extension error. | **示例:** ```js let inputMethodProperty = { packageName:'com.example.kikakeyboard', methodId:'com.example.kikakeyboard' } try { InputMethodSetting.listInputMethodSubtype(inputMethodProperty, (err,data) => { if (err) { console.error('listInputMethodSubtype failed: ' + JSON.stringify(err)); return; } console.log('listInputMethodSubtype success'); }); } catch (err) { console.error('listInputMethodSubtype failed: ' + JSON.stringify(err)); } ``` ### listInputMethodSubtype9+ listInputMethodSubtype(inputMethodProperty: InputMethodProperty): Promise<Array<InputMethodSubtype>> 获取指定输入法应用的所有子类型。使用promise异步回调。 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------------------- | ---- | ---------------------- | | inputMethodProperty | InputMethodProperty| 是 | 指定获取子类型所属的输入法应用 **返回值:** | 类型 | 说明 | | ----------------------------------------------------------- | ---------------------- | | Promise> | Promise对象,返回已安装输入法子类型列表。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800001 | Package manager error. | | 12800008 | Input method settings extension error. | **示例:** ```js let inputMethodSubProperty = { id: "com.example.kikainput", label: "ServiceExtAbility" } try { InputMethodSetting.listInputMethodSubtype(inputMethodSubProperty).then((data) => { console.info('listInputMethodSubtype success'); }).catch((err) => { console.error('listInputMethodSubtype err: ' + JSON.stringify(err)); }) } catch(err) { console.error('listInputMethodSubtype err: ' + JSON.stringify(err)); } ``` ### listCurrentInputMethodSubtype9+ listCurrentInputMethodSubtype(callback: AsyncCallback<Array<InputMethodSubtype>>): void 查询当前输入法应用的所有子类型。使用callback异步回调。 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------------------- | ---- | ---------------------- | | callback | Array<[InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype)> | 是 | 回调函数,返回当前输入法应用的所有子类型。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800001 | Package manager error. | | 12800008 | Input method settings extension error. | **示例:** ```js try { InputMethodSetting.listCurrentInputMethodSubtype((err, data) => { if (err) { console.error('listCurrentInputMethodSubtype failed: ' + JSON.stringify(err)); return; } console.log('listCurrentInputMethodSubtype success'); }); } catch(err) { console.error('listCurrentInputMethodSubtype err: ' + JSON.stringify(err)); } ``` ### listCurrentInputMethodSubtype9+ listCurrentInputMethodSubtype(): Promise<Array<InputMethodSubtype>> 查询当前输入法的子类型列表。使用promise异步回调。 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **返回值:** | 类型 | 说明 | | ----------------------------------------------------------- | ---------------------- | | Promise> | Promise对象,返回当前输入法的子类型列表。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800001 | Package manager error. | | 12800008 | Input method settings extension error. | **示例:** ```js try { InputMethodSetting.listCurrentInputMethodSubtype().then((data) => { console.info('listCurrentInputMethodSubtype success'); }).catch((err) => { console.error('listCurrentInputMethodSubtype err: ' + err); }) } catch(err) { console.error('listCurrentInputMethodSubtype err: ' + JSON.stringify(err)); } ``` ### getInputMethods9+ getInputMethods(enable: boolean, callback: AsyncCallback<Array<InputMethodProperty>>): void 获取已激活/未激活输入法列表。参数enable取true,返回已激活输入法列表,取false返回未激活输入法列表。使用callback异步回调。 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------------------------------------- | ---- | ----------------------------- | | enable | boolean | 是 | 指定返回已激活/未激活。 | | callback | Array<[InputMethodProperty](#inputmethodproperty8)> | 是 | 回调函数,返回已激活/未激活输入法列表。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800001 | Package manager error. | | 12800008 | Input method settings extension error. | **示例:** ```js try { InputMethodSetting.getInputMethods(true, (err,data) => { if (err) { console.error('getInputMethods failed: ' + JSON.stringify(err)); return; } console.log('getInputMethods success'); }); } catch (err) { console.error('getInputMethods failed: ' + JSON.stringify(err)); } ``` ### getInputMethods9+ getInputMethods(enable: boolean): Promise<Array<InputMethodProperty>> 获取已激活/未激活输入法列表。参数enable取true返回已激活输入法列表,取false返回未激活输入法列表。使用promise异步回调。 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | ------- | ---- | ----------------------- | | enable | boolean | 是 | 指定返回已激活/未激活。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800001 | Package manager error. | | 12800008 | Input method settings extension error. | **返回值:** | 类型 | 说明 | | ------------------------------------------------------------ | ----------------------------- | | Promise> | Promise对象,返回已激活/未激活输入法列表。 | **示例:** ```js try { InputMethodSetting.getInputMethods(true).then((data) => { console.info('getInputMethods success'); }).catch((err) => { console.error('getInputMethods err: ' + JSON.stringify(err)); }) } catch(err) { console.error('getInputMethods err: ' + JSON.stringify(err)); } ``` ### showOptionalInputMethods9+ showOptionalInputMethods(callback: AsyncCallback<boolean>): void 显示输入法选择对话框。使用callback异步回调。 **需要权限**: ohos.permission.CONNECT_IME_ABILITY **系统能力**: SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | callback | AsyncCallback<boolean> | 是 | 回调函数。当输入法选择对话框显示成功,err为undefined,data为true;否则为错误对象。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800008 | Input method settings extension error. | **示例:** ```js try { InputMethodSetting.showOptionalInputMethods((err) => { if (err) { console.error('showOptionalInputMethods failed: ' + JSON.stringify(err)); return; } console.info('showOptionalInputMethods success'); }); } catch (err) { console.error('showOptionalInputMethods failed: ' + JSON.stringify(err)); } ``` ### showOptionalInputMethods9+ showOptionalInputMethods(): Promise<boolean> 显示输入法选择对话框。使用promise异步回调。 **需要权限**: ohos.permission.CONNECT_IME_ABILITY **系统能力**: SystemCapability.MiscServices.InputMethodFramework **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise<boolean> | Promise对象。返回true表示输入法选择对话框显示成功;返回false表示输入法选择对话框显示失败。 | **错误码:** 以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)。 | 错误码ID | 错误码信息 | | -------- | -------------------------------------- | | 12800008 | Input method settings extension error. | **示例:** ```js InputMethodSetting.showOptionalInputMethods().then(() => { console.info('displayOptionalInputMethod success.'); }).catch((err) => { console.error('displayOptionalInputMethod err: ' + err); }) ``` ### listInputMethod(deprecated) listInputMethod(callback: AsyncCallback<Array<InputMethodProperty>>): void 查询已安装的输入法列表。使用callback异步回调。 > **说明:** > 从API version 8开始支持,从API version 9开始废弃, 建议使用[getInputMethods](#getinputmethods9)替代 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------------------- | ---- | ---------------------- | | callback | Array<[InputMethodProperty](#inputmethodproperty8)> | 是 | 回调函数,返回已安装的输入法列表。 | **示例:** ```js InputMethodSetting.listInputMethod((err,data) => { if (err) { console.error('listInputMethod failed because: ' + JSON.stringify(err)); return; } console.log('listInputMethod success'); }); ``` ### listInputMethod(deprecated) listInputMethod(): Promise<Array<InputMethodProperty>> 查询已安装的输入法列表。使用promise异步回调。 > **说明:** > 从API version 8开始支持,从API version 9开始废弃, 建议使用[getInputMethods](#getinputmethods9-1)替代 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **返回值:** | 类型 | 说明 | | ----------------------------------------------------------- | ---------------------- | | Promise> | Promise对象,返回已安装输入法列表。 | **示例:** ```js InputMethodSetting.listInputMethod().then((data) => { console.info('listInputMethod success'); }).catch((err) => { console.error('listInputMethod err: ' + JSON.stringify(err)); }) ``` ### displayOptionalInputMethod(deprecated) displayOptionalInputMethod(callback: AsyncCallback<void>): void 显示输入法选择对话框。使用callback异步回调。 > **说明:** > 从API version 8开始支持,从API version 9开始废弃, 建议使用[showOptionalInputMethods()](#showoptionalinputmethods9)替代 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------- | -------- | -------- | | callback | AsyncCallback<void> | 是 | 回调函数。当输入法选择对话框显示成功。err为undefined,否则为错误对象。 | **示例:** ```js InputMethodSetting.displayOptionalInputMethod((err) => { if (err) { console.error('displayOptionalInputMethod failed because: ' + JSON.stringify(err)); return; } console.info('displayOptionalInputMethod success'); }); ``` ### displayOptionalInputMethod(deprecated) displayOptionalInputMethod(): Promise<void> 显示输入法选择对话框。使用promise异步回调。 > **说明:** > 从API version 8开始支持,API version 9开始废弃, 建议使用[showOptionalInputMethods()](#showoptionalinputmethods9-1)替代 **系统能力**: SystemCapability.MiscServices.InputMethodFramework **返回值:** | 类型 | 说明 | | -------- | -------- | | Promise<void> | Promise对象。无返回结果的Promise对象。 | **示例:** ```js InputMethodSetting.displayOptionalInputMethod().then(() => { console.info('displayOptionalInputMethod success'); }).catch((err) => { console.error('displayOptionalInputMethod err: ' + err); }) ```