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<void>): 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<void>; 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<void>; 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