js-apis-ability-context.md 63.1 KB
Newer Older
1 2
# AbilityContext

Y
yuyaozhi 已提交
3 4
AbilityContext是Ability的上下文环境,继承自Context。

H
HuangXW 已提交
5
AbilityContext模块提供允许访问特定Ability的资源的能力,包括对Ability的启动、停止的设置、获取caller通信接口、拉起弹窗请求用户授权等。
Y
yuyaozhi 已提交
6

Y
yuyaozhi 已提交
7
> **说明:**
Z
zhangyafei.echo 已提交
8
>
H
HuangXW 已提交
9 10
>  - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
>  - 本模块接口仅可在Stage模型下使用。
11

ahjxliubao2's avatar
ahjxliubao2 已提交
12 13
## 使用说明

R
RayShih 已提交
14 15
在使用AbilityContext的功能前,需要通过Ability子类实例获取。

16 17
```ts
import Ability from '@ohos.app.ability.UIAbility';
H
HuangXW 已提交
18 19

 let context = undefined;
ahjxliubao2's avatar
ahjxliubao2 已提交
20 21
class MainAbility extends Ability {
    onWindowStageCreate(windowStage) {
H
HuangXW 已提交
22
        context = this.context;
ahjxliubao2's avatar
ahjxliubao2 已提交
23 24 25 26
    }
}
```

27 28
## 属性

29 30
**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core

D
merge  
donglin 已提交
31
| 名称 | 类型 | 可读 | 可写 | 说明 |
32
| -------- | -------- | -------- | -------- | -------- |
M
m00512953 已提交
33 34
| abilityInfo | [AbilityInfo](js-apis-bundleManager-abilityInfo.md) | 是 | 否 | Abilityinfo相关信息 |
| currentHapModuleInfo | [HapModuleInfo](js-apis-bundleManager-hapModuleInfo.md) | 是 | 否 | 当前hap包的信息 |
M
m00512953 已提交
35
| config | [Configuration](js-apis-application-configuration.md) | 是 | 否 | 表示配置信息。 |
36

Y
yuyaozhi 已提交
37
## AbilityContext.startAbility
38

Y
yuyaozhi 已提交
39
startAbility(want: Want, callback: AsyncCallback<void>): void;
40

41
启动Ability(callback形式)。
42

M
m00512953 已提交
43 44
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
45
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
46 47
 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)

Y
yuyaozhi 已提交
48
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
49

Y
yuyaozhi 已提交
50
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
51

G
guyuanzhang 已提交
52 53
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
54
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
G
guyuanzhang 已提交
55
| callback | AsyncCallback<void> | 是 | callback形式返回启动结果 |
56

H
HuangXW 已提交
57 58 59 60
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
61
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
62
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
63

Y
yuyaozhi 已提交
64 65
**示例:**

66
  ```ts
67
  var want = {
68 69
    bundleName: "com.example.myapp",
    abilityName: "MyAbility"
70
  };
H
HuangXW 已提交
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87

  try {
    this.context.startAbility(want, (error) => {
      if (error.code) {
        // 处理业务逻辑错误
        console.log('startAbility failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
        return;
      }
      // 执行正常业务
      console.log('startAbility succeed');
    });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
88 89 90
  ```


Y
yuyaozhi 已提交
91
## AbilityContext.startAbility
92

Y
yuyaozhi 已提交
93
startAbility(want: Want, options: StartOptions, callback: AsyncCallback<void>): void;
ahjxliubao2's avatar
ahjxliubao2 已提交
94

95
启动Ability(callback形式)。
ahjxliubao2's avatar
ahjxliubao2 已提交
96

M
m00512953 已提交
97 98
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
99
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
100 101
 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)

Y
yuyaozhi 已提交
102
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
103

Y
yuyaozhi 已提交
104
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
105

G
guyuanzhang 已提交
106 107
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
108 109
| want | [Want](js-apis-application-want.md)  | 是 | 启动Ability的want信息。 |
| options | [StartOptions](js-apis-application-startOptions.md) | 是 | 启动Ability所携带的参数。 |
G
guyuanzhang 已提交
110
| callback | AsyncCallback<void> | 是 | callback形式返回启动结果。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
111

H
HuangXW 已提交
112 113
**错误码:**

114
| 错误码ID | 错误信息 |
H
HuangXW 已提交
115
| ------- | -------------------------------- |
D
ability  
donglin 已提交
116
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
117
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
118

Y
yuyaozhi 已提交
119
**示例:**
Z
zhangyafei.echo 已提交
120

121
  ```ts
ahjxliubao2's avatar
ahjxliubao2 已提交
122
  var want = {
123 124 125
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
ahjxliubao2's avatar
ahjxliubao2 已提交
126 127
  };
  var options = {
H
HuangXW 已提交
128
    windowMode: 0
ahjxliubao2's avatar
ahjxliubao2 已提交
129 130
  };

H
HuangXW 已提交
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
  try {
    this.context.startAbility(want, options, (error) => {
      if (error.code) {
        // 处理业务逻辑错误
        console.log('startAbility failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
        return;
      }
      // 执行正常业务
      console.log('startAbility succeed');
    });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
  ```
ahjxliubao2's avatar
ahjxliubao2 已提交
148

Y
yuyaozhi 已提交
149
## AbilityContext.startAbility
ahjxliubao2's avatar
ahjxliubao2 已提交
150

Y
yuyaozhi 已提交
151
startAbility(want: Want, options?: StartOptions): Promise<void>;
152

153
启动Ability(promise形式)。
154

M
m00512953 已提交
155 156
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
157
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
158 159
 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)

Y
yuyaozhi 已提交
160
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
161

Y
yuyaozhi 已提交
162
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
163

G
guyuanzhang 已提交
164 165
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
166 167
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
| options | [StartOptions](js-apis-application-startOptions.md) | 否 | 启动Ability所携带的参数。 |
168

Y
yuyaozhi 已提交
169 170
**返回值:**

G
guyuanzhang 已提交
171 172 173
| 类型 | 说明 |
| -------- | -------- |
| Promise<void> | Promise形式返回启动结果。 |
174

H
HuangXW 已提交
175 176 177 178
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
179
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
180
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
181

Y
yuyaozhi 已提交
182 183
**示例:**

184
  ```ts
185
  var want = {
186 187
    bundleName: "com.example.myapp",
    abilityName: "MyAbility"
188
  };
ahjxliubao2's avatar
ahjxliubao2 已提交
189 190 191
  var options = {
  	windowMode: 0,
  };
H
HuangXW 已提交
192 193 194 195 196 197 198 199 200

  try {
    this.context.startAbility(want, options)
      .then((data) => {
        // 执行正常业务
        console.log('startAbility succeed');
      })
      .catch((error) => {
        // 处理业务逻辑错误
201 202
        console.log('startAbility failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
H
HuangXW 已提交
203 204 205 206 207 208
      });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
209 210 211
  ```


Y
yuyaozhi 已提交
212
## AbilityContext.startAbilityForResult
213

214
startAbilityForResult(want: Want, callback: AsyncCallback<AbilityResult>): void;
215

M
m00512953 已提交
216
启动一个Ability。Ability被启动后,正常情况下可通过调用[terminateSelfWithResult](#abilitycontextterminateselfwithresult)接口使之终止并且返回结果给调用者。异常情况下比如杀死Ability会返回异常信息给调用者(callback形式)。
217

M
m00512953 已提交
218 219
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
220
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
221 222
 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)

Y
yuyaozhi 已提交
223
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
224

Y
yuyaozhi 已提交
225
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
226

G
guyuanzhang 已提交
227 228
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
229 230
| want |[Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
| callback | AsyncCallback<[AbilityResult](js-apis-inner-ability-abilityResult.md)> | 是 | 执行结果回调函数。 |
231

H
HuangXW 已提交
232 233 234 235
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
236
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
237
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
238

Y
yuyaozhi 已提交
239 240
**示例:**

241
  ```ts
H
HuangXW 已提交
242
  var want = {
243 244 245
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
H
HuangXW 已提交
246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264
  };

  try {
    this.context.startAbilityForResult(want, (error, result) => {
      if (error.code) {
        // 处理业务逻辑错误
        console.log('startAbilityForResult failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
        return;
      }
      // 执行正常业务
      console.log("startAbilityForResult succeed, result.resultCode = " +
        result.resultCode)
    });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
265 266
  ```

Y
yuyaozhi 已提交
267
## AbilityContext.startAbilityForResult
ahjxliubao2's avatar
ahjxliubao2 已提交
268 269 270

startAbilityForResult(want: Want, options: StartOptions, callback: AsyncCallback<AbilityResult>): void;

M
m00512953 已提交
271
启动一个Ability。Ability被启动后,正常情况下可通过调用[terminateSelfWithResult](#abilitycontextterminateselfwithresult)接口使之终止并且返回结果给调用者。异常情况下比如杀死Ability会返回异常信息给调用者(callback形式)。
ahjxliubao2's avatar
ahjxliubao2 已提交
272

M
m00512953 已提交
273 274
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
275
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
276 277
 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)

Y
yuyaozhi 已提交
278
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
279

Y
yuyaozhi 已提交
280
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
281

G
guyuanzhang 已提交
282 283
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
284 285 286
| want |[Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
| options | [StartOptions](js-apis-application-startOptions.md) | 是 | 启动Ability所携带的参数。 |
| callback | AsyncCallback<[AbilityResult](js-apis-inner-ability-abilityResult.md)> | 是 | 执行结果回调函数。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
287

H
HuangXW 已提交
288 289 290 291
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
292
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
293
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
ahjxliubao2's avatar
ahjxliubao2 已提交
294

Y
yuyaozhi 已提交
295 296
**示例:**

297
  ```ts
H
HuangXW 已提交
298
  var want = {
299 300 301
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
H
HuangXW 已提交
302
  };
ahjxliubao2's avatar
ahjxliubao2 已提交
303 304 305
  var options = {
    windowMode: 0,
  };
H
HuangXW 已提交
306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323

  try {
    this.context.startAbilityForResult(want, options, (error, result) => {
      if (error.code) {
        // 处理业务逻辑错误
        console.log('startAbilityForResult failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
        return;
      }
      // 执行正常业务
      console.log("startAbilityForResult succeed, result.resultCode = " +
        result.resultCode)
    });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
ahjxliubao2's avatar
ahjxliubao2 已提交
324 325
  ```

326

Y
yuyaozhi 已提交
327
## AbilityContext.startAbilityForResult
328

Y
yuyaozhi 已提交
329
startAbilityForResult(want: Want, options?: StartOptions): Promise<AbilityResult>;
330

M
m00512953 已提交
331
启动一个Ability。Ability被启动后,正常情况下可通过调用[terminateSelfWithResult](#abilitycontextterminateselfwithresult)接口使之终止并且返回结果给调用者。异常情况下比如杀死Ability会返回异常信息给调用者(promise形式)。
332

M
m00512953 已提交
333 334
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
335
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
336 337
 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)

Y
yuyaozhi 已提交
338
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
339

Y
yuyaozhi 已提交
340
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
341

G
guyuanzhang 已提交
342 343
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
344 345
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
| options | [StartOptions](js-apis-application-startOptions.md) | 否 | 启动Ability所携带的参数。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
346

347

Y
yuyaozhi 已提交
348 349
**返回值:**

G
guyuanzhang 已提交
350 351
| 类型 | 说明 |
| -------- | -------- |
M
m00512953 已提交
352
| Promise<[AbilityResult](js-apis-inner-ability-abilityResult.md)> | Promise形式返回执行结果。 |
353

H
HuangXW 已提交
354 355 356 357
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
358
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
359
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
360

Y
yuyaozhi 已提交
361 362
**示例:**

363
  ```ts
H
HuangXW 已提交
364
  var want = {
365 366
    bundleName: "com.example.myapp",
    abilityName: "MyAbility"
H
HuangXW 已提交
367
  };
ahjxliubao2's avatar
ahjxliubao2 已提交
368
  var options = {
H
HuangXW 已提交
369
  	windowMode: 0,
ahjxliubao2's avatar
ahjxliubao2 已提交
370
  };
H
HuangXW 已提交
371 372 373 374 375 376 377 378 379

  try {
    this.context.startAbilityForResult(want, options)
      .then((result) => {
        // 执行正常业务
        console.log("startAbilityForResult succeed, result.resultCode = " + result.resultCode);
      })
      .catch((error) => {
        // 处理业务逻辑错误
380 381
        console.log('startAbilityForResult failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
H
HuangXW 已提交
382 383 384 385 386 387
      });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
388 389
  ```

390 391
## AbilityContext.startAbilityForResultWithAccount

Y
yuyaozhi 已提交
392
startAbilityForResultWithAccount(want: Want, accountId: number, callback: AsyncCallback\<AbilityResult>): void;
393 394 395

启动一个Ability并在该Ability帐号销毁时返回执行结果(callback形式)。

M
m00512953 已提交
396 397
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
398
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
399 400
 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)

D
donglin 已提交
401
**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS,当accountId为当前用户时,不需要校验该权限。
402 403 404 405 406 407 408 409 410

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
411
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
412
| accountId | number | 是 | 系统帐号的帐号ID,详情参考[getCreatedOsAccountsCount](js-apis-osAccount.md#getosaccountlocalidfromprocess)。 |
M
m00512953 已提交
413
| callback | AsyncCallback\<[AbilityResult](js-apis-inner-ability-abilityResult.md)\> | 是 | 启动Ability的回调函数,返回Ability结果。 |
414

H
HuangXW 已提交
415 416 417 418
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
419
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
420
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
421

422 423
**示例:**

424
  ```ts
425
  var want = {
426 427 428
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
429 430
  };
  var accountId = 100;
H
HuangXW 已提交
431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448

  try {
    this.context.startAbilityForResultWithAccount(want, accountId, (error, result) => {
      if (error.code) {
        // 处理业务逻辑错误
        console.log('startAbilityForResultWithAccount failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
        return;
      }
      // 执行正常业务
      console.log("startAbilityForResultWithAccount succeed, result.resultCode = " +
        result.resultCode)
    });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
449 450 451 452 453 454 455 456 457
  ```


## AbilityContext.startAbilityForResultWithAccount

startAbilityForResultWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback\<void\>): void;

启动一个Ability并在该Ability帐号销毁时返回执行结果(callback形式)。

M
m00512953 已提交
458 459
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
460
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
461 462
 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)

D
donglin 已提交
463
**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS,当accountId为当前用户时,不需要校验该权限。
464 465 466 467 468 469 470 471 472

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
473
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
474
| accountId | number | 是 | 系统帐号的帐号ID,详情参考[getCreatedOsAccountsCount](js-apis-osAccount.md#getosaccountlocalidfromprocess)。 |
M
m00512953 已提交
475
| options | [StartOptions](js-apis-application-startOptions.md) | 是 | 启动Ability所携带的参数。 |
476 477
| callback | AsyncCallback\<void\> | 是 | 启动Ability的回调函数。 |

H
HuangXW 已提交
478 479 480 481
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
482
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
483
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
484

485 486
**示例:**

487
  ```ts
488
  var want = {
489 490 491
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
492 493 494
  };
  var accountId = 100;
  var options = {
H
HuangXW 已提交
495
    windowMode: 0
496
  };
H
HuangXW 已提交
497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514

  try {
    this.context.startAbilityForResultWithAccount(want, accountId, options, (error, result) => {
      if (error.code) {
        // 处理业务逻辑错误
        console.log('startAbilityForResultWithAccount failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
        return;
      }
      // 执行正常业务
      console.log("startAbilityForResultWithAccount succeed, result.resultCode = " +
        result.resultCode)
    });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
515 516 517
  ```


518
## AbilityContext.startAbilityForResultWithAccount
519 520 521

startAbilityForResultWithAccount(want: Want, accountId: number, options?: StartOptions): Promise\<AbilityResult\>;

522
启动一个Ability并在该Ability帐号销毁时返回执行结果(promise形式)。
523

M
m00512953 已提交
524 525
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
526
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
527 528
 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)

D
donglin 已提交
529
**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS,当accountId为当前用户时,不需要校验该权限。
530 531 532 533 534 535 536 537 538

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
539
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
540
| accountId | number | 是 | 系统帐号的帐号ID,详情参考[getCreatedOsAccountsCount](js-apis-osAccount.md#getosaccountlocalidfromprocess)。 |
M
m00512953 已提交
541
| options | [StartOptions](js-apis-application-startOptions.md) | 否 | 启动Ability所携带的参数。 |
542 543 544 545 546

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
M
m00512953 已提交
547
| Promise&lt;[AbilityResult](js-apis-inner-ability-abilityResult.md)&gt; | 返回一个Promise,包含Ability结果。 |
548

H
HuangXW 已提交
549 550 551 552
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
553
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
554
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
555

556 557
**示例:**

558
  ```ts
559
  var want = {
560 561 562
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
563 564 565
  };
  var accountId = 100;
  var options = {
H
HuangXW 已提交
566
    windowMode: 0
567
  };
H
HuangXW 已提交
568 569 570 571 572 573 574 575 576 577

  try {
    this.context.startAbilityForResultWithAccount(want, accountId, options)
      .then((result) => {
        // 执行正常业务
        console.log("startAbilityForResultWithAccount succeed, result.resultCode = " +
          result.resultCode)
      })
      .catch((error) => {
        // 处理业务逻辑错误
578 579
        console.log('startAbilityForResultWithAccount failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
H
HuangXW 已提交
580 581 582 583 584 585
      });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
586
  ```
587 588 589 590 591 592 593 594 595 596 597 598 599 600
## AbilityContext.startServiceExtensionAbility

startServiceExtensionAbility(want: Want, callback: AsyncCallback\<void>): void;

启动一个新的ServiceExtensionAbility(callback形式)。

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
601
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
602 603
| callback | AsyncCallback\<void\> | 是 | 启动Ability的回调函数。 |

H
HuangXW 已提交
604 605 606 607
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
608
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
609
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
610

611 612
**示例:**

613
  ```ts
614
  var want = {
615 616 617
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
618
  };
H
HuangXW 已提交
619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635

  try {
    this.context.startServiceExtensionAbility(want, (error) => {
      if (error.code) {
        // 处理业务逻辑错误
        console.log('startServiceExtensionAbility failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
        return;
      }
      // 执行正常业务
      console.log('startServiceExtensionAbility succeed');
    });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651
  ```

## AbilityContext.startServiceExtensionAbility

startServiceExtensionAbility(want: Want): Promise\<void>;

启动一个新的ServiceExtensionAbility(Promise形式)。

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
652
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
653

H
HuangXW 已提交
654 655 656 657
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
658
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
659
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
660

661 662
**示例:**

663
  ```ts
664
  var want = {
665 666 667
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
668
  };
H
HuangXW 已提交
669 670 671 672 673 674 675 676 677

  try {
    this.context.startServiceExtensionAbility(want)
      .then((data) => {
        // 执行正常业务
        console.log('startServiceExtensionAbility succeed');
      })
      .catch((error) => {
        // 处理业务逻辑错误
678 679
        console.log('startServiceExtensionAbility failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
H
HuangXW 已提交
680 681 682 683 684 685
      });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
686
  ```
H
HuangXW 已提交
687

688 689 690 691 692 693
## AbilityContext.startServiceExtensionAbilityWithAccount

startServiceExtensionAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback\<void>): void;

启动一个新的ServiceExtensionAbility(callback形式)。

D
donglin 已提交
694
**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS,当accountId为当前用户时,不需要校验该权限。
695 696 697 698 699 700 701 702 703

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
704
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
705
| accountId | number | 是 | 系统帐号的帐号ID,详情参考[getCreatedOsAccountsCount](js-apis-osAccount.md#getosaccountlocalidfromprocess)。 |
706 707
| callback | AsyncCallback\<void\> | 是 | 启动Ability的回调函数。 |

H
HuangXW 已提交
708 709 710 711
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
712
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
713
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
714

715 716
**示例:**

717
  ```ts
718
  var want = {
719 720 721
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
722 723
  };
  var accountId = 100;
H
HuangXW 已提交
724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740

  try {
    this.context.startServiceExtensionAbilityWithAccount(want, accountId, (error) => {
      if (error.code) {
        // 处理业务逻辑错误
        console.log('startServiceExtensionAbilityWithAccount failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
        return;
      }
      // 执行正常业务
      console.log('startServiceExtensionAbilityWithAccount succeed');
    });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
741 742 743 744 745 746 747 748
  ```

## AbilityContext.startServiceExtensionAbilityWithAccount

startServiceExtensionAbilityWithAccount(want: Want, accountId: number): Promise\<void>;

启动一个新的ServiceExtensionAbility(Promise形式)。

D
donglin 已提交
749
**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS,当accountId为当前用户时,不需要校验该权限。
750 751 752 753 754 755 756 757 758

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
759
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
760
| accountId | number | 是 | 系统帐号的帐号ID,详情参考[getCreatedOsAccountsCount](js-apis-osAccount.md#getosaccountlocalidfromprocess)。 |
761

H
HuangXW 已提交
762 763 764 765
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
766
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
767
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
768

769 770
**示例:**

771
  ```ts
772
  var want = {
773 774 775
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
776 777
  };
  var accountId = 100;
H
HuangXW 已提交
778 779 780 781 782 783 784 785 786

  try {
    this.context.startServiceExtensionAbilityWithAccount(want, accountId)
      .then((data) => {
        // 执行正常业务
        console.log('startServiceExtensionAbilityWithAccount succeed');
      })
      .catch((error) => {
        // 处理业务逻辑错误
787 788
        console.log('startServiceExtensionAbilityWithAccount failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
H
HuangXW 已提交
789 790 791 792 793 794
      });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
795 796
  ```
## AbilityContext.stopServiceExtensionAbility
797

798 799 800 801 802 803 804 805 806 807 808 809
stopServiceExtensionAbility(want: Want, callback: AsyncCallback\<void>): void;

停止同一应用程序内的服务(callback形式)。

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
810
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
811 812
| callback | AsyncCallback\<void\> | 是 | 启动Ability的回调函数。 |

H
HuangXW 已提交
813 814 815 816
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
817
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
818
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
819

820 821
**示例:**

822
  ```ts
823
  var want = {
824 825 826
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
827
  };
H
HuangXW 已提交
828 829

  try {
D
donglin 已提交
830 831 832 833 834 835
    this.context.startAbility(want, (error) => {
      if (error.code != 0) {
        console.log("start ability fail, err: " + JSON.stringify(err));
      }
    })

H
HuangXW 已提交
836
    this.context.stopServiceExtensionAbility(want, (error) => {
D
donglin 已提交
837
      if (error.code != 0) {
H
HuangXW 已提交
838 839 840 841 842 843 844 845 846 847 848 849 850
        // 处理业务逻辑错误
        console.log('stopServiceExtensionAbility failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
        return;
      }
      // 执行正常业务
      console.log('stopServiceExtensionAbility succeed');
    });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866
  ```

## AbilityContext.stopServiceExtensionAbility

stopServiceExtensionAbility(want: Want): Promise\<void>;

停止同一应用程序内的服务(Promise形式)。

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
867
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
868

H
HuangXW 已提交
869 870 871 872
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
873
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
874
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
875

876 877
**示例:**

878
  ```ts
879
  var want = {
880 881 882
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
883
  };
H
HuangXW 已提交
884 885

  try {
D
donglin 已提交
886 887 888 889 890 891
    this.context.startAbility(want, (error) => {
      if (error.code != 0) {
        console.log("start ability fail, err: " + JSON.stringify(err));
      }
    })

H
HuangXW 已提交
892 893 894 895 896 897 898
    this.context.stopServiceExtensionAbility(want)
      .then((data) => {
        // 执行正常业务
        console.log('stopServiceExtensionAbility succeed');
      })
      .catch((error) => {
        // 处理业务逻辑错误
899 900
        console.log('stopServiceExtensionAbility failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
H
HuangXW 已提交
901 902 903 904 905 906
      });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
907 908 909 910 911 912 913 914
  ```

## AbilityContext.stopServiceExtensionAbilityWithAccount

stopServiceExtensionAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback\<void>): void;

使用帐户停止同一应用程序内的服务(callback形式)。

D
donglin 已提交
915
**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS,当accountId为当前用户时,不需要校验该权限。
916 917 918 919 920 921 922 923 924

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
925
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
926
| accountId | number | 是 | 系统帐号的帐号ID,详情参考[getCreatedOsAccountsCount](js-apis-osAccount.md#getosaccountlocalidfromprocess)。 |
927 928
| callback | AsyncCallback\<void\> | 是 | 启动Ability的回调函数。 |

H
HuangXW 已提交
929 930 931 932
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
933
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
934
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
935

936 937
**示例:**

938
  ```ts
939
  var want = {
940 941 942
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
943 944
  };
  var accountId = 100;
H
HuangXW 已提交
945 946

  try {
D
donglin 已提交
947 948 949 950 951 952
    this.context.startAbilityWithAccount(want, accountId, (error) => {
      if (error.code != 0) {
        console.log("start ability fail, err: " + JSON.stringify(err));
      }
    })

H
HuangXW 已提交
953 954 955 956 957 958 959 960 961 962 963 964 965 966 967
    this.context.stopServiceExtensionAbilityWithAccount(want, accountId, (error) => {
      if (error.code) {
        // 处理业务逻辑错误
        console.log('stopServiceExtensionAbilityWithAccount failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
        return;
      }
      // 执行正常业务
      console.log('stopServiceExtensionAbilityWithAccount succeed');
    });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
968 969 970 971 972 973 974 975
  ```

## AbilityContext.stopServiceExtensionAbilityWithAccount

stopServiceExtensionAbilityWithAccount(want: Want, accountId: number): Promise\<void>;

使用帐户停止同一应用程序内的服务(Promise形式)。

D
donglin 已提交
976
**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS,当accountId为当前用户时,不需要校验该权限。
977 978 979 980 981 982 983 984 985

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
986
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
987
| accountId | number | 是 | 系统帐号的帐号ID,详情参考[getCreatedOsAccountsCount](js-apis-osAccount.md#getosaccountlocalidfromprocess)。 |
988

H
HuangXW 已提交
989 990 991 992
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
993
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
994
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
995

996 997
**示例:**

998
  ```ts
999
  var want = {
1000 1001 1002
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
1003 1004
  };
  var accountId = 100;
H
HuangXW 已提交
1005 1006

  try {
D
donglin 已提交
1007 1008 1009 1010 1011 1012
    this.context.startAbilityWithAccount(want, accountId, (error) => {
      if (error.code != 0) {
        console.log("start ability fail, err: " + JSON.stringify(err));
      }
    })

H
HuangXW 已提交
1013 1014 1015 1016 1017 1018 1019
    this.context.stopServiceExtensionAbilityWithAccount(want, accountId)
      .then((data) => {
        // 执行正常业务
        console.log('stopServiceExtensionAbilityWithAccount succeed');
      })
      .catch((error) => {
        // 处理业务逻辑错误
1020 1021
        console.log('stopServiceExtensionAbilityWithAccount failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
H
HuangXW 已提交
1022 1023 1024 1025 1026 1027
      });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
1028
  ```
1029

Y
yuyaozhi 已提交
1030
## AbilityContext.terminateSelf
1031

1032
terminateSelf(callback: AsyncCallback&lt;void&gt;): void;
1033

1034
停止Ability自身(callback形式)。
1035

Y
yuyaozhi 已提交
1036
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
1037

Y
yuyaozhi 已提交
1038
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
1039

G
guyuanzhang 已提交
1040 1041 1042
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数,返回接口调用是否成功的结果。 |
1043

H
HuangXW 已提交
1044 1045 1046 1047
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
1048
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
1049
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
1050

Y
yuyaozhi 已提交
1051 1052
**示例:**

1053
  ```ts
H
HuangXW 已提交
1054 1055 1056 1057 1058 1059 1060 1061 1062
  this.context.terminateSelf((error) => {
    if (error.code) {
      // 处理业务逻辑错误
      console.log('terminateSelf failed, error.code: ' + JSON.stringify(error.code) +
        ' error.message: ' + JSON.stringify(error.message));
      return;
    }
    // 执行正常业务
    console.log('terminateSelf succeed');
ahjxliubao2's avatar
ahjxliubao2 已提交
1063
  });
1064 1065 1066
  ```


Y
yuyaozhi 已提交
1067
## AbilityContext.terminateSelf
1068

1069
terminateSelf(): Promise&lt;void&gt;;
1070

1071
停止Ability自身(promise形式)。
1072

Y
yuyaozhi 已提交
1073
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
1074

Y
yuyaozhi 已提交
1075
**返回值:**
ahjxliubao2's avatar
ahjxliubao2 已提交
1076

G
guyuanzhang 已提交
1077 1078 1079
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;void&gt; | 返回一个Promise,包含接口的结果。 |
1080

H
HuangXW 已提交
1081 1082 1083 1084
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
1085
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
1086
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
1087

Y
yuyaozhi 已提交
1088 1089
**示例:**

1090
  ```ts
H
HuangXW 已提交
1091 1092 1093
  this.context.terminateSelf().then((data) => {
    // 执行正常业务
    console.log('terminateSelf succeed');
ahjxliubao2's avatar
ahjxliubao2 已提交
1094
  }).catch((error) => {
H
HuangXW 已提交
1095 1096 1097
    // 处理业务逻辑错误
    console.log('terminateSelf failed, error.code: ' + JSON.stringify(error.code) +
      ' error.message: ' + JSON.stringify(error.message));
1098 1099 1100 1101
  });
  ```


Y
yuyaozhi 已提交
1102
## AbilityContext.terminateSelfWithResult
1103

1104
terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback&lt;void&gt;): void;
1105

M
m00512953 已提交
1106
停止当前的Ability。如果该Ability是通过调用[startAbilityForResult](#abilitycontextstartabilityforresult)接口被拉起的,调用terminateSelfWithResult接口时会将结果返回给调用者,如果该Ability不是通过调用[startAbilityForResult](#abilitycontextstartabilityforresult)接口被拉起的,调用terminateSelfWithResult接口时不会有结果返回给调用者(callback形式)。
1107

Y
yuyaozhi 已提交
1108
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
1109

Y
yuyaozhi 已提交
1110
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
1111

G
guyuanzhang 已提交
1112 1113
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
1114
| parameter | [AbilityResult](js-apis-inner-ability-abilityResult.md) | 是 | 返回给调用startAbilityForResult&nbsp;接口调用方的相关信息。 |
G
guyuanzhang 已提交
1115
| callback | AsyncCallback&lt;void&gt; | 是 | callback形式返回停止结果。 |
1116

1117 1118 1119 1120
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
1121
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
1122
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
1123

Y
yuyaozhi 已提交
1124 1125
**示例:**

1126
  ```ts
1127
  var want = {
1128 1129
    bundleName: "com.extreme.myapplication",
    abilityName: "SecondAbility"
1130 1131 1132 1133 1134 1135 1136
  }
  var resultCode = 100;
  // 返回给接口调用方AbilityResult信息
  var abilityResult = {
    want,
    resultCode
  }
1137 1138 1139 1140 1141 1142 1143 1144

  try {
    this.context.terminateSelfWithResult(abilityResult, (error) => {
      if (error.code) {
        // 处理业务逻辑错误
        console.log('terminateSelfWithResult failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
        return;
1145
      }
1146 1147 1148 1149 1150 1151 1152 1153
      // 执行正常业务
      console.log('terminateSelfWithResult succeed');
    });
  } catch (paramError) {
      // 处理入参错误异常
      console.log('error.code: ' + JSON.stringify(paramError.code) +
        ' error.message: ' + JSON.stringify(paramError.message));
  }
1154 1155 1156
  ```


Y
yuyaozhi 已提交
1157
## AbilityContext.terminateSelfWithResult
1158

1159
terminateSelfWithResult(parameter: AbilityResult): Promise&lt;void&gt;;
1160

1161
停止Ability,配合startAbilityForResult使用,返回给接口调用方AbilityResult信息(promise形式)。
M
m00512953 已提交
1162
停止当前的Ability。如果该Ability是通过调用[startAbilityForResult](#abilitycontextstartabilityforresult)接口被拉起的,调用terminateSelfWithResult接口时会将结果返回给调用者,如果该Ability不是通过调用[startAbilityForResult](#abilitycontextstartabilityforresult)接口被拉起的,调用terminateSelfWithResult接口时不会有结果返回给调用者(promise形式)。
1163

Y
yuyaozhi 已提交
1164
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
1165

Y
yuyaozhi 已提交
1166
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
1167

G
guyuanzhang 已提交
1168 1169
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
1170
| parameter | [AbilityResult](js-apis-inner-ability-abilityResult.md) | 是 | 返回给startAbilityForResult&nbsp;调用方的信息。 |
1171

Y
yuyaozhi 已提交
1172 1173
**返回值:**

G
guyuanzhang 已提交
1174 1175 1176
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;void&gt; | promise形式返回停止结果。 |
1177

1178 1179 1180 1181
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
1182
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
1183
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
1184 1185


Y
yuyaozhi 已提交
1186 1187
**示例:**

1188
  ```ts
1189
  var want = {
1190 1191
    bundleName: "com.extreme.myapplication",
    abilityName: "SecondAbility"
1192 1193 1194 1195 1196 1197 1198
  }
  var resultCode = 100;
  // 返回给接口调用方AbilityResult信息
  var abilityResult = {
    want,
    resultCode
  }
1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214

  try {
    this.context.terminateSelfWithResult(abilityResult)
      .then((data) => {
        // 执行正常业务
        console.log('terminateSelfWithResult succeed');
      })
      .catch((error) => {
        // 处理业务逻辑错误
        console.log('terminateSelfWithResult failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
      });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
1215 1216
  }
  ```
ahjxliubao2's avatar
ahjxliubao2 已提交
1217

H
HuangXW 已提交
1218
## AbilityContext.connectServiceExtensionAbility
1219

H
HuangXW 已提交
1220
connectServiceExtensionAbility(want: Want, options: ConnectOptions): number;
1221

1222
使用AbilityInfo.AbilityType.SERVICE模板将当前Ability连接到一个Ability。
1223 1224 1225

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

M
m00512953 已提交
1226 1227
**系统API**: 此接口为系统接口,三方应用不支持调用。

1228 1229 1230 1231
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
1232
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
D
ability  
donglin 已提交
1233
| options | [ConnectOptions](js-apis-inner-ability-connectOptions.md) | 是 | 远端对象实例。 |
1234 1235 1236 1237 1238 1239 1240

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| number | 返回Ability连接的结果code。 |

H
HuangXW 已提交
1241 1242 1243 1244
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
1245
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
1246
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
1247

1248 1249
**示例:**

1250
  ```ts
1251
  var want = {
1252 1253 1254
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
1255 1256 1257 1258 1259 1260
  };
  var options = {
    onConnect(elementName, remote) { console.log('----------- onConnect -----------') },
    onDisconnect(elementName) { console.log('----------- onDisconnect -----------') },
    onFailed(code) { console.log('----------- onFailed -----------') }
  }
H
HuangXW 已提交
1261 1262 1263 1264 1265 1266 1267 1268 1269

  var connection = null;
  try {
    connection = this.context.connectServiceExtensionAbility(want, options);
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
1270 1271 1272
  ```


H
HuangXW 已提交
1273
## AbilityContext.connectServiceExtensionAbilityWithAccount
1274

H
HuangXW 已提交
1275
connectServiceExtensionAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number;
1276

1277
使用AbilityInfo.AbilityType.SERVICE模板和account将当前Ability连接到一个Ability。
1278

D
donglin 已提交
1279
**需要权限:** ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS,当accountId为当前用户时,不需要校验该权限。
1280 1281 1282 1283 1284 1285 1286 1287 1288

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
1289
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
1290
| accountId | number | 是 | 系统帐号的帐号ID,详情参考[getCreatedOsAccountsCount](js-apis-osAccount.md#getosaccountlocalidfromprocess)。 |
D
ability  
donglin 已提交
1291
| options | [ConnectOptions](js-apis-inner-ability-connectOptions.md) | 是 | 远端对象实例。 |
1292 1293 1294 1295 1296 1297 1298

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| number | 返回Ability连接的结果code。 |

H
HuangXW 已提交
1299 1300 1301 1302
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
1303
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
1304
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
1305

1306 1307
**示例:**

1308
  ```ts
1309
  var want = {
1310 1311 1312
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
1313 1314 1315 1316 1317 1318 1319
  };
  var accountId = 100;
  var options = {
    onConnect(elementName, remote) { console.log('----------- onConnect -----------') },
    onDisconnect(elementName) { console.log('----------- onDisconnect -----------') },
    onFailed(code) { console.log('----------- onFailed -----------') }
  }
H
HuangXW 已提交
1320 1321 1322 1323 1324 1325 1326 1327 1328

  var connection = null;
  try {
    connection = this.context.connectServiceExtensionAbilityWithAccount(want, accountId, options);
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
1329 1330
  ```

H
HuangXW 已提交
1331
## AbilityContext.disconnectServiceExtensionAbility
1332

H
HuangXW 已提交
1333
disconnectServiceExtensionAbility(connection: number): Promise\<void>;
1334

1335
断开连接(promise形式)。
1336 1337 1338 1339 1340 1341 1342

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
1343
| connection | number | 是 | 连接的Ability的数字代码。 |
1344 1345 1346 1347 1348 1349 1350

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| Promise\<void> | 返回执行结果。 |

H
HuangXW 已提交
1351 1352 1353 1354
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
1355
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
1356
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
1357

1358
**示例:**
Z
zhangyafei.echo 已提交
1359

1360
  ```ts
M
m00512953 已提交
1361
  // connection为connectServiceExtensionAbility中的返回值
H
HuangXW 已提交
1362 1363 1364 1365 1366 1367 1368 1369 1370 1371
  var connection = 1;

  try {
    this.context.disconnectServiceExtensionAbility(connection)
      .then((data) => {
        // 执行正常业务
        console.log('disconnectServiceExtensionAbility succeed');
      })
      .catch((error) => {
        // 处理业务逻辑错误
1372 1373
        console.log('disconnectServiceExtensionAbility failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
H
HuangXW 已提交
1374 1375 1376 1377 1378 1379
      });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
1380 1381
  ```

H
HuangXW 已提交
1382
## AbilityContext.disconnectServiceExtensionAbility
1383

H
HuangXW 已提交
1384
disconnectServiceExtensionAbility(connection: number, callback:AsyncCallback\<void>): void;
1385

1386
断开连接(callback形式)。
1387 1388 1389 1390 1391 1392 1393

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
1394
| connection | number | 是 | 连接的Ability的数字代码。 |
1395 1396
| callback | AsyncCallback\<void> | 是 | 表示指定的回调方法。 |

H
HuangXW 已提交
1397 1398 1399 1400
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
1401
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
1402
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
1403

1404 1405
**示例:**

1406
  ```ts
H
HuangXW 已提交
1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419
  // connection为connectServiceExtensionAbility中的返回值
  var connection = 1;

  try {
    this.context.disconnectServiceExtensionAbility(connection, (error) => {
      if (error.code) {
        // 处理业务逻辑错误
        console.log('disconnectServiceExtensionAbility failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
        return;
      }
      // 执行正常业务
      console.log('disconnectServiceExtensionAbility succeed');
1420
    });
H
HuangXW 已提交
1421 1422 1423 1424 1425
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
1426
  ```
ahjxliubao2's avatar
ahjxliubao2 已提交
1427

Y
yuyaozhi 已提交
1428
## AbilityContext.startAbilityByCall
ahjxliubao2's avatar
ahjxliubao2 已提交
1429 1430 1431

startAbilityByCall(want: Want): Promise&lt;Caller&gt;;

1432
启动指定Ability至前台或后台,同时获取其Caller通信接口,调用方可使用Caller与被启动的Ability进行通信。
ahjxliubao2's avatar
ahjxliubao2 已提交
1433

M
m00512953 已提交
1434 1435
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
1436 1437
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
 - 同设备与跨设备场景下,该接口的使用规则存在差异,详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)
M
m00512953 已提交
1438

Y
yuyaozhi 已提交
1439
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
1440

D
ability  
donglin 已提交
1441 1442
**系统API**: 此接口为系统接口,三方应用不支持调用。

Y
yuyaozhi 已提交
1443
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
1444

G
guyuanzhang 已提交
1445 1446
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
1447
| want | [Want](js-apis-application-want.md) | 是 | 传入需要启动的Ability的信息,包含abilityName、moduleName、bundleName、deviceId(可选)、parameters(可选),其中deviceId缺省或为空表示启动本地Ability,parameters缺省或为空表示后台启动Ability。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
1448

Y
yuyaozhi 已提交
1449 1450
**返回值:**

G
guyuanzhang 已提交
1451 1452 1453
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;Caller&gt; | 获取要通讯的caller对象。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
1454

Y
yuyaozhi 已提交
1455
**示例:**
Z
zhangyafei.echo 已提交
1456

1457 1458 1459
  后台启动:

  ```ts
H
HuangXW 已提交
1460
  var caller = undefined;
1461 1462 1463 1464 1465 1466 1467 1468

  // 后台启动Ability,不配置parameters
  var wantBackground = {
      bundleName: "com.example.myservice",
      moduleName: "entry",
      abilityName: "MainAbility",
      deviceId: ""
  };
1469 1470 1471 1472 1473

  try {
    this.context.startAbilityByCall(wantBackground)
      .then((obj) => {
        // 执行正常业务
1474
        caller = obj;
1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491
        console.log('startAbilityByCall succeed');
      }).catch((error) => {
        // 处理业务逻辑错误
        console.log('startAbilityByCall failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
      });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
  ```

  前台启动:

  ```ts
  var caller = undefined;
1492 1493 1494 1495 1496 1497 1498 1499 1500

  // 前台启动Ability,将parameters中的"ohos.aafwk.param.callAbilityToForeground"配置为true
  var wantForeground = {
      bundleName: "com.example.myservice",
      moduleName: "entry",
      abilityName: "MainAbility",
      deviceId: "",
      parameters: {
        "ohos.aafwk.param.callAbilityToForeground": true
ahjxliubao2's avatar
ahjxliubao2 已提交
1501
      }
1502
  };
1503 1504 1505 1506 1507

  try {
    this.context.startAbilityByCall(wantForeground)
      .then((obj) => {
        // 执行正常业务
1508
        caller = obj;
1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519
        console.log('startAbilityByCall succeed');
      }).catch((error) => {
        // 处理业务逻辑错误
        console.log('startAbilityByCall failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
      });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
ahjxliubao2's avatar
ahjxliubao2 已提交
1520 1521
  ```

1522 1523 1524 1525 1526 1527
## AbilityContext.startAbilityWithAccount

startAbilityWithAccount(want: Want, accountId: number, callback: AsyncCallback\<void\>): void;

根据account启动Ability(callback形式)。

M
m00512953 已提交
1528 1529
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
1530
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
1531 1532
 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)

D
donglin 已提交
1533
**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS,当accountId为当前用户时,不需要校验该权限。
1534 1535 1536 1537 1538 1539 1540 1541 1542

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
1543
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
1544
| accountId | number | 是 | 系统帐号的帐号ID,详情参考[getCreatedOsAccountsCount](js-apis-osAccount.md#getosaccountlocalidfromprocess)。 |
1545 1546
| callback | AsyncCallback\<void\> | 是 | 启动Ability的回调函数。 |

H
HuangXW 已提交
1547 1548 1549 1550
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
1551
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
1552
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
1553

1554 1555
**示例:**

1556
  ```ts
1557
  var want = {
1558 1559 1560
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
1561 1562
  };
  var accountId = 100;
H
HuangXW 已提交
1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579

  try {
    this.context.startAbilityWithAccount(want, accountId, (error) => {
      if (error.code) {
        // 处理业务逻辑错误
        console.log('startAbilityWithAccount failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
        return;
      }
      // 执行正常业务
      console.log('startAbilityWithAccount succeed');
    });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
1580 1581 1582 1583 1584 1585 1586 1587 1588
  ```


## AbilityContext.startAbilityWithAccount

startAbilityWithAccount(want: Want, accountId: number, options: StartOptions, callback: AsyncCallback\<void\>): void;

根据account启动Ability(callback形式)。

M
m00512953 已提交
1589 1590
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
1591
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
1592 1593
 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)

D
donglin 已提交
1594
**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS,当accountId为当前用户时,不需要校验该权限。
1595 1596 1597 1598 1599 1600 1601 1602 1603

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
1604
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
1605
| accountId | number | 是 | 系统帐号的帐号ID,详情参考[getCreatedOsAccountsCount](js-apis-osAccount.md#getosaccountlocalidfromprocess)。|
D
ability  
donglin 已提交
1606
| options | [StartOptions](js-apis-application-startOptions.md) | 是 | 启动Ability所携带的参数。 |
1607 1608
| callback | AsyncCallback\<void\> | 是 | 启动Ability的回调函数。 |

H
HuangXW 已提交
1609 1610 1611 1612
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
1613
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
1614
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
1615

1616 1617
**示例:**

1618
  ```ts
1619
  var want = {
1620 1621 1622
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
1623 1624 1625
  };
  var accountId = 100;
  var options = {
H
HuangXW 已提交
1626
    windowMode: 0
1627
  };
H
HuangXW 已提交
1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644

  try {
    this.context.startAbilityWithAccount(want, accountId, options, (error) => {
      if (error.code) {
        // 处理业务逻辑错误
        console.log('startAbilityWithAccount failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
        return;
      }
      // 执行正常业务
      console.log('startAbilityWithAccount succeed');
    });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
1645 1646 1647 1648 1649 1650 1651 1652 1653
  ```


## AbilityContext.startAbilityWithAccount

startAbilityWithAccount(want: Want, accountId: number, options?: StartOptions): Promise\<void\>;

根据account启动Ability(Promise形式)。

M
m00512953 已提交
1654 1655
使用规则:
 - 调用方应用位于后台时,使用该接口启动Ability需申请`ohos.permission.START_ABILITIES_FROM_BACKGROUND`权限
M
m00512953 已提交
1656
 - 跨应用场景下,目标Ability的visible属性若配置为false,调用方应用需申请`ohos.permission.START_INVISIBLE_ABILITY`权限
M
m00512953 已提交
1657 1658
 - 组件启动规则详见:[组件启动规则(Stage模型)](../../application-models/component-startup-rules.md)

D
donglin 已提交
1659
**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS,当accountId为当前用户时,不需要校验该权限。
1660 1661 1662 1663 1664 1665 1666 1667 1668

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
1669
| want | [Want](js-apis-application-want.md) | 是 | 启动Ability的want信息。 |
1670
| accountId | number | 是 | 系统帐号的帐号ID,详情参考[getCreatedOsAccountsCount](js-apis-osAccount.md#getosaccountlocalidfromprocess)。 |
M
m00512953 已提交
1671
| options | [StartOptions](js-apis-application-startOptions.md) | 否 | 启动Ability所携带的参数。 |
1672

H
HuangXW 已提交
1673 1674 1675 1676
**错误码:**

| 错误码ID | 错误信息 |
| ------- | -------------------------------- |
D
ability  
donglin 已提交
1677
| 401 | If the input parameter is not valid parameter. |
D
merge  
donglin 已提交
1678
其他ID见[元能力子系统错误码](../errorcodes/errorcode-ability.md)
H
HuangXW 已提交
1679

1680 1681
**示例:**

1682
  ```ts
1683
  var want = {
1684 1685 1686
    deviceId: "",
    bundleName: "com.extreme.test",
    abilityName: "MainAbility"
1687 1688 1689
  };
  var accountId = 100;
  var options = {
H
HuangXW 已提交
1690
    windowMode: 0
1691
  };
H
HuangXW 已提交
1692 1693 1694 1695 1696 1697 1698 1699 1700

  try {
    this.context.startAbilityWithAccount(want, accountId, options)
      .then((data) => {
        // 执行正常业务
        console.log('startAbilityWithAccount succeed');
      })
      .catch((error) => {
        // 处理业务逻辑错误
1701 1702
        console.log('startAbilityWithAccount failed, error.code: ' + JSON.stringify(error.code) +
          ' error.message: ' + JSON.stringify(error.message));
H
HuangXW 已提交
1703 1704 1705 1706 1707 1708
      });
  } catch (paramError) {
    // 处理入参错误异常
    console.log('error.code: ' + JSON.stringify(paramError.code) +
      ' error.message: ' + JSON.stringify(paramError.message));
  }
1709
  ```
ahjxliubao2's avatar
ahjxliubao2 已提交
1710

Y
yuyaozhi 已提交
1711
## AbilityContext.setMissionLabel
ahjxliubao2's avatar
ahjxliubao2 已提交
1712 1713 1714

setMissionLabel(label: string, callback:AsyncCallback&lt;void&gt;): void;

1715
设置ability在任务中显示的名称(callback形式)。
ahjxliubao2's avatar
ahjxliubao2 已提交
1716

Y
yuyaozhi 已提交
1717
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
1718

Y
yuyaozhi 已提交
1719
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
1720

G
guyuanzhang 已提交
1721 1722 1723 1724
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| label | string | 是 | 显示名称。 |
| callback | AsyncCallback&lt;void&gt; | 是 | 回调函数,返回接口调用是否成功的结果。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
1725

Y
yuyaozhi 已提交
1726
**示例:**
Z
zhangyafei.echo 已提交
1727

1728
  ```ts
ahjxliubao2's avatar
ahjxliubao2 已提交
1729
  this.context.setMissionLabel("test",(result) => {
1730
      console.log('setMissionLabel result:' + JSON.stringify(result));
ahjxliubao2's avatar
ahjxliubao2 已提交
1731 1732 1733 1734
  });
  ```


Y
yuyaozhi 已提交
1735
## AbilityContext.setMissionLabel
ahjxliubao2's avatar
ahjxliubao2 已提交
1736

Y
yuyaozhi 已提交
1737
setMissionLabel(label: string): Promise&lt;void&gt;;
ahjxliubao2's avatar
ahjxliubao2 已提交
1738

1739
设置ability在任务中显示的名称(promise形式)。
ahjxliubao2's avatar
ahjxliubao2 已提交
1740

Y
yuyaozhi 已提交
1741
**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
ahjxliubao2's avatar
ahjxliubao2 已提交
1742

Y
yuyaozhi 已提交
1743
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
1744

G
guyuanzhang 已提交
1745 1746 1747
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| label | string | 是 | 显示名称。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
1748

Y
yuyaozhi 已提交
1749 1750
**返回值:**

G
guyuanzhang 已提交
1751 1752 1753
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;void&gt; | 返回一个Promise,包含接口的结果。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
1754

Y
yuyaozhi 已提交
1755
**示例:**
Z
zhangyafei.echo 已提交
1756

1757
  ```ts
F
fangJinliang1 已提交
1758 1759
  this.context.setMissionLabel("test").then(() => {
      console.log('success');
ahjxliubao2's avatar
ahjxliubao2 已提交
1760
  }).catch((error) => {
R
RayShih 已提交
1761
      console.log('failed:' + JSON.stringify(error));
ahjxliubao2's avatar
ahjxliubao2 已提交
1762 1763
  });
  ```
1764 1765 1766 1767
## AbilityContext.setMissionIcon

setMissionIcon(icon: image.PixelMap, callback:AsyncCallback\<void>): void;

1768
设置当前ability在任务中显示的图标(callback形式)。
1769 1770 1771 1772 1773 1774 1775 1776 1777

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
1778
| icon | [image.PixelMap](js-apis-image.md#pixelmap7) | 是 | 在最近的任务中显示的ability图标。 |
1779 1780 1781
| callback | AsyncCallback\<void> | 是 | 指定的回调函数的结果。 |

**示例:**
Z
zhangyafei.echo 已提交
1782

1783
  ```ts
Y
yuyaozhi 已提交
1784
    import image from '@ohos.multimedia.image';
1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809
    var imagePixelMap;
    var color = new ArrayBuffer(0);
    var initializationOptions = {
       size: {
           height: 100,
           width: 100
       }
    };
    image.createPixelMap(color, initializationOptions)
       .then((data) => {
           imagePixelMap = data;
       })
       .catch((err) => {
           console.log('--------- createPixelMap fail, err: ---------', err)
       });
    this.context.setMissionIcon(imagePixelMap, (err) => {
       console.log('---------- setMissionIcon fail, err: -----------', err);
    })
  ```


## AbilityContext.setMissionIcon

setMissionIcon(icon: image.PixelMap): Promise\<void>;

1810
设置当前ability在任务中显示的图标(promise形式)。
1811 1812 1813 1814 1815 1816 1817 1818 1819

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**系统API**: 此接口为系统接口,三方应用不支持调用。

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
M
m00512953 已提交
1820
| icon | [image.PixelMap](js-apis-image.md#pixelmap7) | 是 | 在最近的任务中显示的ability图标。 |
1821 1822 1823 1824 1825 1826 1827 1828

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;void&gt; | 返回一个Promise,包含接口的结果。 |

**示例:**
Z
zhangyafei.echo 已提交
1829

1830
  ```ts
Y
yuyaozhi 已提交
1831
    import image from '@ohos.multimedia.image';
1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847
    var imagePixelMap;
    var color = new ArrayBuffer(0);
    var initializationOptions = {
      size: {
          height: 100,
          width: 100
      }
    };
    image.createPixelMap(color, initializationOptions)
      .then((data) => {
          imagePixelMap = data;
      })
      .catch((err) => {
          console.log('--------- createPixelMap fail, err: ---------', err)
      });
    this.context.setMissionIcon(imagePixelMap)
F
fangJinliang1 已提交
1848 1849
      .then(() => {
          console.log('-------------- setMissionIcon success -------------');
1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866
      })
      .catch((err) => {
          console.log('-------------- setMissionIcon fail, err: -------------', err);
      });
  ```
## AbilityContext.restoreWindowStage

restoreWindowStage(localStorage: LocalStorage) : void;

恢复ability中的window stage数据。

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
D
ability  
donglin 已提交
1867
| localStorage | LocalStorage | 是 | 用于恢复window stage的存储数据。 |
1868 1869 1870

**示例:**

1871
  ```ts
1872 1873 1874
    var storage = new LocalStorage();
    this.context.restoreWindowStage(storage);
  ```
ahjxliubao2's avatar
ahjxliubao2 已提交
1875

G
guyuanzhang 已提交
1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891
## AbilityContext.isTerminating

isTerminating(): boolean;

查询ability是否在terminating状态。

**系统能力**:SystemCapability.Ability.AbilityRuntime.Core

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| bool | true:ability当前处于terminating状态;false:不处于terminating状态。 |

**示例:**

1892
  ```ts
G
guyuanzhang 已提交
1893 1894 1895
  var isTerminating = this.context.isTerminating();
  console.log('ability state :' + isTerminating);
  ```