# @ohos.application.StaticSubscriberExtensionContext (StaticSubscriberExtensionContext) The **StaticSubscriberExtensionContext** module, inherited from **ExtensionContext**, provides context for StaticSubscriberExtensionAbilities. You can use the APIs of this module to start StaticSubscriberExtensionAbilities. > **NOTE** > > The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version. > The APIs of this module can be used only in the stage model. ## Modules to Import ```ts import StaticSubscriberExtensionContext from '@ohos.application.StaticSubscriberExtensionContext'; ``` ## Usage Before using the **StaticSubscriberExtensionContext** module, you must first obtain a **StaticSubscriberExtensionAbility** instance. ```ts import StaticSubscriberExtensionAbility from '@ohos.application.StaticSubscriberExtensionAbility'; import StaticSubscriberExtensionContext from '@ohos.application.StaticSubscriberExtensionContext'; ``` ## StaticSubscriberExtensionContext.startAbility startAbility(want: Want, callback: AsyncCallback<void>): void; Starts an ability that belongs to the same application as this StaticSubscriberExtensionAbility. This API uses an asynchronous callback to return the result. Observe the following when using this API: - If an application running in the background needs to call this API to start an ability, it must have the **ohos.permission.START_ABILITIES_FROM_BACKGROUND** permission. - If **visible** of the target ability is **false** in cross-application scenarios, the caller must have the **ohos.permission.START_INVISIBLE_ABILITY** permission. **Required permissions**: ohos.permission.START_ABILITIES_FROM_BACKGROUND **System capability**: SystemCapability.Ability.AbilityRuntime.Core **System API**: This is a system API and cannot be called by third-party applications. **Parameters** | Name | Type | Mandatory| Description | | -------- | ----------------------------------- | ---- | -------------------------- | | want | [Want](js-apis-app-ability-want.md) | Yes | Want information about the target ability. | | callback | AsyncCallback<void> | Yes | Callback used to return the result.| **Error codes** | ID| Error Message | | -------- | ------------------------------------------------------------ | | 16000001 | The specified ability does not exist. | | 16000002 | Incorrect ability type. | | 16000004 | Can not start invisible component. | | 16000005 | The specified process does not have the permission. | | 16000006 | Cross-user operations are not allowed. | | 16000008 | The crowdtesting application expires. | | 16000009 | An ability cannot be started or stopped in Wukong mode. | | 16000011 | The context does not exist. | | 16000050 | Internal error. | | 16000053 | The ability is not on the top of the UI. | | 16000055 | Installation-free timed out. | | 16200001 | The caller has been released. | | 16300003 | The target application is not self application. | For details about the error codes, see [Ability Error Codes](../errorcodes/errorcode-ability.md). **Example** ```ts import CommonEventManager from '@ohos.commonEventManager'; import Want from '@ohos.app.ability.Want'; import { BusinessError } from '@ohos.base'; let want: Want = { bundleName: "com.example.myapp", abilityName: "MyAbility" }; class MyStaticSubscriberExtensionAbility extends StaticSubscriberExtensionAbility { onReceiveEvent(event: CommonEventManager.CommonEventData) { console.log(`onReceiveEvent, event: ${JSON.stringify(event)}`); try { this.context.startAbility(want, (error: BusinessError) => { if (error) { // Process service logic errors. console.log('startAbility failed, error.code: ' + JSON.stringify(error.code) + ' error.message: ' + JSON.stringify(error.message)); return; } // Carry out normal service processing. console.log('startAbility succeed'); }); } catch (paramError) { // Process input parameter errors. let code = (paramError as BusinessError).code; let message = (paramError as BusinessError).message; console.log('startAbility failed, error.code: ' + JSON.stringify(code) + ' error.message: ' + JSON.stringify(message)); } } } ``` ## StaticSubscriberExtensionContext.startAbility startAbility(want: Want): Promise<void>; Starts an ability that belongs to the same application as this StaticSubscriberExtensionAbility. This API uses a promise to return the result. Observe the following when using this API: - If an application running in the background needs to call this API to start an ability, it must have the **ohos.permission.START_ABILITIES_FROM_BACKGROUND** permission. - If **visible** of the target ability is **false** in cross-application scenarios, the caller must have the **ohos.permission.START_INVISIBLE_ABILITY** permission. **Required permissions**: ohos.permission.START_ABILITIES_FROM_BACKGROUND **System capability**: SystemCapability.Ability.AbilityRuntime.Core **System API**: This is a system API and cannot be called by third-party applications. **Parameters** | Name| Type | Mandatory| Description | | ------ | ----------------------------------- | ---- | ----------------------- | | want | [Want](js-apis-app-ability-want.md) | Yes | Want information about the target ability.| **Return value** | Type | Description | | ------------------- | ------------------------- | | Promise<void> | Promise used to return the result.| **Error codes** | ID| Error Message | | -------- | ------------------------------------------------------------ | | 16000001 | The specified ability does not exist. | | 16000002 | Incorrect ability type. | | 16000004 | Can not start invisible component. | | 16000005 | The specified process does not have the permission. | | 16000006 | Cross-user operations are not allowed. | | 16000008 | The crowdtesting application expires. | | 16000009 | An ability cannot be started or stopped in Wukong mode. | | 16000011 | The context does not exist. | | 16000050 | Internal error. | | 16000053 | The ability is not on the top of the UI. | | 16000055 | Installation-free timed out. | | 16200001 | The caller has been released. | | 16300003 | The target application is not self application. | For details about the error codes, see [Ability Error Codes](../errorcodes/errorcode-ability.md). **Example** ```ts import CommonEventManager from '@ohos.commonEventManager'; import Want from '@ohos.app.ability.Want'; import { BusinessError } from '@ohos.base'; let want: Want = { bundleName: "com.example.myapp", abilityName: "MyAbility" }; class MyStaticSubscriberExtensionAbility extends StaticSubscriberExtensionAbility { onReceiveEvent(event: CommonEventManager.CommonEventData) { console.log(`onReceiveEvent, event: ${JSON.stringify(event)}`); try { this.context.startAbility(want) .then(() => { // Carry out normal service processing. console.log('startAbility succeed'); }) .catch((error: BusinessError) => { // Process service logic errors. console.log('startAbility failed, error.code: ' + JSON.stringify(error.code) + ' error.message: ' + JSON.stringify(error.message)); }); } catch (paramError) { // Process input parameter errors. let code = (paramError as BusinessError).code; let message = (paramError as BusinessError).message; console.log('startAbility failed, error.code: ' + JSON.stringify(code) + ' error.message: ' + JSON.stringify(message)); } } } ```