1# @ohos.application.StaticSubscriberExtensionContext (StaticSubscriberExtensionContext) 2<!--Kit: Basic Services Kit--> 3<!--Subsystem: Notification--> 4<!--Owner: @michael_woo888--> 5<!--Designer: @dongqingran; @wulong158--> 6<!--Tester: @wanghong1997--> 7<!--Adviser: @huipeizi--> 8 9StaticSubscriberExtensionContext模块是StaticSubscriberExtensionAbility的上下文环境,继承自ExtensionContext。 10 11StaticSubscriberExtensionContext模块提供StaticSubscriberExtensionAbility具有的接口和能力。 12 13> **说明:** 14> 15> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 16> 17> 本模块接口仅可在Stage模型下使用。 18> 19> 本模块接口均为系统接口。 20 21## 导入模块 22 23```ts 24import { StaticSubscriberExtensionContext } from '@kit.BasicServicesKit'; 25``` 26 27## 使用说明 28 29在使用StaticSubscriberExtensionContext的功能前,需要通过StaticSubscriberExtensionAbility获取。 30 31```ts 32import { StaticSubscriberExtensionAbility, StaticSubscriberExtensionContext } from '@kit.BasicServicesKit'; 33``` 34 35## StaticSubscriberExtensionContext.startAbility 36 37startAbility(want: Want, callback: AsyncCallback<void>): void 38 39拉起一个静态订阅所属的同应用的Ability。使用callback异步回调。 40 41使用规则: 42 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 43 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 44 45**需要权限**:ohos.permission.START_ABILITIES_FROM_BACKGROUND 46 47**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 48 49**系统接口**:此接口为系统接口。 50 51**参数:** 52 53| 参数名 | 类型 | 必填 | 说明 | 54| -------- | ----------------------------------- | ---- | -------------------------- | 55| want | [Want](../apis-ability-kit/js-apis-wantAgent.md) | 是 | 启动Ability的want信息。 | 56| callback | AsyncCallback<void> | 是 | callback形式返回启动结果。 | 57 58**错误码:** 59 60以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](../apis-ability-kit/errorcode-ability.md)。 61 62| 错误码ID | 错误信息 | 63| -------- | ------------------------------------------------------------ | 64| 201 | The application does not have permission to call the interface. | 65| 202 | The application is not system-app, can not use system-api. | 66| 401 | Params error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | 67| 16000001 | The specified ability does not exist. | 68| 16000002 | Incorrect ability type. | 69| 16000004 | Cannot start an invisible component. | 70| 16000005 | The specified process does not have the permission. | 71| 16000006 | Cross-user operations are not allowed. | 72| 16000008 | The crowdtesting application expires. | 73| 16000009 | An ability cannot be started or stopped in Wukong mode. | 74| 16000011 | The context does not exist. | 75| 16000050 | Internal error. | 76| 16000053 | The ability is not on the top of the UI. | 77| 16000055 | Installation-free timed out. | 78| 16200001 | The caller has been released. | 79| 16300003 | The target application is not the current application. | 80 81**示例:** 82 83 ```ts 84import { commonEventManager, BusinessError } from '@kit.BasicServicesKit'; 85import { Want } from '@kit.AbilityKit'; 86 87let want: Want = { 88 bundleName: "com.example.myapp", 89 abilityName: "MyAbility" 90}; 91 92class MyStaticSubscriberExtensionAbility extends StaticSubscriberExtensionAbility { 93 onReceiveEvent(event: commonEventManager.CommonEventData) { 94 console.info(`onReceiveEvent, event: ${JSON.stringify(event)}`); 95 96 try { 97 this.context.startAbility(want, (error: BusinessError) => { 98 if (error) { 99 // 处理业务逻辑错误 100 console.error(`startAbility failed, error.code: ${JSON.stringify(error.code)}, error.message: ${JSON.stringify(error.message)}.`); 101 return; 102 } 103 // 执行正常业务 104 console.info('startAbility succeed'); 105 }); 106 } catch (paramError) { 107 // 处理入参错误异常 108 let code = (paramError as BusinessError).code; 109 let message = (paramError as BusinessError).message; 110 console.error(`startAbility failed, error.code: ${JSON.stringify(code)}, error.message: ${JSON.stringify(message)}.`); 111 } 112 } 113} 114 ``` 115 116## StaticSubscriberExtensionContext.startAbility 117 118startAbility(want: Want): Promise<void> 119 120拉起一个静态订阅所属的同应用的Ability。使用Promise异步回调。 121 122使用规则: 123 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限 124 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限 125 126**需要权限**:ohos.permission.START_ABILITIES_FROM_BACKGROUND 127 128**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 129 130**系统接口**:此接口为系统接口。 131 132**参数:** 133 134| 参数名 | 类型 | 必填 | 说明 | 135| ------ | ----------------------------------- | ---- | ----------------------- | 136| want | [Want](../apis-ability-kit/js-apis-wantAgent.md) | 是 | 启动Ability的want信息。 | 137 138**返回值:** 139 140| 类型 | 说明 | 141| ------------------- | ------------------------- | 142| Promise<void> | Promise形式返回启动结果。 | 143 144**错误码:** 145 146以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](../apis-ability-kit/errorcode-ability.md)。 147 148| 错误码ID | 错误信息 | 149| -------- | ------------------------------------------------------------ | 150| 201 | The application does not have permission to call the interface. | 151| 202 | The application is not system-app, can not use system-api. | 152| 401 | Params error. Possible causes: 1.Mandatory parameters are left unspecified. 2.Incorrect parameter types. | 153| 16000001 | The specified ability does not exist. | 154| 16000002 | Incorrect ability type. | 155| 16000004 | Cannot start an invisible component. | 156| 16000005 | The specified process does not have the permission. | 157| 16000006 | Cross-user operations are not allowed. | 158| 16000008 | The crowdtesting application expires. | 159| 16000009 | An ability cannot be started or stopped in Wukong mode. | 160| 16000011 | The context does not exist. | 161| 16000050 | Internal error. | 162| 16000053 | The ability is not on the top of the UI. | 163| 16000055 | Installation-free timed out. | 164| 16200001 | The caller has been released. | 165| 16300003 | The target application is not the current application. | 166 167**示例:** 168 169 ```ts 170import { commonEventManager, BusinessError } from '@kit.BasicServicesKit'; 171import { Want } from '@kit.AbilityKit'; 172 173let want: Want = { 174 bundleName: "com.example.myapp", 175 abilityName: "MyAbility" 176}; 177 178class MyStaticSubscriberExtensionAbility extends StaticSubscriberExtensionAbility { 179 onReceiveEvent(event: commonEventManager.CommonEventData) { 180 console.info(`onReceiveEvent, event: ${JSON.stringify(event)}`); 181 try { 182 this.context.startAbility(want) 183 .then(() => { 184 // 执行正常业务 185 console.info('startAbility succeed'); 186 }) 187 .catch((error: BusinessError) => { 188 // 处理业务逻辑错误 189 console.error(`startAbility failed, error.code: ${JSON.stringify(error.code)}, error.message: ${JSON.stringify(error.message)}.`); 190 }); 191 } catch (paramError) { 192 // 处理入参错误异常 193 let code = (paramError as BusinessError).code; 194 let message = (paramError as BusinessError).message; 195 console.error(`startAbility failed, error.code: ${JSON.stringify(code)}, error.message: ${JSON.stringify(message)}.`); 196 } 197 } 198} 199 ```