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 20import WindowExtensionAbility from '@ohos.application.WindowExtensionAbility'; 21import WindowExtensionContext from 'application/WindowExtensionContext'; 22 23let context: WindowExtensionContext | null = null; 24 25class WindowExtAbility extends WindowExtensionAbility { 26 onConnect() { 27 context = this.context; // 获取WindowExtensionContext 28 } 29} 30``` 31 32## WindowExtensionContext.startAbility 33 34startAbility(want: Want, options: StartOptions, callback: AsyncCallback<void>): void 35 36启动Ability,使用callback异步回调。 37 38**系统能力**:SystemCapability.WindowManager.WindowManager.Core 39 40**参数:** 41 42| 参数名 | 类型 | 必填 | 说明 | 43| -------- | -------- | -------- | -------- | 44| want | [Want](js-apis-app-ability-want.md) | 是 | 启动Ability的want信息。 | 45| options | [StartOptions](js-apis-app-ability-startOptions.md) | 是 | 启动Ability所携带的参数。 | 46| callback | AsyncCallback<void> | 是 | callback形式返回启动结果。 | 47 48**示例:** 49 50 ```ts 51import { BusinessError } from '@ohos.base'; 52import Want from '@ohos.app.ability.Want'; 53import StartOptions from '@ohos.app.ability.StartOptions'; 54 55let want: Want = { 56 bundleName: 'com.example.myapplication', 57 abilityName: 'MainAbility' 58}; 59let options: StartOptions = { 60 windowMode: 102 61}; 62 63try { 64 this.context.startAbility(want, options, (error: BusinessError) => { 65 let message = (error as BusinessError).message; 66 let errCode = (error as BusinessError).code; 67 if (errCode) { 68 // 处理业务逻辑错误 69 console.error('startAbility failed, error.code: ${errCode}, error.message: ${message}'); 70 return; 71 } 72 // 执行正常业务 73 console.log('startAbility succeed'); 74 }); 75} catch (paramError) { 76 // 处理入参错误异常 77 let message = (paramError as BusinessError).message; 78 let errCode = (paramError as BusinessError).code; 79 console.error('error.code: ${errCode}, error.message: ${message}'); 80} 81 ``` 82 83## WindowExtensionContext.startAbility 84 85startAbility(want: Want, options?: StartOptions): Promise\<void> 86 87启动Ability,使用Promise异步回调。 88 89**系统能力**:SystemCapability.WindowManager.WindowManager.Core 90 91**参数:** 92 93| 参数名 | 类型 | 必填 | 说明 | 94| -------- | -------- | -------- | -------- | 95| want | [Want](js-apis-app-ability-want.md) | 是 | Want类型参数,传入需要启动的ability的信息,如Ability名称,Bundle名称等。 | 96| options | [StartOptions](js-apis-app-ability-startOptions.md) | 否 | 启动Ability所携带的参数。 | 97 98**返回值:** 99 100| 类型 | 说明 | 101| -------- | -------- | 102| Promise<void> | 无返回结果的Promise对象。 | 103 104**示例:** 105 106 ```ts 107import { BusinessError } from '@ohos.base'; 108import Want from '@ohos.app.ability.Want'; 109import StartOptions from '@ohos.app.ability.StartOptions'; 110 111let want: Want = { 112 bundleName: 'com.example.myapp', 113 abilityName: 'MainAbility' 114}; 115let options: StartOptions = { 116 windowMode: 102, 117}; 118 119try { 120 this.context.startAbility(want, options) 121 .then(() => { 122 // 执行正常业务 123 console.log('startAbility succeed'); 124 }) 125 .catch((error: BusinessError) => { 126 // 处理业务逻辑错误 127 let message = (error as BusinessError).message; 128 let errCode = (error as BusinessError).code; 129 console.error('startAbility failed, error.code: ${errCode}, error.message: ${message}'); 130 }); 131} catch (paramError) { 132 // 处理入参错误异常 133 let message = (paramError as BusinessError).message; 134 let errCode = (paramError as BusinessError).code; 135 console.error('error.code: ${errCode}, error.message: ${message}'); 136} 137 ```