1# WindowExtensionContext (系统接口) 2 3WindowExtensionContext模块是WindowExtensionAbility的上下文环境,继承自[ExtensionContext](../apis-ability-kit/js-apis-inner-application-extensionContext.md)。 4 5WindowExtensionContext模块提供[WindowExtensionAbility](js-apis-application-windowExtensionAbility-sys.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](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 启动Ability的want信息。 | 45| options | [StartOptions](../apis-ability-kit/js-apis-app-ability-startOptions.md) | 是 | 启动Ability所携带的参数。 | 46| callback | AsyncCallback<void> | 是 | callback形式返回启动结果。 | 47 48**示例:** 49 50```ts 51import WindowExtensionAbility from '@ohos.application.WindowExtensionAbility'; 52import { BusinessError } from '@ohos.base'; 53import Want from '@ohos.app.ability.Want'; 54import StartOptions from '@ohos.app.ability.StartOptions'; 55 56class WindowExtAbility extends WindowExtensionAbility { 57 58 onConnect() { 59 let want: Want = { 60 bundleName: 'com.example.myapplication', 61 abilityName: 'MainAbility' 62 }; 63 let options: StartOptions = { 64 windowMode: 102 65 }; 66 67 try { 68 this.context.startAbility(want, options, (error: BusinessError) => { 69 let message = (error as BusinessError).message; 70 let errCode = (error as BusinessError).code; 71 if (errCode) { 72 // 处理业务逻辑错误 73 console.error(`startAbility failed, error.code: ${errCode}, error.message: ${message}`); 74 return; 75 } 76 // 执行正常业务 77 console.log('startAbility succeed'); 78 }); 79 } catch (paramError) { 80 // 处理入参错误异常 81 let message = (paramError as BusinessError).message; 82 let errCode = (paramError as BusinessError).code; 83 console.error(`error.code: ${errCode}, error.message: ${message}`); 84 } 85 } 86} 87``` 88 89## WindowExtensionContext.startAbility 90 91startAbility(want: Want, options?: StartOptions): Promise\<void> 92 93启动Ability,使用Promise异步回调。 94 95**系统能力**:SystemCapability.WindowManager.WindowManager.Core 96 97**参数:** 98 99| 参数名 | 类型 | 必填 | 说明 | 100| -------- | -------- | -------- | -------- | 101| want | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | Want类型参数,传入需要启动的ability的信息,如Ability名称,Bundle名称等。 | 102| options | [StartOptions](../apis-ability-kit/js-apis-app-ability-startOptions.md) | 否 | 启动Ability所携带的参数。 | 103 104**返回值:** 105 106| 类型 | 说明 | 107| -------- | -------- | 108| Promise<void> | 无返回结果的Promise对象。 | 109 110**示例:** 111 112```ts 113import WindowExtensionAbility from '@ohos.application.WindowExtensionAbility'; 114import { BusinessError } from '@ohos.base'; 115import Want from '@ohos.app.ability.Want'; 116import StartOptions from '@ohos.app.ability.StartOptions'; 117 118class WindowExtAbility extends WindowExtensionAbility { 119 120 onConnect() { 121 let want: Want = { 122 bundleName: 'com.example.myapp', 123 abilityName: 'MainAbility' 124 }; 125 let options: StartOptions = { 126 windowMode: 102, 127 }; 128 129 try { 130 this.context.startAbility(want, options) 131 .then(() => { 132 // 执行正常业务 133 console.log('startAbility succeed'); 134 }) 135 .catch((error: BusinessError) => { 136 // 处理业务逻辑错误 137 let message = (error as BusinessError).message; 138 let errCode = (error as BusinessError).code; 139 console.error(`startAbility failed, error.code: ${errCode}, error.message: ${message}`); 140 }); 141 } catch (paramError) { 142 // 处理入参错误异常 143 let message = (paramError as BusinessError).message; 144 let errCode = (paramError as BusinessError).code; 145 console.error(`error.code: ${errCode}, error.message: ${message}`); 146 } 147 } 148} 149```