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

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

5 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 | 是 | 否 | 可支持的最大输入法个数。 |
Z
zhouyongfei 已提交
25 26


27
## InputMethodProperty<sup>8+</sup>
Z
zhouyongfei 已提交
28 29 30

输入法应用属性。

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

Z
zhouyongfei 已提交
33 34
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
Z
刷新  
zhouyongfei 已提交
35 36
| packageName | string | 是 | 否 | 包名。 |
| methodId | string | 是 | 否 | Ability名。 |
Z
zhouyongfei 已提交
37

38
## inputMethod.getInputMethodController
Z
zhouyongfei 已提交
39 40 41

getInputMethodController(): InputMethodController

42
获取客户端实例[InputMethodController](#inputmethodcontroller)
Z
zhouyongfei 已提交
43

44
**系统能力**:SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
45

46
**返回值:**
Z
zhouyongfei 已提交
47

48 49 50
| 类型                                            | 说明                     |
| ----------------------------------------------- | ------------------------ |
| [InputMethodController](#inputmethodcontroller) | 回调返回当前客户端实例。 |
Z
zhouyongfei 已提交
51

52
**示例:**
T
explain  
tianyu 已提交
53

54
```js
Z
zhouyongfei 已提交
55
  var InputMethodController = inputMethod.getInputMethodController();
56
```
57

58
## inputMethod.getInputMethodSetting<sup>8+</sup>
Z
zhouyongfei 已提交
59 60 61

getInputMethodSetting(): InputMethodSetting

62
获取客户端设置实例[InputMethodSetting](#inputmethodsetting8)
Z
zhouyongfei 已提交
63

64
**系统能力**: SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
65

66
**返回值:**
Z
zhouyongfei 已提交
67

T
explain  
tianyu 已提交
68 69
| 类型                                      | 说明                         |
| ----------------------------------------- | ---------------------------- |
70
| [InputMethodSetting](#inputmethodsetting8) | 回调返回当前客户端设置实例。 |
Z
zhouyongfei 已提交
71 72


73
**示例:**
74 75

```js
Z
zhouyongfei 已提交
76
  var InputMethodSetting = inputMethod.getInputMethodSetting();
77
```
G
gaoxiang 已提交
78
## inputMethod.switchInputMethod<sup>9+</sup>
Z
zhouyongfei 已提交
79

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

82
切换输入法。此接口仅可在Stage模型下使用。使用callback形式返回结果。参数个数为2,否则抛出异常。
83

Z
zhaolinglan 已提交
84
**系统能力**:SystemCapability.MiscServices.InputMethodFramework
G
gaoxiang 已提交
85 86 87 88 89

**参数:**

  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
G
gaoxiang 已提交
90
  |target | [InputmethodProperty](#inputmethodproperty8) | 是 | 传入要切换的目标输入法。 |
G
gaoxiang 已提交
91 92 93 94 95 96
  | callback | AsyncCallback&lt;boolean&gt; | 是 | 返回输入法切换是否成功。 |


**示例:**

```js
Z
zhaolinglan 已提交
97
inputMethod.switchInputMethod({packageName:"com.example.kikakeyboard", methodId:"com.example.kikakeyboard"} ,(err,result) => {
Z
zhaolinglan 已提交
98
    if (err) {
Z
zhaolinglan 已提交
99
        console.error("switchInputMethod err: " + JSON.stringify(err));
100 101
        return;
    }
Z
zhaolinglan 已提交
102 103 104 105 106
    if (result) {
        console.info("Success to switchInputMethod.(callback)");
    } else {
        console.error("Failed to switchInputMethod.(callback)");
    }
107
});
G
gaoxiang 已提交
108
```
G
gaoxiang 已提交
109
## inputMethod.switchInputMethod<sup>9+</sup>
Z
zhaolinglan 已提交
110
switchInputMethod(target: InputMethodProperty): Promise&lt;boolean&gt;
G
gaoxiang 已提交
111

112
切换输入法。此接口仅可在Stage模型下使用。使用promise形式返回结果。参数个数为1,否则抛出异常。
G
gaoxiang 已提交
113

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

G
gaoxiang 已提交
116
**参数:**
G
gaoxiang 已提交
117 118 119

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

G
gaoxiang 已提交
122 123 124
**返回值:**
  | 类型                                      | 说明                         |
  | ----------------------------------------- | ---------------------------- |
125
  | Promise\<boolean> | 回调返回切换后的输入法。 |
G
gaoxiang 已提交
126

G
gaoxiang 已提交
127 128 129 130
**示例:**


```js
Z
zhaolinglan 已提交
131 132 133 134 135 136 137 138 139
inputMethod.switchInputMethod({packageName:"com.example.kikakeyboard", methodId:"com.example.kikakeyboard"}).then((result) => {
    if (result) {
        console.info("Success to switchInputMethod.(promise)");
    } else {
        console.error("Failed to switchInputMethod.(promise)");
    }
}).catch((err) => {
    console.error("switchInputMethod promise err: " + err);
})
G
gaoxiang 已提交
140
```
Z
zhaolinglan 已提交
141 142 143 144
## inputMethod.getCurrentInputMethod<sup>9+</sup>

getCurrentInputMethod(): InputMethodProperty

Z
zhaolinglan 已提交
145
获取当前输入法扩展应用,提供同步接口,返回当前输入法属性对象。
Z
zhaolinglan 已提交
146 147 148 149 150

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

**返回值:**

Z
zhaolinglan 已提交
151 152 153
| 类型                                         | 说明                     |
| -------------------------------------------- | ------------------------ |
| [InputmethodProperty](#inputmethodproperty8) | 返回当前输入法属性对象。 |
Z
zhaolinglan 已提交
154 155 156 157 158 159 160 161

**示例:**


```js
var currentIme = inputMethod.getCurrentInputMethod();
```

162
## InputMethodController
Z
zhouyongfei 已提交
163

164
下列API示例中都需使用[getInputMethodController](#inputmethodgetinputmethodcontroller)回调获取到InputMethodController实例,再通过此实例调用对应方法。
Z
zhouyongfei 已提交
165 166 167 168 169

### stopInput

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

170
隐藏输入法。使用callback形式返回结果。参数个数为1,否则抛出异常。
Z
zhouyongfei 已提交
171

172
**系统能力**:SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
173

174
**参数:**
Z
zhouyongfei 已提交
175

T
explain  
tianyu 已提交
176 177 178
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| callback | AsyncCallback&lt;boolean&gt; | 是 | 返回输入法隐藏是否成功。 |
Z
zhouyongfei 已提交
179

180
**示例:**
Z
zhouyongfei 已提交
181

182
```js
Z
zhaolinglan 已提交
183
InputMethodController.stopInput((error, result) => {
Z
zhaolinglan 已提交
184
    if (error) {
Z
zhaolinglan 已提交
185
        console.error("failed to stopInput because: " + JSON.stringify(error));
186 187
        return;
    }
Z
zhaolinglan 已提交
188 189 190 191 192
    if (result) {
        console.info("Success to stopInput.(callback)");
    } else {
        console.error("Failed to stopInput.(callback)");
    }
193
});
Z
zhouyongfei 已提交
194 195 196 197 198 199
```

### stopInput

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

200
隐藏输入法。使用promise形式返回结果。参数个数为0,否则抛出异常。
Z
zhouyongfei 已提交
201

202
**系统能力**: SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
203

204
**返回值:**
Z
zhouyongfei 已提交
205

T
explain  
tianyu 已提交
206 207 208
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;boolean&gt; | 返回输入法隐藏是否成功。 |
Z
zhouyongfei 已提交
209

210
**示例:**
Z
zhouyongfei 已提交
211 212


213
```js
Z
zhaolinglan 已提交
214 215 216 217 218 219 220 221 222
InputMethodController.stopInput().then((result) => {
    if (result) {
        console.info("Success to stopInput.(promise)");
    } else {
        console.error("Failed to stopInput.(promise)");
    }
}).catch((err) => {
    console.error("stopInput promise err: " + err);
})
Z
zhouyongfei 已提交
223 224
```

Z
zhaolinglan 已提交
225
### showSoftKeyboard<sup>9+</sup> ###
Z
zhaolinglan 已提交
226

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

229
显示软键盘,使用callback异步回调。参数个数为1,否则抛出异常。
Z
zhaolinglan 已提交
230

Z
zhaolinglan 已提交
231
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhaolinglan 已提交
232 233 234

**参数:**

Z
zhaolinglan 已提交
235
| 参数名   | 参数类型                  | 必填 | 说明       |
Z
zhaolinglan 已提交
236 237
| -------- | ------------------------- | ---- | ---------- |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。 |
Z
zhaolinglan 已提交
238 239 240 241

**示例:**

```js
Z
zhaolinglan 已提交
242 243
InputMethodController.showSoftKeyboard((err) => {
    if (err == undefined) {
Z
zhaolinglan 已提交
244
        console.info('showSoftKeyboard success');
Z
zhaolinglan 已提交
245
    } else {
Z
zhaolinglan 已提交
246
        console.error('showSoftKeyboard failed because : ' + JSON.stringify(err));
Z
zhaolinglan 已提交
247 248 249 250
    }
})
```

Z
zhaolinglan 已提交
251

Z
zhaolinglan 已提交
252
### showSoftKeyboard<sup>9+</sup> ###
Z
zhaolinglan 已提交
253

Z
zhaolinglan 已提交
254
showSoftKeyboard(): Promise&lt;void&gt;
Z
zhaolinglan 已提交
255

256
显示软键盘,使用Promise异步回调。参数个数为0,否则抛出异常。
Z
zhaolinglan 已提交
257

Z
zhaolinglan 已提交
258
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhaolinglan 已提交
259 260 261

**返回值:**

Z
zhaolinglan 已提交
262 263 264
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
Z
zhaolinglan 已提交
265 266 267 268

**示例:**

```js
Z
zhaolinglan 已提交
269 270 271
InputMethodController.showSoftKeyboard().then(async (err) => {
    console.log('showSoftKeyboard success');
}).catch((err) => {
Z
zhaolinglan 已提交
272
    console.error('showSoftKeyboard promise err: ' + JSON.stringify(err));
Z
zhaolinglan 已提交
273 274 275
});
```

Z
zhaolinglan 已提交
276
### hideSoftKeyboard<sup>9+</sup> ###
Z
zhaolinglan 已提交
277

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

280
隐藏软键盘,使用callback异步回调。参数个数为1,否则抛出异常。
Z
zhaolinglan 已提交
281

Z
zhaolinglan 已提交
282
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhaolinglan 已提交
283 284 285

**参数:**

Z
zhaolinglan 已提交
286 287 288
| 参数名   | 参数类型                  | 必填 | 说明       |
| -------- | ------------------------- | ---- | ---------- |
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。 |
Z
zhaolinglan 已提交
289 290 291 292

**示例:**

```js
Z
zhaolinglan 已提交
293 294
InputMethodController.hideSoftKeyboard((err) => {
    if (err == undefined) {
Z
zhaolinglan 已提交
295
        console.info('hideSoftKeyboard success');
Z
zhaolinglan 已提交
296
    } else {
Z
zhaolinglan 已提交
297
        console.error('hideSoftKeyboard failed because : ' + JSON.stringify(err));
Z
zhaolinglan 已提交
298 299 300 301
    }
})
```

Z
zhaolinglan 已提交
302

Z
zhaolinglan 已提交
303
### hideSoftKeyboard<sup>9+</sup> ###
Z
zhaolinglan 已提交
304

Z
zhaolinglan 已提交
305
hideSoftKeyboard(): Promise&lt;void&gt;
Z
zhaolinglan 已提交
306

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

Z
zhaolinglan 已提交
309
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhaolinglan 已提交
310 311 312

**返回值:**

Z
zhaolinglan 已提交
313 314 315
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
Z
zhaolinglan 已提交
316 317 318 319

**示例:**

```js
Z
zhaolinglan 已提交
320 321 322
InputMethodController.hideSoftKeyboard().then(async (err) => {
    console.log('hideSoftKeyboard success');
}).catch((err) => {
Z
zhaolinglan 已提交
323
    console.error('hideSoftKeyboard promise err: ' + JSON.stringify(err));
Z
zhaolinglan 已提交
324 325 326
});
```

327
## InputMethodSetting<sup>8+</sup>
Z
zhouyongfei 已提交
328

329
下列API示例中都需使用[getInputMethodSetting](#inputmethodgetinputmethodcontroller)回调获取到InputMethodSetting实例,再通过此实例调用对应方法。
Z
zhouyongfei 已提交
330

Z
zhaolinglan 已提交
331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391
### listInputMethod<sup>9+</sup>

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

获取已激活/未激活输入法列表。参数enable取true,返回已激活输入法列表,取false返回未激活输入法列表。使用callback形式返回结果。参数个数为2,否则抛出异常。

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

**参数:**

| 参数名   | 类型                                                | 必填 | 说明                          |
| -------- | --------------------------------------------------- | ---- | ----------------------------- |
| enable   | boolean                                             | 是   | 指定返回已激活/未激活。       |
| callback | Array<[InputMethodProperty](#inputmethodproperty8)> | 是   | 返回已激活/未激活输入法列表。 |

**示例:**

```js
imeList: Array<inputMethod.InputMethodProperty> = null
InputMethodSetting.listInputMethod(true, (err,data) => {
    if (err) {
        console.error("listInputMethod failed because: " + JSON.stringify(err));
        return;
    }
    console.log("listInputMethod success");
    this.imeList = data;
 });
```

### listInputMethod<sup>9+</sup>

listInputMethod(enable: boolean): Promise&lt;Array&lt;InputMethodProperty&gt;&gt;

获取已激活/未激活输入法列表。参数enable取true返回已激活输入法列表,取false返回未激活输入法列表。使用promise形式返回结果。参数个数为0,否则抛出异常。

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

**参数:**

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

**返回值:**

| 类型                                                         | 说明                          |
| ------------------------------------------------------------ | ----------------------------- |
| Promise<Array<[InputMethodProperty](#inputmethodproperty8)>> | 返回已激活/未激活输入法列表。 |

**示例:**

```js
imeList: Array<inputMethod.InputMethodProperty> = null
InputMethodSetting.listInputMethod(true).then((data) => {
    console.info("listInputMethod success");
    this.imeList = data;
}).catch((err) => {
    console.error("listInputMethod promise err: " + err);
})
```

Z
refresh  
zhouyongfei 已提交
392
### listInputMethod
Z
zhouyongfei 已提交
393 394 395

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

396
查询已安装的输入法列表。使用callback形式返回结果。参数个数为1,否则抛出异常。
Z
zhouyongfei 已提交
397

398
**系统能力**: SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
399

400
**参数:**
T
explain  
tianyu 已提交
401 402
| 参数名   | 类型                                               | 必填 | 说明                   |
| -------- | -------------------------------------------------- | ---- | ---------------------- |
403
| callback | Array<[InputMethodProperty](#inputmethodproperty8)> | 是   | 返回已安装输入法列表。 |
Z
zhouyongfei 已提交
404

405
**示例:**
T
explain  
tianyu 已提交
406

407
```js
Z
zhaolinglan 已提交
408
imeList: Array<inputMethod.InputMethodProperty> = null
409
InputMethodSetting.listInputMethod((err,data) => {
Z
zhaolinglan 已提交
410 411
    if (err) {
        console.error("listInputMethod failed because: " + JSON.stringify(err));
412
        return;
413
    }
Z
zhaolinglan 已提交
414
    console.log("listInputMethod success");
Z
zhaolinglan 已提交
415
    this.imeList = data;
416
 });
417
```
Z
zhouyongfei 已提交
418

Z
refresh  
zhouyongfei 已提交
419
### listInputMethod
Z
zhouyongfei 已提交
420

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

423
查询已安装的输入法列表。使用promise形式返回结果。参数个数为0,否则抛出异常。
Z
zhouyongfei 已提交
424

425
**系统能力**: SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
426

427
**返回值:**
T
explain  
tianyu 已提交
428 429
| 类型                                                        | 说明                   |
| ----------------------------------------------------------- | ---------------------- |
430
| Promise<Array<[InputMethodProperty](#inputmethodproperty8)>> | 返回已安装输入法列表。 |
Z
zhouyongfei 已提交
431

432
**示例:**
433 434

```js
Z
zhaolinglan 已提交
435
imeList: Array<inputMethod.InputMethodProperty> = null
Z
zhaolinglan 已提交
436 437 438 439 440 441
InputMethodSetting.listInputMethod().then((data) => {
    console.info("listInputMethod success");
    this.imeList = data;
}).catch((err) => {
    console.error("listInputMethod promise err: " + err);
})
442
```
Z
zhouyongfei 已提交
443

Z
refresh  
zhouyongfei 已提交
444
### displayOptionalInputMethod
Z
zhouyongfei 已提交
445 446 447

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

448
显示输入法选择对话框。使用callback形式返回结果。参数个数为1,否则抛出异常。
Z
zhouyongfei 已提交
449

450
**系统能力**: SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
451

452
**参数:**
Z
zhouyongfei 已提交
453 454 455 456 457

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数。 |

458
**示例:**
459 460

```js
461
InputMethodSetting.displayOptionalInputMethod((err) => {
Z
zhaolinglan 已提交
462 463
    if (err) {
        console.error("displayOptionalInputMethod failed because: " + JSON.stringify(err));
464 465
        return;
    }
Z
zhaolinglan 已提交
466
    console.info("displayOptionalInputMethod success");
467
});
468
```
Z
zhouyongfei 已提交
469

Z
refresh  
zhouyongfei 已提交
470
### displayOptionalInputMethod
Z
zhouyongfei 已提交
471 472 473

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

474
  显示输入法选择对话框。使用promise形式返回结果。参数个数为0,否则抛出异常。
Z
zhouyongfei 已提交
475

476
  **系统能力**: SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
477

478
**返回值:**
Z
zhouyongfei 已提交
479

Z
refresh  
zhouyongfei 已提交
480
| 类型 | 说明 |
Z
zhouyongfei 已提交
481
| -------- | -------- |
482
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
Z
zhouyongfei 已提交
483

484
**示例:**
485 486

```js
Z
zhaolinglan 已提交
487 488 489 490 491
InputMethodSetting.displayOptionalInputMethod().then(() => {
    console.info("displayOptionalInputMethod success.(promise)");
}).catch((err) => {
    console.error("displayOptionalInputMethod promise err: " + err);
})
492
```