• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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&lt;void&gt;): 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&lt;void&gt;           | 是   | 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&lt;void&gt;
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&lt;void&gt; | 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  ```