# 输入法框架
本模块提供对输入法框架的管理,包括隐藏输入法、查询已安装的输入法列表和显示输入法选择对话框。
> ![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 | 是 | 否 | 包名。从API8开始支持,从API9开始废弃,建议使用name替代 |
| methodId(deprecated) | string | 是 | 否 | Ability名。从API8开始支持,从API9开始废弃,建议使用id替代 |
| 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, data) => {
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((data) => {
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);
})
```