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  ```