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
**返回值:**
B
bmeangel 已提交
123

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

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


```js
Z
zhaolinglan 已提交
132 133 134 135 136 137 138 139 140
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 已提交
141
```
Z
zhaolinglan 已提交
142 143 144 145
## inputMethod.getCurrentInputMethod<sup>9+</sup>

getCurrentInputMethod(): InputMethodProperty

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

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

**返回值:**

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

**示例:**


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

163
## InputMethodController
Z
zhouyongfei 已提交
164

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

### stopInput

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

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

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

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

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

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

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

### stopInput

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

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

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

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

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

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


214
```js
Z
zhaolinglan 已提交
215 216 217 218 219 220 221 222 223
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 已提交
224 225
```

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

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

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

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

**参数:**

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

**示例:**

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

Z
zhaolinglan 已提交
252

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

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

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

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

**返回值:**

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

**示例:**

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

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

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

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

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

**参数:**

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

**示例:**

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

Z
zhaolinglan 已提交
303

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

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

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

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

**返回值:**

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

**示例:**

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

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

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

Z
zhaolinglan 已提交
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 392
### 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 已提交
393
### listInputMethod
Z
zhouyongfei 已提交
394 395 396

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

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

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

401
**参数:**
B
bmeangel 已提交
402

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

407
**示例:**
T
explain  
tianyu 已提交
408

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

Z
refresh  
zhouyongfei 已提交
421
### listInputMethod
Z
zhouyongfei 已提交
422

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

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

427
**系统能力**: SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
428

429
**返回值:**
B
bmeangel 已提交
430

T
explain  
tianyu 已提交
431 432
| 类型                                                        | 说明                   |
| ----------------------------------------------------------- | ---------------------- |
433
| Promise<Array<[InputMethodProperty](#inputmethodproperty8)>> | 返回已安装输入法列表。 |
Z
zhouyongfei 已提交
434

435
**示例:**
436 437

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

Z
refresh  
zhouyongfei 已提交
447
### displayOptionalInputMethod
Z
zhouyongfei 已提交
448 449 450

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

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

453
**系统能力**: SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
454

455
**参数:**
Z
zhouyongfei 已提交
456 457 458 459 460

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

461
**示例:**
462 463

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

Z
refresh  
zhouyongfei 已提交
473
### displayOptionalInputMethod
Z
zhouyongfei 已提交
474 475 476

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

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

479
  **系统能力**: SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
480

481
**返回值:**
Z
zhouyongfei 已提交
482

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

487
**示例:**
488 489

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