1# WindowExtensionContext 2 3WindowExtensionContext模块是WindowExtensionAbility的上下文环境,继承自[ExtensionContext](js-apis-inner-application-extensionContext.md)。 4 5WindowExtensionContext模块提供[WindowExtensionAbility](js-apis-application-windowExtensionAbility.md)具有的能力,包括启动Ability。 6 7> **说明:** 8> 9> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 10> 11> - 本模块接口为系统接口。 12> 13> - 本模块接口仅可在Stage模型下使用。 14 15## 使用说明 16 17在使用WindowExtensionContext的功能前,需要通过WindowExtensionAbility子类实例获取。 18 19```ts 20 import WindowExtensionAbility from '@ohos.application.WindowExtensionAbility'; 21 22 let context; 23 class WindowExtAbility extends WindowExtensionAbility { 24 onConnect() { 25 context = this.context; // 获取WindowExtensionContext 26 } 27 } 28``` 29 30## WindowExtensionContext.startAbility 31 32startAbility(want: Want, options: StartOptions, callback: AsyncCallback<void>): void 33 34启动Ability,使用callback异步回调。 35 36**系统能力**:SystemCapability.WindowManager.WindowManager.Core 37 38**参数:** 39 40| 参数名 | 类型 | 必填 | 说明 | 41| -------- | -------- | -------- | -------- | 42| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 | 43| options | [StartOptions](js-apis-app-ability-startOptions.md) | 是 | 启动Ability所携带的参数。 | 44| callback | AsyncCallback<void> | 是 | callback形式返回启动结果。 | 45 46**示例:** 47 48 ```ts 49 let want = { 50 bundleName: 'com.example.myapplication', 51 abilityName: 'MainAbility' 52 }; 53 let options = { 54 windowMode: 102 55 }; 56 57 try { 58 this.context.startAbility(want, options, (error) => { 59 if (error.code) { 60 // 处理业务逻辑错误 61 console.log('startAbility failed, error.code: ' + JSON.stringify(error.code) + 62 ' error.message: ' + JSON.stringify(error.message)); 63 return; 64 } 65 // 执行正常业务 66 console.log('startAbility succeed'); 67 }); 68 } catch (paramError) { 69 // 处理入参错误异常 70 console.error('error.code: ' + JSON.stringify(paramError.code) + 71 ' error.message: ' + JSON.stringify(paramError.message)); 72 } 73 ``` 74 75## WindowExtensionContext.startAbility 76 77startAbility(want: Want, options?: StartOptions): Promise\<void> 78 79启动Ability,使用Promise异步回调。 80 81**系统能力**:SystemCapability.WindowManager.WindowManager.Core 82 83**参数:** 84 85| 参数名 | 类型 | 必填 | 说明 | 86| -------- | -------- | -------- | -------- | 87| want | [Want](js-apis-application-want.md) | 是 | Want类型参数,传入需要启动的ability的信息,如Ability名称,Bundle名称等。 | 88| options | [StartOptions](js-apis-app-ability-startOptions.md) | 否 | 启动Ability所携带的参数。 | 89 90**返回值:** 91 92| 类型 | 说明 | 93| -------- | -------- | 94| Promise<void> | 无返回结果的Promise对象。 | 95 96**示例:** 97 98 ```ts 99 let want = { 100 bundleName: 'com.example.myapp', 101 abilityName: 'MainAbility' 102 }; 103 let options = { 104 windowMode: 102, 105 }; 106 107 try { 108 this.context.startAbility(want, options) 109 .then((data) => { 110 // 执行正常业务 111 console.log('startAbility succeed'); 112 }) 113 .catch((error) => { 114 // 处理业务逻辑错误 115 console.log('startAbility failed, error.code: ' + JSON.stringify(error.code) + 116 ' error.message: ' + JSON.stringify(error.message)); 117 }); 118 } catch (paramError) { 119 // 处理入参错误异常 120 console.error('error.code: ' + JSON.stringify(paramError.code) + 121 ' error.message: ' + JSON.stringify(paramError.message)); 122 } 123 ```