js-apis-inputmethod.md 44.6 KB
Newer Older
Z
zhouyongfei 已提交
1 2
# 输入法框架

T
explain  
tianyu 已提交
3 4
本模块提供对输入法框架的管理,包括隐藏输入法、查询已安装的输入法列表和显示输入法选择对话框。

5
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
6
>
Z
zhouyongfei 已提交
7 8 9 10 11 12
> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。


## 导入模块

```
13
import inputMethod from '@ohos.inputmethod';
Z
zhouyongfei 已提交
14 15 16 17 18 19
```

## inputMethod<sup>8+</sup>

常量值。

20
**系统能力**:以下各项对应的系统能力均为SystemCapability.MiscServices.InputMethodFramework
Z
刷新  
zhouyongfei 已提交
21

Z
zhouyongfei 已提交
22 23
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
Z
刷新  
zhouyongfei 已提交
24
| MAX_TYPE_NUM | number | 是 | 否 | 可支持的最大输入法个数。 |
H
Hollokin 已提交
25
| EXCEPTION_PERMISSION<sup>9+</sup> | number | 是 | 否 | 错误码。详见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md),下同 |
H
Hollokin 已提交
26 27 28 29 30 31 32 33 34 35 36
| EXCEPTION_PARAMCHECK<sup>9+</sup> | number | 是 | 否 | 错误码。 |
| EXCEPTION_UNSUPPORTED<sup>9+</sup> | number | 是 | 否 | 错误码。 |
| EXCEPTION_PACKAGEMANAGER<sup>9+</sup> | number | 是 | 否 | 错误码。 |
| EXCEPTION_IMENGINE<sup>9+</sup> | number | 是 | 否 | 错误码。 |
| EXCEPTION_IMCLIENT<sup>9+</sup> | number | 是 | 否 | 错误码。 |
| EXCEPTION_KEYEVENT<sup>9+</sup> | number | 是 | 否 | 错误码。 |
| EXCEPTION_CONFPERSIST<sup>9+</sup> | number | 是 | 否 | 错误码。 |
| EXCEPTION_CONTROLLER<sup>9+</sup> | number | 是 | 否 | 错误码。 |
| EXCEPTION_SETTINGS<sup>9+</sup> | number | 是 | 否 | 错误码。 |
| EXCEPTION_IMMS<sup>9+</sup> | number | 是 | 否 | 错误码。 |
| EXCEPTION_OTHERS<sup>9+</sup> | number | 是 | 否 | 错误码。 |
Z
zhouyongfei 已提交
37

38
## InputMethodProperty<sup>8+</sup>
Z
zhouyongfei 已提交
39 40 41

输入法应用属性。

42
**系统能力**:以下各项对应的系统能力均为SystemCapability.MiscServices.InputMethodFramework
Z
刷新  
zhouyongfei 已提交
43

Z
zhouyongfei 已提交
44 45
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
H
Hollokin 已提交
46 47
| packageName<sup>(deprecated)</sup> | string | 是 | 否 | 包名。从API8开始支持,从API9开始废弃,建议使用name替代 |
| methodId<sup>(deprecated)</sup> | string | 是 | 否 | Ability名。从API8开始支持,从API9开始废弃,建议使用id替代 |
H
Hollokin 已提交
48 49 50
| name<sup>9+</sup>  | string | 是 | 否 | 包名。 |
| id<sup>9+</sup>    | string | 是 | 否 | Ability名。 |
| label<sup>9+</sup>    | string | 是 | 否 | 输入法标签,非必填项。|
H
Hollokin 已提交
51 52
| icon<sup>9+</sup>    | string | 是 | 否 | 输入法图标,非必填项。 |
| iconId<sup>9+</sup>    | number | 是 | 否 | 输入法图标id,非必填项。 |
H
Hollokin 已提交
53
| extra<sup>9+</sup>    | object | 是 | 否 | 输入法其他信息。 |
Z
zhouyongfei 已提交
54

55 56 57 58 59 60 61 62 63 64 65 66 67 68
## inputMethod.getController<sup>9+</sup>

getController(): InputMethodController

获取客户端实例[InputMethodController](#inputmethodcontroller)

**系统能力**:SystemCapability.MiscServices.InputMethodFramework

**返回值:**

| 类型                                            | 说明                     |
| ----------------------------------------------- | ------------------------ |
| [InputMethodController](#inputmethodcontroller) | 回调返回当前客户端实例。 |

H
Hollokin 已提交
69 70 71 72 73 74 75 76
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                     |
| -------- | ------------------------------ |
| 12800006 | Input method controller error. |

77 78
**示例:**

H
Hollokin 已提交
79
```js
H
Hollokin 已提交
80
let InputMethodController = inputMethod.getController();
81
```
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96

## inputMethod.getSetting<sup>9+</sup>

getSetting(): InputMethodSetting

获取客户端设置实例[InputMethodSetting](#inputmethodsetting8)

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**返回值:**

| 类型                                      | 说明                         |
| ----------------------------------------- | ---------------------------- |
| [InputMethodSetting](#inputmethodsetting8) | 回调返回当前客户端设置实例。 |

H
Hollokin 已提交
97 98 99 100 101 102 103 104
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800007 | Input method settings extension error. |

105 106
**示例:**

H
Hollokin 已提交
107
```js
H
Hollokin 已提交
108
let InputMethodSetting = inputMethod.getSetting();
109 110
```

G
gaoxiang 已提交
111
## inputMethod.switchInputMethod<sup>9+</sup>
Z
zhouyongfei 已提交
112

Z
zhaolinglan 已提交
113
switchInputMethod(target: InputMethodProperty, callback: AsyncCallback&lt;boolean&gt;): void
G
gaoxiang 已提交
114

H
Hollokin 已提交
115
切换输入法。使用callback异步回调。
116

117 118
**需要权限**: ohos.permission.CONNECT_IME_ABILITY

Z
zhaolinglan 已提交
119
**系统能力**:SystemCapability.MiscServices.InputMethodFramework
G
gaoxiang 已提交
120 121 122

**参数:**

H
Hollokin 已提交
123 124 125 126
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| target | [InputMethodProperty](#inputmethodproperty8) | 是 | 传入要切换的目标输入法。 |
| callback | AsyncCallback&lt;boolean&gt; | 是 | 回调函数。当输入法切换成功,err为undefined,data为true;否则为错误对象。 |
G
gaoxiang 已提交
127

H
Hollokin 已提交
128 129 130 131 132 133 134 135 136
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800005 | Configuration persisting error.        |
| 12800008 | Input method settings extension error. |

G
gaoxiang 已提交
137 138
**示例:**

H
Hollokin 已提交
139
```js
H
Hollokin 已提交
140 141 142 143 144 145 146 147 148 149 150 151 152
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) {
H
Hollokin 已提交
153
    console.error('switchInputMethod err: ' + JSON.stringify(err));
H
Hollokin 已提交
154
}
G
gaoxiang 已提交
155
```
G
gaoxiang 已提交
156
## inputMethod.switchInputMethod<sup>9+</sup>
Z
zhaolinglan 已提交
157
switchInputMethod(target: InputMethodProperty): Promise&lt;boolean&gt;
G
gaoxiang 已提交
158

H
Hollokin 已提交
159
切换输入法。使用promise异步回调。
G
gaoxiang 已提交
160

161 162
**需要权限**: ohos.permission.CONNECT_IME_ABILITY

Z
zhaolinglan 已提交
163
**系统能力**: SystemCapability.MiscServices.InputMethodFramework
G
gaoxiang 已提交
164

G
gaoxiang 已提交
165
**参数:**
G
gaoxiang 已提交
166 167 168

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
G
gaoxiang 已提交
169
  |target |  [InputmethodProperty](#inputmethodproperty8)| 是 | 传入要切换的目标输入法。 |
G
gaoxiang 已提交
170

G
gaoxiang 已提交
171
**返回值:**
B
bmeangel 已提交
172

G
gaoxiang 已提交
173 174
  | 类型                                      | 说明                         |
  | ----------------------------------------- | ---------------------------- |
H
Hollokin 已提交
175
  | Promise\<boolean> | Promise对象。返回true表示切换输入法成功;返回false表示切换输入法失败。 |
G
gaoxiang 已提交
176

H
Hollokin 已提交
177 178 179 180 181 182 183 184 185
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800005 | Configuration persisting error.        |
| 12800008 | Input method settings extension error. |

G
gaoxiang 已提交
186 187
**示例:**

H
Hollokin 已提交
188
```js
H
Hollokin 已提交
189 190 191
try {
    inputMethod.switchInputMethod({packageName:'com.example.kikakeyboard', methodId:'com.example.kikakeyboard'}).then((result) => {
        if (result) {
H
Hollokin 已提交
192
            console.info('Success to switchInputMethod.');
H
Hollokin 已提交
193
        } else {
H
Hollokin 已提交
194
            console.error('Failed to switchInputMethod.');
H
Hollokin 已提交
195 196
        }
    }).catch((err) => {
H
Hollokin 已提交
197
        console.error('switchInputMethod err: ' + JSON.stringify(err));
H
Hollokin 已提交
198 199
    })
} catch(err) {
H
Hollokin 已提交
200
    console.error('switchInputMethod err: ' + JSON.stringify(err));
H
Hollokin 已提交
201
}
G
gaoxiang 已提交
202
```
203

Z
zhaolinglan 已提交
204 205 206 207
## inputMethod.getCurrentInputMethod<sup>9+</sup>

getCurrentInputMethod(): InputMethodProperty

H
Hollokin 已提交
208
获取当前输入法扩展应用,提供同步接口,返回当前输入法属性。
Z
zhaolinglan 已提交
209 210 211 212 213

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**返回值:**

Z
zhaolinglan 已提交
214 215 216
| 类型                                         | 说明                     |
| -------------------------------------------- | ------------------------ |
| [InputmethodProperty](#inputmethodproperty8) | 返回当前输入法属性对象。 |
Z
zhaolinglan 已提交
217 218 219

**示例:**

H
Hollokin 已提交
220
```js
H
Hollokin 已提交
221
let currentIme = inputMethod.getCurrentInputMethod();
Z
zhaolinglan 已提交
222 223
```

224 225
## inputMethod.switchCurrentInputMethodSubtype<sup>9+</sup>

H
Hollokin 已提交
226
switchCurrentInputMethodSubtype(target: InputMethodSubtype, callback: AsyncCallback\<boolean>): void
227

H
Hollokin 已提交
228
在当前输入法应用内切换子类型。使用callback异步回调。
229 230 231 232 233 234 235 236 237

**需要权限**: ohos.permission.CONNECT_IME_ABILITY

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
H
Hollokin 已提交
238 239
| target |  [InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype)| 是 | 传入要切换的目标输入法子类型。 |
| callback | AsyncCallback&lt;boolean&gt; | 是 | 回调函数。当输入法子类型切换成功,err为undefined,data为true;否则为错误对象。|
240

H
Hollokin 已提交
241 242 243 244 245 246 247 248 249
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800005 | Configuration persisting error.        |
| 12800008 | Input method settings extension error. |

250 251
**示例:**

H
Hollokin 已提交
252
```js
H
update  
Hollokin 已提交
253
let inputMethodSubtype = {
H
Hollokin 已提交
254 255 256 257
    id: "com.example.kikainput",
    label: "ServiceExtAbility"
}
try {
H
update  
Hollokin 已提交
258
    inputMethod.switchCurrentInputMethodSubtype(inputMethodSubtype, (err, result) => {
H
Hollokin 已提交
259 260 261 262 263 264 265 266 267 268 269
        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) {
H
Hollokin 已提交
270
    console.error('switchCurrentInputMethodSubtype err: ' + JSON.stringify(err));
H
Hollokin 已提交
271
}
272 273 274 275 276 277
```

## inputMethod.switchCurrentInputMethodSubtype<sup>9+</sup>

switchCurrentInputMethodSubtype(target: InputMethodSubtype): Promise&lt;boolean&gt;

H
Hollokin 已提交
278
在当前输入法应用内切换子类型。使用promise异步回调。
279 280 281 282 283 284 285 286 287

**需要权限**: ohos.permission.CONNECT_IME_ABILITY

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
288
|target |  [InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype)| 是 | 传入要切换的目标输入法子类型。 |
289

H
Hollokin 已提交
290 291 292 293 294 295
**返回值:**

| 类型                                      | 说明                         |
| ----------------------------------------- | ---------------------------- |
| Promise\<boolean> | Promise对象。返回true表示在当前输入法应用内切换子类型成功;返回false表示在当前输入法应用内切换子类型失败。 |

H
Hollokin 已提交
296 297 298 299 300 301 302 303 304
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800005 | Configuration persisting error.        |
| 12800008 | Input method settings extension error. |

305 306
**示例:**

H
Hollokin 已提交
307
```js
H
update  
Hollokin 已提交
308
let inputMethodSubtype = {
H
Hollokin 已提交
309 310 311 312
    id: "com.example.kikainput",
    label: "ServiceExtAbility"
}
try {
H
update  
Hollokin 已提交
313
    inputMethod.switchCurrentInputMethodSubtype(inputMethodSubtype).then((result) => {
H
Hollokin 已提交
314
        if (result) {
H
Hollokin 已提交
315
            console.info('Success to switchCurrentInputMethodSubtype.');
H
Hollokin 已提交
316
        } else {
H
Hollokin 已提交
317
            console.error('Failed to switchCurrentInputMethodSubtype.');
H
Hollokin 已提交
318 319
        }
    }).catch((err) => {
H
Hollokin 已提交
320
        console.error('switchCurrentInputMethodSubtype err: ' + JSON.stringify(err));
H
Hollokin 已提交
321 322
    })
} catch(err) {
H
Hollokin 已提交
323
    console.error('switchCurrentInputMethodSubtype err: ' + JSON.stringify(err));
H
Hollokin 已提交
324
}
325 326 327 328 329 330 331 332 333 334 335 336 337 338
```

## inputMethod.getCurrentInputMethodSubtype<sup>9+</sup>

getCurrentInputMethodSubtype(): InputMethodSubtype

获取当前输入法子类型。

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**返回值:**

| 类型                                         | 说明                     |
| -------------------------------------------- | ------------------------ |
339
| [InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype) | 返回当前输入法子类型对象。 |
340 341 342

**示例:**

H
Hollokin 已提交
343
```js
H
Hollokin 已提交
344
let currentImeSubType = inputMethod.getCurrentInputMethodSubtype();
345 346 347 348
```

## inputMethod.switchCurrentInputMethodAndSubtype<sup>9+</sup>

H
Hollokin 已提交
349
switchCurrentInputMethodAndSubtype(inputMethodProperty: InputMethodProperty, inputMethodSubtype: InputMethodSubtype, callback: AsyncCallback\<boolean>): void
350

H
Hollokin 已提交
351
切换至指定输入法应用的指定子类型,用于跨输入法应用切换子类型。使用callback异步回调。
352 353 354 355 356 357 358 359 360

**需要权限**: ohos.permission.CONNECT_IME_ABILITY

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
361 362
|inputMethodProperty |  [InputMethodProperty](#inputmethodproperty8)| 是 | 传入要切换的目标输入法。 |
|inputMethodSubtype |  [InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype)| 是 | 传入要切换的目标输入法子类型。 |
H
Hollokin 已提交
363
| callback | AsyncCallback&lt;boolean&gt; | 是 | 回调函数。当输入法和子类型切换成功,err为undefined,data为获取到的切换子类型结果true;否则为错误对象。 |
364

H
Hollokin 已提交
365 366 367 368 369 370 371 372 373
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800005 | Configuration persisting error.        |
| 12800008 | Input method settings extension error. |

374 375
**示例:**

H
Hollokin 已提交
376
```js
H
Hollokin 已提交
377 378 379 380
let inputMethodProperty = {
    packageName:"com.example.kikakeyboard",
    methodId:"ServiceExtAbility"
}
H
Hollokin 已提交
381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397
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) {
H
Hollokin 已提交
398
    console.error('switchCurrentInputMethodAndSubtype err: ' + JSON.stringify(err));
H
Hollokin 已提交
399
}
400 401 402 403
```

## inputMethod.switchCurrentInputMethodAndSubtype<sup>9+</sup>

H
Hollokin 已提交
404
switchCurrentInputMethodAndSubtype(inputMethodProperty: InputMethodProperty, inputMethodSubtype: InputMethodSubtype): Promise&lt;boolean&gt;
405

H
Hollokin 已提交
406
切换至指定输入法应用的指定子类型,用于跨输入法应用切换子类型。使用promise异步回调。
407 408 409 410 411 412 413 414 415

**需要权限**: ohos.permission.CONNECT_IME_ABILITY

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
416 417
|inputMethodProperty |  [InputMethodProperty](#inputmethodproperty8)| 是 | 传入要切换的目标输入法。 |
|inputMethodSubtype |  [InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype)| 是 | 传入要切换的目标输入法子类型。 |
418

H
Hollokin 已提交
419 420 421 422 423 424
**返回值:**

| 类型                                      | 说明                         |
| ----------------------------------------- | ---------------------------- |
| Promise\<boolean> | Promise对象。返回true表示切换至指定输入法应用的指定子类型成功;返回false表示切换至指定输入法应用的指定子类型失败。 |

H
Hollokin 已提交
425 426 427 428 429 430 431 432 433
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800005 | Configuration persisting error.        |
| 12800008 | Input method settings extension error. |

434 435
**示例:**

H
Hollokin 已提交
436
```js
H
Hollokin 已提交
437
let inputMethodProperty = {
H
Hollokin 已提交
438 439
    name: "com.example.kikakeyboard",
    id: "ServiceExtAbility"
H
Hollokin 已提交
440
}
H
Hollokin 已提交
441
let inputMethodSubProperty = {
H
Hollokin 已提交
442 443 444 445 446 447
    id: "com.example.kikakeyboard",
	name: "",
	locale: "",
    label: "ServiceExtAbility",
	language: "",
	extra : {}
H
Hollokin 已提交
448 449 450 451
}
try {
    inputMethod.switchCurrentInputMethodAndSubtype(property, subType).then((result) => {
        if (result) {
H
Hollokin 已提交
452
            console.info('Success to switchCurrentInputMethodAndSubtype.');
H
Hollokin 已提交
453
        } else {
H
Hollokin 已提交
454
            console.error('Failed to switchCurrentInputMethodAndSubtype.');
H
Hollokin 已提交
455 456
        }
    }).catch((err) => {
H
Hollokin 已提交
457
        console.error('switchCurrentInputMethodAndSubtype err: ' + err);
H
Hollokin 已提交
458 459
    })
} catch(err) {
H
Hollokin 已提交
460
    console.error('switchCurrentInputMethodAndSubtype err: ' + err);
H
Hollokin 已提交
461
}
462 463
```

H
Hollokin 已提交
464
## inputMethod.getInputMethodController<sup>(deprecated)</sup>
Z
zhouyongfei 已提交
465

H
Hollokin 已提交
466
getInputMethodController(): InputMethodController
Z
zhouyongfei 已提交
467

H
Hollokin 已提交
468
获取客户端实例[InputMethodController](#inputmethodcontroller)
Z
zhouyongfei 已提交
469

H
Hollokin 已提交
470
> **说明:** 
H
Hollokin 已提交
471
> 从API version 6开始支持,从API version 9开始废弃, 建议使用[getController()](#inputmethodgetcontroller9)替代
H
Hollokin 已提交
472

473
**系统能力**:SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
474

H
Hollokin 已提交
475
**返回值:**
Z
zhouyongfei 已提交
476

H
Hollokin 已提交
477 478 479
| 类型                                            | 说明                     |
| ----------------------------------------------- | ------------------------ |
| [InputMethodController](#inputmethodcontroller) | 回调返回当前客户端实例。 |
Z
zhouyongfei 已提交
480

481
**示例:**
Z
zhouyongfei 已提交
482

483
```js
H
Hollokin 已提交
484
let InputMethodController = inputMethod.getInputMethodController();
Z
zhouyongfei 已提交
485 486
```

H
Hollokin 已提交
487
## inputMethod.getInputMethodSetting<sup>(deprecated)</sup>
Z
zhouyongfei 已提交
488

H
Hollokin 已提交
489
getInputMethodSetting(): InputMethodSetting
Z
zhouyongfei 已提交
490

H
Hollokin 已提交
491
获取客户端设置实例[InputMethodSetting](#inputmethodsetting8)
Z
zhouyongfei 已提交
492

H
Hollokin 已提交
493
> **说明:** 
H
Hollokin 已提交
494
> 从API version 6开始支持,从API version 9开始废弃, 建议使用[getSetting()](#inputmethodgetsetting9)替代
H
Hollokin 已提交
495

496
**系统能力**: SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
497

498
**返回值:**
Z
zhouyongfei 已提交
499

H
Hollokin 已提交
500 501 502
| 类型                                      | 说明                         |
| ----------------------------------------- | ---------------------------- |
| [InputMethodSetting](#inputmethodsetting8) | 回调返回当前客户端设置实例。 |
Z
zhouyongfei 已提交
503

504
**示例:**
Z
zhouyongfei 已提交
505

506
```js
H
Hollokin 已提交
507
let InputMethodSetting = inputMethod.getInputMethodSetting();
Z
zhouyongfei 已提交
508 509
```

H
Hollokin 已提交
510 511
## InputMethodController

H
Hollokin 已提交
512
下列API示例中都需使用[getController](#inputmethodgetcontroller9)回调获取到InputMethodController实例,再通过此实例调用对应方法。
H
Hollokin 已提交
513

514 515 516 517
### stopInputSession<sup>9+</sup>

stopInputSession(callback: AsyncCallback&lt;boolean&gt;): void

H
Hollokin 已提交
518
隐藏输入法。使用callback异步回调。
519 520 521 522 523 524 525

**系统能力**:SystemCapability.MiscServices.InputMethodFramework

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
H
Hollokin 已提交
526
| callback | AsyncCallback&lt;boolean&gt; | 是 | 回调函数。当输入法隐藏成功,err为undefined,data为true;否则为错误对象。 |
527

H
Hollokin 已提交
528 529 530 531 532 533 534 535 536
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800003 | Input method client error.             |
| 12800008 | Input method settings extension error. |

537 538 539
**示例:**

```js
H
Hollokin 已提交
540 541 542
try {
    InputMethodController.stopInputSession((error, result) => {
        if (error) {
H
Hollokin 已提交
543
            console.error('stopInputSession err: ' + JSON.stringify(error));
H
Hollokin 已提交
544 545 546 547 548 549 550 551
            return;
        }
        if (result) {
            console.info('Success to stopInputSession.(callback)');
        } else {
            console.error('Failed to stopInputSession.(callback)');
        }
    });
H
Hollokin 已提交
552 553
} catch(error) {
    console.error('stopInputSession err: ' + JSON.stringify(error));
H
Hollokin 已提交
554
}
555 556
```

H
Hollokin 已提交
557
### stopInputSession<sup>9+</sup>
558

H
Hollokin 已提交
559
stopInputSession(): Promise&lt;boolean&gt;
560

H
Hollokin 已提交
561
隐藏输入法。使用promise异步回调。
562 563 564 565 566 567 568

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
H
Hollokin 已提交
569
| Promise&lt;boolean&gt; | Promise对象。返回true表示输入法隐藏成功;返回false表示输入法隐藏失败。 |
570

H
Hollokin 已提交
571 572 573 574 575 576 577 578 579
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800003 | Input method client error.             |
| 12800008 | Input method settings extension error. |

580 581 582
**示例:**

```js
H
Hollokin 已提交
583 584 585
try {
    InputMethodController.stopInputSession().then((result) => {
        if (result) {
H
Hollokin 已提交
586
            console.info('Success to stopInputSession.');
H
Hollokin 已提交
587
        } else {
H
Hollokin 已提交
588
            console.error('Failed to stopInputSession.');
H
Hollokin 已提交
589 590
        }
    }).catch((err) => {
H
Hollokin 已提交
591
        console.error('stopInputSession err: ' + JSON.stringify(err));
H
Hollokin 已提交
592 593
    })
} catch(err) {
H
Hollokin 已提交
594
    console.error('stopInputSession err: ' + JSON.stringify(err));
H
Hollokin 已提交
595
}
596 597
```

598
### showSoftKeyboard<sup>9+</sup>
Z
zhaolinglan 已提交
599

Z
zhaolinglan 已提交
600
showSoftKeyboard(callback: AsyncCallback&lt;void&gt;): void
Z
zhaolinglan 已提交
601

H
Hollokin 已提交
602
显示软键盘。使用callback异步回调。
Z
zhaolinglan 已提交
603

H
Hollokin 已提交
604 605
**需要权限**: ohos.permission.CONNECT_IME_ABILITY

Z
zhaolinglan 已提交
606
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhaolinglan 已提交
607 608 609

**参数:**

Z
zhaolinglan 已提交
610
| 参数名   | 参数类型                  | 必填 | 说明       |
Z
zhaolinglan 已提交
611
| -------- | ------------------------- | ---- | ---------- |
H
Hollokin 已提交
612
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。当软键盘显示成功。err为undefined,否则为错误对象。 |
Z
zhaolinglan 已提交
613

H
Hollokin 已提交
614 615 616 617 618 619 620 621 622
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800003 | Input method client error.             |
| 12800008 | Input method settings extension error. |

Z
zhaolinglan 已提交
623 624 625
**示例:**

```js
Z
zhaolinglan 已提交
626
InputMethodController.showSoftKeyboard((err) => {
Z
zhaolinglan 已提交
627
    if (err === undefined) {
Z
zhaolinglan 已提交
628
        console.info('showSoftKeyboard success');
Z
zhaolinglan 已提交
629
    } else {
Z
zhaolinglan 已提交
630
        console.error('showSoftKeyboard failed because : ' + JSON.stringify(err));
Z
zhaolinglan 已提交
631 632 633 634
    }
})
```

635
### showSoftKeyboard<sup>9+</sup>
Z
zhaolinglan 已提交
636

Z
zhaolinglan 已提交
637
showSoftKeyboard(): Promise&lt;void&gt;
Z
zhaolinglan 已提交
638

H
Hollokin 已提交
639
显示软键盘,使用Promise异步回调。
Z
zhaolinglan 已提交
640

H
Hollokin 已提交
641 642
**需要权限**: ohos.permission.CONNECT_IME_ABILITY

Z
zhaolinglan 已提交
643
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhaolinglan 已提交
644 645 646

**返回值:**

Z
zhaolinglan 已提交
647 648
| 类型                | 说明                      |
| ------------------- | ------------------------- |
H
Hollokin 已提交
649
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
Z
zhaolinglan 已提交
650

H
Hollokin 已提交
651 652 653 654 655 656 657 658 659
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800003 | Input method client error.             |
| 12800008 | Input method settings extension error. |

Z
zhaolinglan 已提交
660 661 662
**示例:**

```js
Z
zhaolinglan 已提交
663 664 665
InputMethodController.showSoftKeyboard().then(async (err) => {
    console.log('showSoftKeyboard success');
}).catch((err) => {
H
Hollokin 已提交
666
    console.error('showSoftKeyboard err: ' + JSON.stringify(err));
Z
zhaolinglan 已提交
667 668 669
});
```

670
### hideSoftKeyboard<sup>9+</sup>
Z
zhaolinglan 已提交
671

Z
zhaolinglan 已提交
672
hideSoftKeyboard(callback: AsyncCallback&lt;void&gt;): void
Z
zhaolinglan 已提交
673

H
Hollokin 已提交
674
隐藏软键盘。使用callback异步回调。
Z
zhaolinglan 已提交
675

H
Hollokin 已提交
676 677
**需要权限**: ohos.permission.CONNECT_IME_ABILITY

Z
zhaolinglan 已提交
678
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhaolinglan 已提交
679 680 681

**参数:**

Z
zhaolinglan 已提交
682 683
| 参数名   | 参数类型                  | 必填 | 说明       |
| -------- | ------------------------- | ---- | ---------- |
H
Hollokin 已提交
684
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。当软键盘隐藏成功。err为undefined,否则为错误对象。 |
Z
zhaolinglan 已提交
685

H
Hollokin 已提交
686 687 688 689 690 691 692 693 694
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800003 | Input method client error.             |
| 12800008 | Input method settings extension error. |

Z
zhaolinglan 已提交
695 696 697
**示例:**

```js
Z
zhaolinglan 已提交
698
InputMethodController.hideSoftKeyboard((err) => {
Z
zhaolinglan 已提交
699
    if (err === undefined) {
Z
zhaolinglan 已提交
700
        console.info('hideSoftKeyboard success');
Z
zhaolinglan 已提交
701
    } else {
Z
zhaolinglan 已提交
702
        console.error('hideSoftKeyboard failed because : ' + JSON.stringify(err));
Z
zhaolinglan 已提交
703 704 705 706
    }
})
```

707
### hideSoftKeyboard<sup>9+</sup>
Z
zhaolinglan 已提交
708

Z
zhaolinglan 已提交
709
hideSoftKeyboard(): Promise&lt;void&gt;
Z
zhaolinglan 已提交
710

711
隐藏软键盘,使用Promise异步回调。参数个数为0,否则抛出异常。
Z
zhaolinglan 已提交
712

H
Hollokin 已提交
713 714
**需要权限**: ohos.permission.CONNECT_IME_ABILITY

Z
zhaolinglan 已提交
715
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhaolinglan 已提交
716 717 718

**返回值:**

Z
zhaolinglan 已提交
719 720
| 类型                | 说明                      |
| ------------------- | ------------------------- |
H
Hollokin 已提交
721
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
Z
zhaolinglan 已提交
722

H
Hollokin 已提交
723 724 725 726 727 728 729 730 731
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800003 | Input method client error.             |
| 12800008 | Input method settings extension error. |

Z
zhaolinglan 已提交
732 733 734
**示例:**

```js
Z
zhaolinglan 已提交
735 736 737
InputMethodController.hideSoftKeyboard().then(async (err) => {
    console.log('hideSoftKeyboard success');
}).catch((err) => {
H
Hollokin 已提交
738
    console.error('hideSoftKeyboard err: ' + JSON.stringify(err));
Z
zhaolinglan 已提交
739 740 741
});
```

H
Hollokin 已提交
742 743 744 745
### stopInput<sup>(deprecated)</sup>

stopInput(callback: AsyncCallback&lt;boolean&gt;): void

H
Hollokin 已提交
746
隐藏输入法。使用callback异步回调。
H
Hollokin 已提交
747 748 749 750 751 752 753 754 755 756

> **说明:** 
> 从API version 6开始支持,从API version 9开始废弃, 建议使用[stopInputSession()](#stopinputsession9)替代

**系统能力**:SystemCapability.MiscServices.InputMethodFramework

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
H
Hollokin 已提交
757
| callback | AsyncCallback&lt;boolean&gt; | 是 | 回调函数。当输入法隐藏成功,err为undefined,data为true;否则为错误对象。 |
H
Hollokin 已提交
758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778

**示例:**

```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<sup>(deprecated)</sup>

stopInput(): Promise&lt;boolean&gt;

H
Hollokin 已提交
779
隐藏输入法。使用promise异步回调。
H
Hollokin 已提交
780 781 782 783 784 785 786 787 788 789

> **说明:** 
> 从API version 6开始支持,从API version 9开始废弃, 建议使用[stopInputSession()](#stopinputsession9)替代

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
H
Hollokin 已提交
790
| Promise&lt;boolean&gt; | Promise对象。返回true表示输入法隐藏成功;返回false表示输入法隐藏失败。 |
H
Hollokin 已提交
791 792 793 794 795 796

**示例:**

```js
InputMethodController.stopInput().then((result) => {
    if (result) {
H
Hollokin 已提交
797
        console.info('Success to stopInput.');
H
Hollokin 已提交
798
    } else {
H
Hollokin 已提交
799
        console.error('Failed to stopInput.');
H
Hollokin 已提交
800 801
    }
}).catch((err) => {
H
Hollokin 已提交
802
    console.error('stopInput err: ' + err);
H
Hollokin 已提交
803 804 805
})
```

806
## InputMethodSetting<sup>8+</sup>
Z
zhouyongfei 已提交
807

H
Hollokin 已提交
808
下列API示例中都需使用[getSetting](#inputmethodgetsetting9)回调获取到InputMethodSetting实例,再通过此实例调用对应方法。
Z
zhouyongfei 已提交
809

810
### on('imeChange')<a name="imeChange"></a><sup>9+</sup>
811 812 813

on(type: 'imeChange', callback: (inputMethodProperty: InputMethodProperty, inputMethodSubtype: InputMethodSubtype) => void): void

H
Hollokin 已提交
814
订阅输入法及子类型变化监听事件。使用callback异步回调。
815 816 817 818 819 820 821 822

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**参数:**

| 参数名   | 类型                            | 必填 | 说明                                                         |
| -------- | ------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                        | 是   | 设置监听类型。<br/>-type为‘imeChange’时表示订阅输入法及子类型变化监听事件。 |
H
Hollokin 已提交
823
| callback | [InputMethodProperty](#inputmethodproperty8), [InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype) | 是 | 回调函数,返回输入法属性对象及输入法子类型对象。 |
824 825 826

**示例:**

H
Hollokin 已提交
827
```js
H
Hollokin 已提交
828 829
let InputMethodSetting = inputMethod.getSetting();
InputMethodSetting.on('imeChange', (inputMethodProperty, inputMethodSubtype) => {
H
Hollokin 已提交
830 831 832 833
    InputMethodProperty = inputMethodProperty;
    InputMethodSubtype = inputMethodSubtype;
});
```
834

H
Hollokin 已提交
835
### off('imeChange')<sup>9+</sup>
836

H
Hollokin 已提交
837
off(type: 'imeChange', callback?: (inputMethodProperty: InputMethodProperty, inputMethodSubtype: InputMethodSubtype) => void): void
838

H
Hollokin 已提交
839
取消订阅输入法及子类型变化监听事件。使用callback异步回调。
840 841 842 843 844 845 846 847

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**参数:**

| 参数名   | 类型                            | 必填 | 说明                                                         |
| -------- | ------------------------------- | ---- | ------------------------------------------------------------ |
| type     | string                        | 是   | 设置监听类型。<br/>-type为‘imeChange’时表示取消订阅输入法及子类型变化监听事件。 |
H
Hollokin 已提交
848
| callback | [InputMethodProperty](#inputmethodproperty8), [InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype) | 否 | 回调函数,返回取消订阅的输入法属性对象及输入法子类型对象。 |
849 850 851

**示例:**

H
Hollokin 已提交
852
```js
H
Hollokin 已提交
853 854
let InputMethodSetting = inputMethod.getSetting();
InputMethodSetting.off('imeChange');
H
Hollokin 已提交
855
```
856 857 858 859 860

### listInputMethodSubtype<sup>9+</sup>

listInputMethodSubtype(inputMethodProperty: InputMethodProperty, callback: AsyncCallback&lt;Array&lt;InputMethodSubtype&gt;&gt;): void

H
Hollokin 已提交
861
获取指定输入法应用的所有子类型。使用callback异步回调。
862 863 864 865 866 867 868

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**参数:**

| 参数名   | 类型                                               | 必填 | 说明                   |
| -------- | -------------------------------------------------- | ---- | ---------------------- |
H
Hollokin 已提交
869
| inputMethodProperty | InputMethodProperty| 是 | 指定获取子类型所属的输入法应用
H
Hollokin 已提交
870
| callback | Array<[InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype)> | 是 | 回调函数,返回指定输入法应用的所有子类型。 |
871

H
Hollokin 已提交
872 873 874 875 876 877 878 879 880
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800001 | Package manager error.                 |
| 12800008 | Input method settings extension error. |

881 882
**示例:**

H
Hollokin 已提交
883
```js
H
update  
Hollokin 已提交
884 885 886
let inputMethodProperty = {
    packageName:'com.example.kikakeyboard',
    methodId:'com.example.kikakeyboard'
H
Hollokin 已提交
887 888
}
try {
H
update  
Hollokin 已提交
889
    InputMethodSetting.listInputMethodSubtype(inputMethodProperty, (err,data) => {
H
Hollokin 已提交
890
        if (err) {
H
Hollokin 已提交
891
            console.error('listInputMethodSubtype failed: ' + JSON.stringify(err));
H
Hollokin 已提交
892 893 894 895 896
            return;
        }
        console.log('listInputMethodSubtype success');
    });
} catch (err) {
H
Hollokin 已提交
897
    console.error('listInputMethodSubtype failed: ' + JSON.stringify(err));
H
Hollokin 已提交
898
}
899 900 901 902 903 904
```

### listInputMethodSubtype<sup>9+</sup>

listInputMethodSubtype(inputMethodProperty: InputMethodProperty): Promise&lt;Array&lt;InputMethodSubtype&gt;&gt;

H
Hollokin 已提交
905
获取指定输入法应用的所有子类型。使用promise异步回调。
906 907 908

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

H
Hollokin 已提交
909 910 911 912 913 914
**参数:**

| 参数名   | 类型                                               | 必填 | 说明                   |
| -------- | -------------------------------------------------- | ---- | ---------------------- |
| inputMethodProperty | InputMethodProperty| 是 | 指定获取子类型所属的输入法应用

915 916 917 918
**返回值:**

| 类型                                                        | 说明                   |
| ----------------------------------------------------------- | ---------------------- |
H
Hollokin 已提交
919
| Promise<Array<[InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype)>> | Promise对象,返回已安装输入法子类型列表。 |
920

H
Hollokin 已提交
921 922 923 924 925 926 927 928 929
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800001 | Package manager error.                 |
| 12800008 | Input method settings extension error. |

930 931
**示例:**

H
Hollokin 已提交
932
```js
H
Hollokin 已提交
933 934 935 936 937 938 939 940
let inputMethodSubProperty = {
    id: "com.example.kikainput",
    label: "ServiceExtAbility"
}
try {
    InputMethodSetting.listInputMethodSubtype(inputMethodSubProperty).then((data) => {
        console.info('listInputMethodSubtype success');
    }).catch((err) => {
H
Hollokin 已提交
941
        console.error('listInputMethodSubtype err: ' + JSON.stringify(err));
H
Hollokin 已提交
942 943
    })
} catch(err) {
H
Hollokin 已提交
944
    console.error('listInputMethodSubtype err: ' + JSON.stringify(err));
H
Hollokin 已提交
945
}
946 947 948 949 950
```

### listCurrentInputMethodSubtype<sup>9+</sup>

listCurrentInputMethodSubtype(callback: AsyncCallback&lt;Array&lt;InputMethodSubtype&gt;&gt;): void
Z
zhaolinglan 已提交
951

H
Hollokin 已提交
952
查询当前输入法应用的所有子类型。使用callback异步回调。
953 954 955 956 957 958 959

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**参数:**

| 参数名   | 类型                                               | 必填 | 说明                   |
| -------- | -------------------------------------------------- | ---- | ---------------------- |
H
Hollokin 已提交
960
| callback | Array<[InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype)> | 是   | 回调函数,返回当前输入法应用的所有子类型。 |
961

H
Hollokin 已提交
962 963 964 965 966 967 968 969 970
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800001 | Package manager error.                 |
| 12800008 | Input method settings extension error. |

971 972
**示例:**

H
Hollokin 已提交
973
```js
H
Hollokin 已提交
974
try {
H
Hollokin 已提交
975
    InputMethodSetting.listCurrentInputMethodSubtype((err, data) => {
H
Hollokin 已提交
976
        if (err) {
H
Hollokin 已提交
977
            console.error('listCurrentInputMethodSubtype failed: ' + JSON.stringify(err));
H
Hollokin 已提交
978 979 980 981 982
            return;
        }
        console.log('listCurrentInputMethodSubtype success');
    });
} catch(err) {
H
Hollokin 已提交
983
    console.error('listCurrentInputMethodSubtype err: ' + JSON.stringify(err));
H
Hollokin 已提交
984
}
985 986 987 988 989 990
```

### listCurrentInputMethodSubtype<sup>9+</sup>

listCurrentInputMethodSubtype(): Promise&lt;Array&lt;InputMethodSubtype&gt;&gt;

H
Hollokin 已提交
991
查询当前输入法的子类型列表。使用promise异步回调。
992 993 994 995 996 997 998

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**返回值:**

| 类型                                                        | 说明                   |
| ----------------------------------------------------------- | ---------------------- |
H
Hollokin 已提交
999
| Promise<Array<[InputMethodSubtype](./js-apis-inputmethodsubtype.md#inputmethodsubtype)>> | Promise对象,返回当前输入法的子类型列表。 |
1000

H
Hollokin 已提交
1001 1002 1003 1004 1005 1006 1007 1008 1009
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800001 | Package manager error.                 |
| 12800008 | Input method settings extension error. |

1010 1011
**示例:**

H
Hollokin 已提交
1012
```js
H
Hollokin 已提交
1013 1014 1015 1016
try {
    InputMethodSetting.listCurrentInputMethodSubtype().then((data) => {
        console.info('listCurrentInputMethodSubtype success');
    }).catch((err) => {
H
Hollokin 已提交
1017
        console.error('listCurrentInputMethodSubtype err: ' + err);
H
Hollokin 已提交
1018 1019
    })
} catch(err) {
H
Hollokin 已提交
1020
    console.error('listCurrentInputMethodSubtype err: ' + JSON.stringify(err));
H
Hollokin 已提交
1021
}
1022 1023 1024 1025 1026
```

### getInputMethods<sup>9+</sup>

getInputMethods(enable: boolean, callback: AsyncCallback&lt;Array&lt;InputMethodProperty&gt;&gt;): void
Z
zhaolinglan 已提交
1027

H
Hollokin 已提交
1028
获取已激活/未激活输入法列表。参数enable取true,返回已激活输入法列表,取false返回未激活输入法列表。使用callback异步回调。
Z
zhaolinglan 已提交
1029 1030 1031 1032 1033 1034 1035 1036

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**参数:**

| 参数名   | 类型                                                | 必填 | 说明                          |
| -------- | --------------------------------------------------- | ---- | ----------------------------- |
| enable   | boolean                                             | 是   | 指定返回已激活/未激活。       |
H
Hollokin 已提交
1037
| callback | Array<[InputMethodProperty](#inputmethodproperty8)> | 是   | 回调函数,返回已激活/未激活输入法列表。 |
Z
zhaolinglan 已提交
1038

H
Hollokin 已提交
1039 1040 1041 1042 1043 1044 1045 1046 1047
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800001 | Package manager error.                 |
| 12800008 | Input method settings extension error. |

Z
zhaolinglan 已提交
1048 1049
**示例:**

H
Hollokin 已提交
1050
```js
H
Hollokin 已提交
1051 1052 1053
try {
    InputMethodSetting.getInputMethods(true, (err,data) => {
        if (err) {
H
Hollokin 已提交
1054
            console.error('getInputMethods failed: ' + JSON.stringify(err));
H
Hollokin 已提交
1055 1056 1057 1058 1059
            return;
        }
        console.log('getInputMethods success');
    });
} catch (err) {
H
Hollokin 已提交
1060
    console.error('getInputMethods failed: ' + JSON.stringify(err));
H
Hollokin 已提交
1061
}
Z
zhaolinglan 已提交
1062 1063
```

1064
### getInputMethods<sup>9+</sup>
Z
zhaolinglan 已提交
1065

1066
getInputMethods(enable: boolean): Promise&lt;Array&lt;InputMethodProperty&gt;&gt;
Z
zhaolinglan 已提交
1067

H
Hollokin 已提交
1068
获取已激活/未激活输入法列表。参数enable取true返回已激活输入法列表,取false返回未激活输入法列表。使用promise异步回调。
Z
zhaolinglan 已提交
1069 1070 1071 1072 1073 1074 1075 1076 1077

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**参数:**

| 参数名 | 类型    | 必填 | 说明                    |
| ------ | ------- | ---- | ----------------------- |
| enable | boolean | 是   | 指定返回已激活/未激活。 |

H
Hollokin 已提交
1078 1079 1080 1081 1082 1083 1084 1085 1086
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800001 | Package manager error.                 |
| 12800008 | Input method settings extension error. |

Z
zhaolinglan 已提交
1087 1088 1089 1090
**返回值:**

| 类型                                                         | 说明                          |
| ------------------------------------------------------------ | ----------------------------- |
H
Hollokin 已提交
1091
| Promise<Array<[InputMethodProperty](#inputmethodproperty8)>> | Promise对象,返回已激活/未激活输入法列表。 |
Z
zhaolinglan 已提交
1092 1093 1094

**示例:**

H
Hollokin 已提交
1095
```js
H
Hollokin 已提交
1096 1097 1098 1099
try {
    InputMethodSetting.getInputMethods(true).then((data) => {
        console.info('getInputMethods success');
    }).catch((err) => {
H
Hollokin 已提交
1100
        console.error('getInputMethods err: ' + JSON.stringify(err));
H
Hollokin 已提交
1101 1102
    })
} catch(err) {
H
Hollokin 已提交
1103
    console.error('getInputMethods err: ' + JSON.stringify(err));
H
Hollokin 已提交
1104
}
Z
zhaolinglan 已提交
1105 1106
```

H
Hollokin 已提交
1107 1108
### showOptionalInputMethods<sup>9+</sup>

H
Hollokin 已提交
1109
showOptionalInputMethods(callback: AsyncCallback&lt;boolean&gt;): void
H
Hollokin 已提交
1110

H
Hollokin 已提交
1111
显示输入法选择对话框。使用callback异步回调。
H
Hollokin 已提交
1112 1113 1114 1115 1116 1117 1118 1119 1120

**需要权限**: ohos.permission.CONNECT_IME_ABILITY

**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
H
Hollokin 已提交
1121
| callback | AsyncCallback&lt;boolean&gt; | 是 | 回调函数。当输入法选择对话框显示成功,err为undefined,data为true;否则为错误对象。 |
H
Hollokin 已提交
1122

H
Hollokin 已提交
1123 1124 1125 1126 1127 1128 1129 1130
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800008 | Input method settings extension error. |

H
Hollokin 已提交
1131 1132
**示例:**

H
Hollokin 已提交
1133
```js
H
Hollokin 已提交
1134
try {
H
Hollokin 已提交
1135
    InputMethodSetting.showOptionalInputMethods((err, data) => {
H
Hollokin 已提交
1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148
        if (err) {
            console.error('showOptionalInputMethods failed: ' + JSON.stringify(err));
            return;
        }
        console.info('showOptionalInputMethods success');
    });
} catch (err) {
    console.error('showOptionalInputMethods failed: ' + JSON.stringify(err));
}
```

### showOptionalInputMethods<sup>9+</sup>

H
Hollokin 已提交
1149
showOptionalInputMethods(): Promise&lt;boolean&gt;
H
Hollokin 已提交
1150

H
Hollokin 已提交
1151
显示输入法选择对话框。使用promise异步回调。
H
Hollokin 已提交
1152

H
Hollokin 已提交
1153
**需要权限**: ohos.permission.CONNECT_IME_ABILITY
H
Hollokin 已提交
1154

H
Hollokin 已提交
1155
**系统能力**: SystemCapability.MiscServices.InputMethodFramework
H
Hollokin 已提交
1156 1157 1158 1159 1160

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
H
Hollokin 已提交
1161
| Promise&lt;boolean&gt; | Promise对象。返回true表示输入法选择对话框显示成功;返回false表示输入法选择对话框显示失败。 |
H
Hollokin 已提交
1162

H
Hollokin 已提交
1163 1164 1165 1166 1167 1168 1169 1170
**错误码:**

以下错误码的详细介绍请参见[输入法框架错误码](../errorcodes/errcode-inputmethod-framework.md)

| 错误码ID | 错误码信息                             |
| -------- | -------------------------------------- |
| 12800008 | Input method settings extension error. |

H
Hollokin 已提交
1171 1172
**示例:**

H
Hollokin 已提交
1173
```js
H
Hollokin 已提交
1174
InputMethodSetting.showOptionalInputMethods().then((data) => {
H
Hollokin 已提交
1175
    console.info('displayOptionalInputMethod success.');
H
Hollokin 已提交
1176
}).catch((err) => {
H
Hollokin 已提交
1177
    console.error('displayOptionalInputMethod err: ' + err);
H
Hollokin 已提交
1178 1179 1180
})
```

H
Hollokin 已提交
1181
### listInputMethod<sup>(deprecated)</sup>
Z
zhouyongfei 已提交
1182 1183 1184

listInputMethod(callback: AsyncCallback&lt;Array&lt;InputMethodProperty&gt;&gt;): void

H
Hollokin 已提交
1185
查询已安装的输入法列表。使用callback异步回调。
Z
zhouyongfei 已提交
1186

H
Hollokin 已提交
1187
> **说明:** 
H
Hollokin 已提交
1188
> 从API version 8开始支持,从API version 9开始废弃, 建议使用[getInputMethods](#getinputmethods9)替代
H
Hollokin 已提交
1189

1190
**系统能力**: SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
1191

1192
**参数:**
B
bmeangel 已提交
1193

T
explain  
tianyu 已提交
1194 1195
| 参数名   | 类型                                               | 必填 | 说明                   |
| -------- | -------------------------------------------------- | ---- | ---------------------- |
H
Hollokin 已提交
1196
| callback | Array<[InputMethodProperty](#inputmethodproperty8)> | 是   | 回调函数,返回已安装的输入法列表。 |
Z
zhouyongfei 已提交
1197

1198
**示例:**
T
explain  
tianyu 已提交
1199

1200
```js
1201
InputMethodSetting.listInputMethod((err,data) => {
Z
zhaolinglan 已提交
1202
    if (err) {
Z
zhaolinglan 已提交
1203
        console.error('listInputMethod failed because: ' + JSON.stringify(err));
1204
        return;
1205
    }
Z
zhaolinglan 已提交
1206
    console.log('listInputMethod success');
1207
 });
1208
```
Z
zhouyongfei 已提交
1209

H
Hollokin 已提交
1210
### listInputMethod<sup>(deprecated)</sup>
Z
zhouyongfei 已提交
1211

Z
zhaolinglan 已提交
1212
listInputMethod(): Promise&lt;Array&lt;InputMethodProperty&gt;&gt;
Z
zhouyongfei 已提交
1213

H
Hollokin 已提交
1214
查询已安装的输入法列表。使用promise异步回调。
Z
zhouyongfei 已提交
1215

H
Hollokin 已提交
1216
> **说明:** 
H
Hollokin 已提交
1217
> 从API version 8开始支持,从API version 9开始废弃, 建议使用[getInputMethods](#getinputmethods9-1)替代
H
Hollokin 已提交
1218

1219
**系统能力**: SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
1220

1221
**返回值:**
B
bmeangel 已提交
1222

T
explain  
tianyu 已提交
1223 1224
| 类型                                                        | 说明                   |
| ----------------------------------------------------------- | ---------------------- |
H
Hollokin 已提交
1225
| Promise<Array<[InputMethodProperty](#inputmethodproperty8)>> | Promise对象,返回已安装输入法列表。 |
Z
zhouyongfei 已提交
1226

1227
**示例:**
1228 1229

```js
Z
zhaolinglan 已提交
1230
InputMethodSetting.listInputMethod().then((data) => {
Z
zhaolinglan 已提交
1231
    console.info('listInputMethod success');
Z
zhaolinglan 已提交
1232
}).catch((err) => {
H
Hollokin 已提交
1233
    console.error('listInputMethod err: ' + JSON.stringify(err));
Z
zhaolinglan 已提交
1234
})
1235
```
Z
zhouyongfei 已提交
1236

H
Hollokin 已提交
1237
### displayOptionalInputMethod<sup>(deprecated)</sup>
Z
zhouyongfei 已提交
1238 1239 1240

displayOptionalInputMethod(callback: AsyncCallback&lt;void&gt;): void

H
Hollokin 已提交
1241
显示输入法选择对话框。使用callback异步回调。
Z
zhouyongfei 已提交
1242

H
Hollokin 已提交
1243
> **说明:** 
H
Hollokin 已提交
1244
> 从API version 8开始支持,从API version 9开始废弃, 建议使用[showOptionalInputMethods()](#showoptionalinputmethods9)替代
H
Hollokin 已提交
1245

1246
**系统能力**: SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
1247

1248
**参数:**
Z
zhouyongfei 已提交
1249 1250 1251

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
H
Hollokin 已提交
1252
| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。当输入法选择对话框显示成功。err为undefined,否则为错误对象。 |
Z
zhouyongfei 已提交
1253

1254
**示例:**
1255 1256

```js
1257
InputMethodSetting.displayOptionalInputMethod((err) => {
Z
zhaolinglan 已提交
1258
    if (err) {
Z
zhaolinglan 已提交
1259
        console.error('displayOptionalInputMethod failed because: ' + JSON.stringify(err));
1260 1261
        return;
    }
Z
zhaolinglan 已提交
1262
    console.info('displayOptionalInputMethod success');
1263
});
1264
```
Z
zhouyongfei 已提交
1265

H
Hollokin 已提交
1266
### displayOptionalInputMethod<sup>(deprecated)</sup>
Z
zhouyongfei 已提交
1267

1268 1269
displayOptionalInputMethod(): Promise&lt;void&gt;

H
Hollokin 已提交
1270
显示输入法选择对话框。使用promise异步回调。
1271

H
Hollokin 已提交
1272
> **说明:** 
H
Hollokin 已提交
1273
> 从API version 8开始支持,API version 9开始废弃, 建议使用[showOptionalInputMethods()](#showoptionalinputmethods9-1)替代
H
Hollokin 已提交
1274

1275 1276 1277 1278 1279 1280
**系统能力**: SystemCapability.MiscServices.InputMethodFramework

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
H
Hollokin 已提交
1281
| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
1282 1283 1284 1285 1286

**示例:**

```js
InputMethodSetting.displayOptionalInputMethod().then(() => {
H
Hollokin 已提交
1287
    console.info('displayOptionalInputMethod success');
1288
}).catch((err) => {
H
Hollokin 已提交
1289
    console.error('displayOptionalInputMethod err: ' + err);
1290 1291
})
```