1# WindowExtensionContext (System API) 2 3The **WindowExtensionContext** module, inherited from [ExtensionContext](../apis-ability-kit/js-apis-inner-application-extensionContext.md), is the context environment of the WindowExtensionAbility. 4 5The **WindowExtensionContext** module provides the capabilities of the [WindowExtensionAbility](js-apis-application-windowExtensionAbility-sys.md), including starting the ability. 6 7> **NOTE** 8> 9> - The initial APIs of this module are supported since API version 9. Newly added APIs will be marked with a superscript to indicate their earliest API version. 10> 11> - The APIs provided by this module are system APIs. 12> 13> - The APIs of this module can be used only in the stage model. 14 15## Usage 16 17Before using the **WindowExtensionContext** module, you must define a child class that inherits from **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; // Obtain a WindowExtensionContext instance. 28 } 29} 30``` 31 32## WindowExtensionContext.startAbility 33 34startAbility(want: Want, options: StartOptions, callback: AsyncCallback<void>): void 35 36Starts an ability. This API uses an asynchronous callback to return the result. 37 38**System capability**: SystemCapability.WindowManager.WindowManager.Core 39 40**Parameters** 41 42| Name| Type| Mandatory| Description| 43| -------- | -------- | -------- | -------- | 44| want | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | Yes| Want information about the target ability.| 45| options | [StartOptions](../apis-ability-kit/js-apis-app-ability-startOptions.md) | Yes| Parameters used for starting the ability.| 46| callback | AsyncCallback<void> | Yes| Callback used to return the result.| 47 48**Example** 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 // Process service logic errors. 73 console.error(`startAbility failed, error.code: ${errCode}, error.message: ${message}`); 74 return; 75 } 76 // Carry out normal service processing. 77 console.log('startAbility succeed'); 78 }); 79 } catch (paramError) { 80 // Process input parameter errors. 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 93Starts an ability. This API uses a promise to return the result. 94 95**System capability**: SystemCapability.WindowManager.WindowManager.Core 96 97**Parameters** 98 99| Name| Type| Mandatory| Description| 100| -------- | -------- | -------- | -------- | 101| want | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | Yes| Want information about the target ability, such as the ability name and bundle name.| 102| options | [StartOptions](../apis-ability-kit/js-apis-app-ability-startOptions.md) | No| Parameters used for starting the ability.| 103 104**Return value** 105 106| Type| Description| 107| -------- | -------- | 108| Promise<void> | Promise that returns no value.| 109 110**Example** 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 // Carry out normal service processing. 133 console.log('startAbility succeed'); 134 }) 135 .catch((error: BusinessError) => { 136 // Process service logic errors. 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 // Process input parameter errors. 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``` 150