• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.InputMethodExtensionContext (InputMethodExtensionContext)
2<!--Kit: IME Kit-->
3<!--Subsystem: MiscServices-->
4<!--Owner: @illybyy-->
5<!--Designer: @andeszhang-->
6<!--Tester: @murphy1984-->
7<!--Adviser: @zhang_yixin13-->
8
9InputMethodExtensionContext模块是InputMethodExtensionAbility的上下文环境,继承于ExtensionContext,提供InputMethodExtensionAbility具有的能力和接口,包括启动、停止、绑定、解绑Ability。
10
11> **说明:**
12>
13> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
14> 本模块接口仅可在Stage模型下使用。
15
16## 导入模块
17
18```ts
19import { InputMethodExtensionContext } from '@kit.IMEKit';
20```
21
22## 使用说明
23
24在使用InputMethodExtensionContext的功能前,需要通过InputMethodExtensionAbility子类实例获取。
25
26```ts
27import { InputMethodExtensionAbility, InputMethodExtensionContext } from '@kit.IMEKit';
28import { Want } from '@kit.AbilityKit';
29
30class InputMethodExtAbility extends InputMethodExtensionAbility {
31  onCreate(want: Want): void {
32    let context: InputMethodExtensionContext = this.context;
33  }
34}
35```
36
37## InputMethodExtensionContext.destroy
38
39destroy(callback: AsyncCallback&lt;void&gt;): void;
40
41销毁输入法应用。使用callback异步回调。
42
43**系统能力:** SystemCapability.MiscServices.InputMethodFramework
44
45**参数:**
46
47| 参数名   | 类型                 | 必填 | 说明                                                         |
48| -------- | -------------------- | ---- | ------------------------------------------------------------ |
49| callback | AsyncCallback\<void> | 是   | 回调函数。当销毁输入法应用成功时,err为undefined;否则为错误对象。 |
50
51**示例:**
52
53```ts
54import { InputMethodExtensionAbility, InputMethodExtensionContext } from '@kit.IMEKit';
55import { Want } from '@kit.AbilityKit';
56import { BusinessError } from '@kit.BasicServicesKit';
57
58class InputMethodExtAbility extends InputMethodExtensionAbility {
59  onCreate(want: Want): void {
60    let context: InputMethodExtensionContext = this.context;
61  }
62
63  onDestroy() {
64    this.context.destroy((err: BusinessError) => {
65      if (err) {
66        console.error(`Failed to destroy context, err code = ${err.code}`);
67        return;
68      }
69      console.info('Succeeded in destroying context.');
70    });
71  }
72}
73```
74
75## InputMethodExtensionContext.destroy
76
77destroy(): Promise&lt;void&gt;;
78
79销毁输入法应用。使用Promise异步回调。
80
81**系统能力:** SystemCapability.MiscServices.InputMethodFramework
82
83**返回值:**
84
85| 类型 | 说明 |
86| -------- | -------- |
87| Promise\<void> | 无返回结果的Promise对象。 |
88
89**示例:**
90
91```ts
92import { InputMethodExtensionAbility, InputMethodExtensionContext } from '@kit.IMEKit';
93import { Want } from '@kit.AbilityKit';
94import { BusinessError } from '@kit.BasicServicesKit';
95
96class InputMethodExtAbility extends InputMethodExtensionAbility {
97  onCreate(want: Want): void {
98    let context: InputMethodExtensionContext = this.context;
99  }
100
101  onDestroy() {
102    this.context.destroy().then(() => {
103      console.info('Succeed in destroying context.');
104    }).catch((err: BusinessError)=>{
105      console.error(`Failed to destroy context, err code = ${err.code}`);
106    });
107  }
108}
109```
110
111## InputMethodExtensionContext.startAbility<sup>12+</sup>
112
113startAbility(want: Want): Promise&lt;void&gt;;
114
115拉起目标应用。使用Promise异步回调。
116
117**系统能力:** SystemCapability.MiscServices.InputMethodFramework
118
119**参数:**
120
121| 参数名 | 类型                                                    | 必填 | 说明                                                         |
122| ------ | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
123| want   | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是   | 当前Extension相关的Want类型信息,包括ability名称、bundle名称等。 |
124
125**返回值:**
126
127| 类型           | 说明                      |
128| -------------- | ------------------------- |
129| Promise\<void> | 无返回结果的Promise对象。 |
130
131**错误码:**
132
133以下错误码的详细介绍请参见[输入法框架错误码](errorcode-inputmethod-framework.md),[元能力错误码](../apis-ability-kit/errorcode-ability.md),[通用错误码说明文档](../errorcode-universal.md)。
134
135| 错误码ID | 错误信息                                                |
136| -------- | ------------------------------------------------------- |
137| 401      | parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed.           |
138| 16000001 | The specified ability does not exist.                   |
139| 16000002 | Incorrect ability type.                                 |
140| 16000004 | Cannot start an invisible component.                    |
141| 16000005 | The specified process does not have the permission.     |
142| 16000006 | Cross-user operations are not allowed.                  |
143| 16000008 | The crowdtesting application expires.                   |
144| 16000009 | An ability cannot be started or stopped in Wukong mode. |
145| 16000010 | The call with the continuation and prepare continuation flag is forbidden.       |
146| 16000011 | The context does not exist.                             |
147| 16000012 | The application is controlled.                          |
148| 16000013 | The application is controlled by EDM.                   |
149| 16000019 | No matching ability is found.                            |
150| 16000050 | Internal error.                                         |
151| 16000053 | The ability is not on the top of the UI.                |
152| 16000055 | Installation-free timed out.                            |
153| 16000061 | Operation not supported.                                |
154| 16200001 | The caller has been released.                           |
155| 16000069 | The extension cannot start the third party application. |
156| 16000070 | The extension cannot start the service.                 |
157
158**示例:**
159
160```ts
161import { InputMethodExtensionAbility, InputMethodExtensionContext } from '@kit.IMEKit';
162import { Want } from '@kit.AbilityKit';
163import { BusinessError } from '@kit.BasicServicesKit';
164
165class InputMethodExtAbility extends InputMethodExtensionAbility {
166  onCreate(want: Want): void {
167    const context: InputMethodExtensionContext = this.context;
168    const targetWant: Want = {
169      bundleName: "com.example.aafwk.test",
170      abilityName: "com.example.aafwk.test.TwoAbility"
171    };
172
173    context.startAbility(targetWant)
174      .then(() => console.info('startAbility success'))
175      .catch((err: BusinessError) => {
176        console.error(`StartAbility failed. Code: ${err.code}, Message: ${err.message}`);
177      });
178  }
179
180  onDestroy() {
181    this.context.destroy().then(() => {
182      console.info('Succeed in destroying context.');
183    }).catch((err: BusinessError) => {
184      console.error(`Failed to destroy context, err code = ${err.code}`);
185    });
186  }
187}
188```
189
190