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