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

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

5
> **说明:**
6
>
Z
zhouyongfei 已提交
7 8 9 10 11
> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

## 导入模块

```
12
import inputMethod from '@ohos.inputmethod';
Z
zhouyongfei 已提交
13 14
```

15
## 常量<sup>8+</sup>
Z
zhouyongfei 已提交
16 17 18

常量值。

19
**系统能力:** SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
20

21 22 23
| 参数名 | 参数 | 常量值 | 说明 |
| -------- | -------- | -------- | -------- |
| MAX_TYPE_NUM | number | 128 | 可支持的最大输入法个数。 |
Z
zhouyongfei 已提交
24

25
## InputMethodProperty<sup>8+</sup>
Z
zhouyongfei 已提交
26 27 28

输入法应用属性。

29
**系统能力:** SystemCapability.MiscServices.InputMethodFramework
Z
刷新  
zhouyongfei 已提交
30

31
| 名称 | 参数 | 可读 | 可写 | 说明 |
Z
zhouyongfei 已提交
32
| -------- | -------- | -------- | -------- | -------- |
33 34
| packageName | string | 是 | 否 | 输入法包名。 |
| methodId | string | 是 | 否 | 输入法唯一标识。 |
Z
zhouyongfei 已提交
35

36
## inputMethod.getInputMethodController
Z
zhouyongfei 已提交
37 38 39

getInputMethodController(): InputMethodController

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

42
**系统能力:** SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
43

44
**返回值:**
Z
zhouyongfei 已提交
45

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

50
**示例:**
T
explain  
tianyu 已提交
51

52
```js
53
let inputMethodController = inputMethod.getInputMethodController();
54
```
55

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

getInputMethodSetting(): InputMethodSetting

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

62
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
63

64
**返回值:**
Z
zhouyongfei 已提交
65

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

70
**示例:**
71 72

```js
73
let inputMethodSetting = inputMethod.getInputMethodSetting();
74
```
G
gaoxiang 已提交
75
## inputMethod.switchInputMethod<sup>9+</sup>
Z
zhouyongfei 已提交
76

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

79
切换输入法。使用callback异步回调。
80

81
**模型约束:** 此接口仅可在Stage模型下使用。
G
gaoxiang 已提交
82

83
**系统能力:** SystemCapability.MiscServices.InputMethodFramework
G
gaoxiang 已提交
84

85
**参数:**
G
gaoxiang 已提交
86

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

**示例:**

```js
Z
zhaolinglan 已提交
95
inputMethod.switchInputMethod({packageName:'com.example.kikakeyboard', methodId:'com.example.kikakeyboard'} ,(err,result) => {
Z
zhaolinglan 已提交
96
    if (err) {
97
        console.error('Failed to switch inputmethod: ' + JSON.stringify(err));
98 99
        return;
    }
Z
zhaolinglan 已提交
100
    if (result) {
101
        console.info('Succeeded in switching inputmethod.');
Z
zhaolinglan 已提交
102
    } else {
103
        console.error('Failed to switch inputmethod.');
Z
zhaolinglan 已提交
104
    }
105
});
G
gaoxiang 已提交
106
```
107

G
gaoxiang 已提交
108
## inputMethod.switchInputMethod<sup>9+</sup>
109

Z
zhaolinglan 已提交
110
switchInputMethod(target: InputMethodProperty): Promise&lt;boolean&gt;
G
gaoxiang 已提交
111

112 113 114
切换输入法。使用Promise异步回调。

**模型约束:** 此接口仅可在Stage模型下使用。
G
gaoxiang 已提交
115

116
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
G
gaoxiang 已提交
117

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

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

G
gaoxiang 已提交
124
**返回值:**
B
bmeangel 已提交
125

126 127 128
| 类型                                      | 说明                         |
| ----------------------------------------- | ---------------------------- |
| Promise\<boolean> | Promise对象。返回true表示切换输入法成功;返回false表示切换输入法失败。 |
G
gaoxiang 已提交
129

G
gaoxiang 已提交
130 131 132
**示例:**

```js
Z
zhaolinglan 已提交
133
inputMethod.switchInputMethod({packageName:'com.example.kikakeyboard', methodId:'com.example.kikakeyboard'}).then((result) => {
Z
zhaolinglan 已提交
134
    if (result) {
135
        console.info('Succeeded in switching inputMethod.');
Z
zhaolinglan 已提交
136
    } else {
137
        console.error('Failed to switch inputmethod.');
Z
zhaolinglan 已提交
138 139
    }
}).catch((err) => {
140
    console.error('Failed to switch inputmethod: ' + JSON.stringify(err));
Z
zhaolinglan 已提交
141
})
G
gaoxiang 已提交
142
```
143

Z
zhaolinglan 已提交
144 145 146 147
## inputMethod.getCurrentInputMethod<sup>9+</sup>

getCurrentInputMethod(): InputMethodProperty

148
获取当前输入法的属性对象。
Z
zhaolinglan 已提交
149

150
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhaolinglan 已提交
151 152 153

**返回值:**

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

**示例:**

```js
161
let currentIme = inputMethod.getCurrentInputMethod();
Z
zhaolinglan 已提交
162 163
```

164
## InputMethodController
Z
zhouyongfei 已提交
165

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

### stopInput

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

172
结束输入会话。使用callback异步回调。
Z
zhouyongfei 已提交
173

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

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

T
explain  
tianyu 已提交
178 179
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
180
| callback | AsyncCallback&lt;boolean&gt; | 是 | 回调函数。当结束输入会话成功,err为undefined,data为true;否则为错误对象。 |
Z
zhouyongfei 已提交
181

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

184
```js
185
inputMethodController.stopInput((error, result) => {
Z
zhaolinglan 已提交
186
    if (error) {
187
        console.error('Failed to stop input method: ' + JSON.stringify(err));
188 189
        return;
    }
Z
zhaolinglan 已提交
190
    if (result) {
191
        console.info('Succeeded in stoping input method.');
Z
zhaolinglan 已提交
192
    } else {
193
        console.error('Failed to stop input method.');
Z
zhaolinglan 已提交
194
    }
195
});
Z
zhouyongfei 已提交
196 197 198 199 200 201
```

### stopInput

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

202
结束输入会话。使用Promise异步回调。
Z
zhouyongfei 已提交
203

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

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

T
explain  
tianyu 已提交
208 209
| 类型 | 说明 |
| -------- | -------- |
210
| Promise&lt;boolean&gt; | Promise对象。返回true表示结束会话成功;返回false表示结束会话失败。 |
Z
zhouyongfei 已提交
211

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

214
```js
215
inputMethodController.stopInput().then((result) => {
Z
zhaolinglan 已提交
216
    if (result) {
217
        console.info('Succeeded in stoping input method.');
Z
zhaolinglan 已提交
218
    } else {
219
        console.error('Failed to stop input method.');
Z
zhaolinglan 已提交
220 221
    }
}).catch((err) => {
222
    console.error('Failed to stop input method: ' + JSON.stringify(err));
Z
zhaolinglan 已提交
223
})
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异步回调。
Z
zhaolinglan 已提交
231

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

**参数:**

236
| 参数名   | 参数                  | 必填 | 说明       |
Z
zhaolinglan 已提交
237
| -------- | ------------------------- | ---- | ---------- |
238
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。当软键盘显示成功。err为undefined,否则为错误对象。 |
Z
zhaolinglan 已提交
239 240 241 242

**示例:**

```js
243 244 245
inputMethodController.showSoftKeyboard((err) => {
    if (err) {
        console.info('Succeeded in showing softKeyboard.');
Z
zhaolinglan 已提交
246
    } else {
247
        console.error('Failed to show softKeyboard: ' + 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异步回调。
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
270 271
inputMethodController.showSoftKeyboard().then(() => {
    console.log('Succeeded in showing softKeyboard.');
Z
zhaolinglan 已提交
272
}).catch((err) => {
273
    console.error('Failed to show softKeyboard: ' + 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异步回调。
Z
zhaolinglan 已提交
282

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

**参数:**

287
| 参数名   | 参数                  | 必填 | 说明       |
Z
zhaolinglan 已提交
288
| -------- | ------------------------- | ---- | ---------- |
289
| callback | AsyncCallback&lt;void&gt; | 是   | 回调函数。当软键盘隐藏成功。err为undefined,否则为错误对象。 |
Z
zhaolinglan 已提交
290 291 292 293

**示例:**

```js
294 295 296
inputMethodController.hideSoftKeyboard((err) => {
    if (err) {
        console.info('Failed to hide softKeyboard: ' + JSON.stringify(err));
Z
zhaolinglan 已提交
297
    } else {
298
        console.error('Succeeded in hiding softKeyboard.');
Z
zhaolinglan 已提交
299 300 301 302
    }
})
```

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

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

307
隐藏软键盘,使用Promise异步回调。
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
320 321
inputMethodController.hideSoftKeyboard().then((err) => {
    console.log('Succeeded in hiding softKeyboard.');
Z
zhaolinglan 已提交
322
}).catch((err) => {
323
    console.error('Failed to hide softKeyboard: ' + 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
### listInputMethod<sup>9+</sup>

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

335
获取已激活/未激活输入法列表。使用callback异步回调。
Z
zhaolinglan 已提交
336

337
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhaolinglan 已提交
338 339 340 341 342

**参数:**

| 参数名   | 类型                                                | 必填 | 说明                          |
| -------- | --------------------------------------------------- | ---- | ----------------------------- |
343 344
| enable   | boolean                                             | 是   | 值为true,表示获取已激活的输入法列表;值为false,表示获取未激活的输入法列表。 |
| callback | AsyncCallback&lt;Array&lt;[InputMethodProperty](#inputmethodproperty8)&gt;&gt; | 是   | 回调函数,返回已激活/未激活的输入法列表。 |
Z
zhaolinglan 已提交
345 346 347 348

**示例:**

```js
349
inputMethodSetting.listInputMethod(true, (err,data) => {
Z
zhaolinglan 已提交
350
    if (err) {
351
        console.error('Failed to list inputmethods: ' + JSON.stringify(err));
Z
zhaolinglan 已提交
352 353
        return;
    }
354
    console.log('Succeeded in listing inputmethods.');
Z
zhaolinglan 已提交
355 356 357 358 359 360 361
 });
```

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

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

362
获取已激活/未激活输入法列表。使用Promise异步回调。
Z
zhaolinglan 已提交
363

364
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhaolinglan 已提交
365 366 367

**参数:**

368 369 370
| 参数名 | 类型    | 必填 | 说明                              |
| ------ | ------- | ---- | --------------------------------- |
| enable | boolean | 是   | 值为true,表示获取已激活的输入法列表;值为false,表示获取未激活的输入法列表。 |
Z
zhaolinglan 已提交
371 372 373 374 375

**返回值:**

| 类型                                                         | 说明                          |
| ------------------------------------------------------------ | ----------------------------- |
376
| Promise<Array<[InputMethodProperty](#inputmethodproperty8)>> | Promise对象,返回已激活/未激活的输入法列表。 |
Z
zhaolinglan 已提交
377 378 379 380

**示例:**

```js
381 382
inputMethodSetting.listInputMethod(true).then((data) => {
    console.info('Succeeded in listing inputmethods.');
Z
zhaolinglan 已提交
383
}).catch((err) => {
384
    console.error('Failed to list inputmethods: ' + JSON.stringify(err));
Z
zhaolinglan 已提交
385 386 387
})
```

Z
refresh  
zhouyongfei 已提交
388
### listInputMethod
Z
zhouyongfei 已提交
389 390 391

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

392
查询已安装的输入法列表。使用callback异步回调。
Z
zhouyongfei 已提交
393

394
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
395

396
**参数:**
B
bmeangel 已提交
397

T
explain  
tianyu 已提交
398 399
| 参数名   | 类型                                               | 必填 | 说明                   |
| -------- | -------------------------------------------------- | ---- | ---------------------- |
400
| callback | AsyncCallback&lt;Array<[InputMethodProperty](#inputmethodproperty8)>&gt; | 是   | 回调函数,返回已安装的输入法列表。 |
Z
zhouyongfei 已提交
401

402
**示例:**
T
explain  
tianyu 已提交
403

404
```js
405
inputMethodSetting.listInputMethod((err, data) => {
Z
zhaolinglan 已提交
406
    if (err) {
407
        console.error('Failed to list inputmethods: ' + JSON.stringify(err));
408
        return;
409
    }
410
    console.log('Succeeded in listing inputmethods.');
411
 });
412
```
Z
zhouyongfei 已提交
413

Z
refresh  
zhouyongfei 已提交
414
### listInputMethod
Z
zhouyongfei 已提交
415

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

418
查询已安装的输入法列表。使用Promise异步回调。
Z
zhouyongfei 已提交
419

420
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
421

422
**返回值:**
B
bmeangel 已提交
423

T
explain  
tianyu 已提交
424 425
| 类型                                                        | 说明                   |
| ----------------------------------------------------------- | ---------------------- |
426
| Promise<Array<[InputMethodProperty](#inputmethodproperty8)>> | Promise对象,返回已安装的输入法列表。 |
Z
zhouyongfei 已提交
427

428
**示例:**
429 430

```js
431 432
inputMethodSetting.listInputMethod().then((data) => {
    console.info('Succeeded in listing inputmethod.');
Z
zhaolinglan 已提交
433
}).catch((err) => {
434
    console.error('Failed to list inputmethod: ' + JSON.stringify(err));
Z
zhaolinglan 已提交
435
})
436
```
Z
zhouyongfei 已提交
437

Z
refresh  
zhouyongfei 已提交
438
### displayOptionalInputMethod
Z
zhouyongfei 已提交
439 440 441

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

442
显示选择输入法弹窗。使用callback异步回调。
Z
zhouyongfei 已提交
443

444
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
445

446
**参数:**
Z
zhouyongfei 已提交
447 448 449

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

452
**示例:**
453 454

```js
455
inputMethodSetting.displayOptionalInputMethod((err) => {
Z
zhaolinglan 已提交
456
    if (err) {
457
        console.error('Failed to display optional inputmethod: ' + JSON.stringify(err));
458 459
        return;
    }
460
    console.info('Succeeded in displaying optional inputmethod.');
461
});
462
```
Z
zhouyongfei 已提交
463

Z
refresh  
zhouyongfei 已提交
464
### displayOptionalInputMethod
Z
zhouyongfei 已提交
465

466
displayOptionalInputMethod(): Promise&lt;void&gt;
Z
zhouyongfei 已提交
467

468
显示选择输入法弹窗。使用Promise异步回调。
Z
zhouyongfei 已提交
469

470
**系统能力:**  SystemCapability.MiscServices.InputMethodFramework
Z
zhouyongfei 已提交
471

472
**返回值:**
Z
zhouyongfei 已提交
473

Z
refresh  
zhouyongfei 已提交
474
| 类型 | 说明 |
Z
zhouyongfei 已提交
475
| -------- | -------- |
476
| Promise&lt;void&gt; | 无返回结果的Promise对象。 |
Z
zhouyongfei 已提交
477

478
**示例:**
479 480

```js
481 482
inputMethodSetting.displayOptionalInputMethod().then(() => {
    console.info('Succeeded in displaying optional inputmethod.');
Z
zhaolinglan 已提交
483
}).catch((err) => {
484
    console.error('Failed to display optional inputmethod: ' + JSON.stringify(err));
Z
zhaolinglan 已提交
485
})
486
```