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

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

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

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

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

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

Y
yuyaozhi 已提交
16
```js
ahjxliubao2's avatar
ahjxliubao2 已提交
17 18 19 20 21 22 23 24
import Ability from '@ohos.application.Ability'
class MainAbility extends Ability {
    onWindowStageCreate(windowStage) {
        let context = this.context;
    }
}
```

25 26
## 属性

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

G
guyuanzhang 已提交
29
| 名称 | 参数类型 | 可读 | 可写 | 说明 |
30
| -------- | -------- | -------- | -------- | -------- |
G
guyuanzhang 已提交
31 32
| abilityInfo | AbilityInfo | 是 | 否 | Abilityinfo相关信息 |
| currentHapModuleInfo | HapModuleInfo | 是 | 否 | 当前hap包的信息 |
33
| config | [Configuration](js-apis-configuration.md) | 是 | 否 | 表示配置信息。 |
34

Y
yuyaozhi 已提交
35
## AbilityContext.startAbility
36 37 38 39 40

startAbility(want: Want, callback: AsyncCallback<void>): void

启动Ability。

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

Y
yuyaozhi 已提交
43
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
44

G
guyuanzhang 已提交
45 46 47 48
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-application-Want.md) | 是 | 启动Ability的want信息。 |
| callback | AsyncCallback<void> | 是 | callback形式返回启动结果 |
49

Y
yuyaozhi 已提交
50 51 52
**示例:**

  ```js
53 54 55
  var want = {
  	"deviceId": "",
  	"bundleName": "com.extreme.test",
Y
yuyaozhi 已提交
56
  	"abilityName": "MainAbility"
57 58 59 60 61 62 63
  };
  this.context.startAbility(want, (error) => {
      console.log("error.code = " + error.code)
  })
  ```


Y
yuyaozhi 已提交
64
## AbilityContext.startAbility
65

ahjxliubao2's avatar
ahjxliubao2 已提交
66 67 68 69
startAbility(want: Want, options: StartOptions, callback: AsyncCallback<void>): void

启动Ability。

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

Y
yuyaozhi 已提交
72
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
73

G
guyuanzhang 已提交
74 75 76
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-application-Want.md)  | 是 | 启动Ability的want信息。 |
X
xuzhihao 已提交
77
| options | [StartOptions](js-apis-application-StartOptions.md) | 是 | 启动Ability所携带的参数。 |
G
guyuanzhang 已提交
78
| callback | AsyncCallback<void> | 是 | callback形式返回启动结果。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
79

Y
yuyaozhi 已提交
80
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
81
    
Y
yuyaozhi 已提交
82
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
83 84 85
  var want = {
  	"deviceId": "",
  	"bundleName": "com.extreme.test",
Y
yuyaozhi 已提交
86
  	"abilityName": "MainAbility"
ahjxliubao2's avatar
ahjxliubao2 已提交
87 88 89 90 91 92 93 94 95 96
  };
  var options = {
  	windowMode: 0,
  };
  this.context.startAbility(want, options, (error) => {
      console.log("error.code = " + error.code)
  })
  ```


Y
yuyaozhi 已提交
97
## AbilityContext.startAbility
ahjxliubao2's avatar
ahjxliubao2 已提交
98

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

101
启动Ability。通过Promise返回结果。
102

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

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

G
guyuanzhang 已提交
107 108 109
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-application-Want.md) | 是 | 启动Ability的want信息。 |
X
xuzhihao 已提交
110
| options | [StartOptions](js-apis-application-StartOptions.md) | 否 | 启动Ability所携带的参数。 |
111

Y
yuyaozhi 已提交
112 113
**返回值:**

G
guyuanzhang 已提交
114 115 116
| 类型 | 说明 |
| -------- | -------- |
| Promise<void> | Promise形式返回启动结果。 |
117

Y
yuyaozhi 已提交
118 119 120
**示例:**

  ```js
121 122 123
  var want = {
  	"deviceId": "",
  	"bundleName": "com.extreme.test",
Y
yuyaozhi 已提交
124
  	"abilityName": "MainAbility"
125
  };
ahjxliubao2's avatar
ahjxliubao2 已提交
126 127 128 129
  var options = {
  	windowMode: 0,
  };
  this.context.startAbility(want, options)
130 131 132 133 134 135 136 137
  .then((data) => {
      console.log('Operation successful.')
  }).catch((error) => {
      console.log('Operation failed.');
  })
  ```


Y
yuyaozhi 已提交
138
## AbilityContext.startAbilityForResult
139

140
startAbilityForResult(want: Want, callback: AsyncCallback<AbilityResult>): void;
141 142 143

启动Ability并在结束的时候返回执行结果。

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

Y
yuyaozhi 已提交
146
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
147

G
guyuanzhang 已提交
148 149 150 151
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want |[Want](js-apis-application-Want.md) | 是 | 启动Ability的want信息。 |
| callback | AsyncCallback<[AbilityResult](js-apis-featureAbility.md#abilityresult)> | 是 | 执行结果回调函数。 |
152

153

Y
yuyaozhi 已提交
154 155 156
**示例:**

  ```js
157
  this.context.startAbilityForResult(
Q
ql 已提交
158
      {deviceId: "", bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo2"},
159 160 161 162 163 164 165
      (error, result) => {
          console.log("startAbilityForResult AsyncCallback is called, error.code = " + error.code)
          console.log("startAbilityForResult AsyncCallback is called, result.resultCode = " + result.resultCode)
       }
  );
  ```

Y
yuyaozhi 已提交
166
## AbilityContext.startAbilityForResult
ahjxliubao2's avatar
ahjxliubao2 已提交
167 168 169 170 171

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

启动Ability并在结束的时候返回执行结果。

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

Y
yuyaozhi 已提交
174
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
175

G
guyuanzhang 已提交
176 177 178
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want |[Want](js-apis-application-Want.md) | 是 | 启动Ability的want信息。 |
X
xuzhihao 已提交
179
| options | [StartOptions](js-apis-application-StartOptions.md) | 是 | 启动Ability所携带的参数。 |
G
guyuanzhang 已提交
180
| callback | AsyncCallback<[AbilityResult](js-apis-featureAbility.md#abilityresult)> | 是 | 执行结果回调函数。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
181 182


Y
yuyaozhi 已提交
183 184 185
**示例:**

  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
186 187 188 189
  var options = {
    windowMode: 0,
  };
  this.context.startAbilityForResult(
Q
ql 已提交
190
      {deviceId: "", bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo2"}, options,
ahjxliubao2's avatar
ahjxliubao2 已提交
191 192 193 194 195 196 197
      (error, result) => {
          console.log("startAbilityForResult AsyncCallback is called, error.code = " + error.code)
          console.log("startAbilityForResult AsyncCallback is called, result.resultCode = " + result.resultCode)
       }
  );
  ```

198

Y
yuyaozhi 已提交
199
## AbilityContext.startAbilityForResult
200

Y
yuyaozhi 已提交
201
startAbilityForResult(want: Want, options?: StartOptions): Promise<AbilityResult>;
202 203 204

启动Ability并在结束的时候返回执行结果。

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

Y
yuyaozhi 已提交
207
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
208

G
guyuanzhang 已提交
209 210 211
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-application-Want.md) | 是 | 启动Ability的want信息。 |
X
xuzhihao 已提交
212
| options | [StartOptions](js-apis-application-StartOptions.md) | 否 | 启动Ability所携带的参数。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
213

214

Y
yuyaozhi 已提交
215 216
**返回值:**

G
guyuanzhang 已提交
217 218 219
| 类型 | 说明 |
| -------- | -------- |
| Promise<[AbilityResult](js-apis-featureAbility.md#abilityresult)> | Promise形式返回执行结果。 |
220

Y
yuyaozhi 已提交
221 222 223
**示例:**

  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
224 225 226
  var options = {
    windowMode: 0,
  };
Q
ql 已提交
227
  this.context.startAbilityForResult({deviceId: "", bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo2"}, options).then((result) => {
228 229 230 231 232 233
      console.log("startAbilityForResult Promise.resolve is called, result.resultCode = " + result.resultCode)
  }, (error) => {
      console.log("startAbilityForResult Promise.Reject is called, error.code = " + error.code)
  })
  ```

234 235
## AbilityContext.startAbilityForResultWithAccount

Y
yuyaozhi 已提交
236
startAbilityForResultWithAccount(want: Want, accountId: number, callback: AsyncCallback\<AbilityResult>): void;
237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355

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

**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS

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

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

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-application-Want.md) | 是 | 启动Ability的want信息。 |
| accountId | number | 是 | 需要启动的accountId。 |
| callback | AsyncCallback\<AbilityResult\> | 是 | 启动Ability的回调函数,返回Ability结果。 |

**示例:**

  ```js
  var want = {
    "deviceId": "",
    "bundleName": "com.extreme.test",
    "abilityName": "MainAbility"
  };
  var accountId = 100;
  this.context.startAbilityWithAccount(want, accountId, (err, data) => {
    console.log('---------- startAbilityWithAccount fail, err:  -----------', err);
    console.log('---------- startAbilityWithAccount success, data:  -----------', data);
  });
  ```


## AbilityContext.startAbilityForResultWithAccount

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

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

**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS

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

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

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-application-Want.md) | 是 | 启动Ability的want信息。 |
| accountId | number | 是 | 需要启动的accountId。 |
| options | [StartOptions](js-apis-application-StartOptions.md) | 是 | 启动Ability所携带的参数。 |
| callback | AsyncCallback\<void\> | 是 | 启动Ability的回调函数。 |

**示例:**

  ```js
  var want = {
    "deviceId": "",
    "bundleName": "com.extreme.test",
    "abilityName": "MainAbility"
  };
  var accountId = 100;
  var options = {
    windowMode: 0,
  };
  this.context.startAbilityForResultWithAccount(want, accountId, options, (err) => {
    console.log('---------- startAbilityForResultWithAccount fail, err:  -----------', err);
  });
  ```


  ## AbilityContext.startAbilityForResultWithAccount

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

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

**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS

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

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

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-application-Want.md) | 是 | 启动Ability的want信息。 |
| accountId | number | 是 | 需要启动的accountId。 |
| options | [StartOptions](js-apis-application-StartOptions.md) | 否 | 启动Ability所携带的参数。 |

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;AbilityResult&gt; | 返回一个Promise,包含Ability结果。 |

**示例:**

  ```js
  var want = {
    "deviceId": "",
    "bundleName": "com.extreme.test",
    "abilityName": "MainAbility"
  };
  var accountId = 100;
  var options = {
    windowMode: 0,
  };
  this.context.startAbilityForResultWithAccount(want, accountId, options)
    .then((data) => {
        console.log('---------- startAbilityForResultWithAccount success, data:  -----------', data);
    })
    .catch((err) => {
        console.log('---------- startAbilityForResultWithAccount fail, err:  -----------', err);
    })
  ```

356

Y
yuyaozhi 已提交
357
## AbilityContext.terminateSelf
358

359
terminateSelf(callback: AsyncCallback&lt;void&gt;): void;
360

361
停止Ability自身。
362

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

Y
yuyaozhi 已提交
365
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
366

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

Y
yuyaozhi 已提交
371 372 373
**示例:**

  ```js
374
  this.context.terminateSelf((err) => {
R
RayShih 已提交
375
      console.log('terminateSelf result:' + JSON.stringify(err));
ahjxliubao2's avatar
ahjxliubao2 已提交
376
  });
377 378 379
  ```


Y
yuyaozhi 已提交
380
## AbilityContext.terminateSelf
381

382
terminateSelf(): Promise&lt;void&gt;;
383

384
停止Ability自身。通过Promise返回结果。
385

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

Y
yuyaozhi 已提交
388
**返回值:**
ahjxliubao2's avatar
ahjxliubao2 已提交
389

G
guyuanzhang 已提交
390 391 392
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;void&gt; | 返回一个Promise,包含接口的结果。 |
393

Y
yuyaozhi 已提交
394 395 396
**示例:**

  ```js
Y
yuyaozhi 已提交
397
  this.context.terminateSelf().then((data) => {
R
RayShih 已提交
398
      console.log('success:' + JSON.stringify(data));
ahjxliubao2's avatar
ahjxliubao2 已提交
399
  }).catch((error) => {
R
RayShih 已提交
400
      console.log('failed:' + JSON.stringify(error));
401 402 403 404
  });
  ```


Y
yuyaozhi 已提交
405
## AbilityContext.terminateSelfWithResult
406

407
terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback&lt;void&gt;): void;
408

409
停止Ability,并返回给调用startAbilityForResult 接口调用方的相关信息。
410

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

Y
yuyaozhi 已提交
413
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
414

G
guyuanzhang 已提交
415 416 417 418
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| parameter | [AbilityResult](js-apis-featureAbility.md#abilityresult) | 是 | 返回给调用startAbilityForResult&nbsp;接口调用方的相关信息。 |
| callback | AsyncCallback&lt;void&gt; | 是 | callback形式返回停止结果。 |
419

Y
yuyaozhi 已提交
420 421 422
**示例:**

  ```js
423 424 425 426 427 428 429 430 431 432 433
  this.context.terminateSelfWithResult(
     {
          want: {bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo"},
          resultCode: 100
      }, (error) => {
          console.log("terminateSelfWithResult is called = " + error.code)
      }
  );
  ```


Y
yuyaozhi 已提交
434
## AbilityContext.terminateSelfWithResult
435

436
terminateSelfWithResult(parameter: AbilityResult): Promise&lt;void&gt;;
437

438
停止Ability,并返回给调用startAbilityForResult 接口相关信息。
439

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

Y
yuyaozhi 已提交
442
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
443

G
guyuanzhang 已提交
444 445 446
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| parameter | [AbilityResult](js-apis-featureAbility.md#abilityresult) | 是 | 返回给startAbilityForResult&nbsp;调用方的信息。 |
447

Y
yuyaozhi 已提交
448 449
**返回值:**

G
guyuanzhang 已提交
450 451 452
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;void&gt; | promise形式返回停止结果。 |
453

Y
yuyaozhi 已提交
454 455 456
**示例:**

  ```js
457 458 459 460 461 462 463 464 465
  this.context.terminateSelfWithResult(
  {
      want: {bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo"},
      resultCode: 100
  }).then((result) => {
      console.log("terminateSelfWithResult")
  }
  )
  ```
ahjxliubao2's avatar
ahjxliubao2 已提交
466

467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609
## AbilityContext.connectAbility

connectAbility(want: Want, options: ConnectOptions): number;

使用AbilityInfo.AbilityType.SERVICE模板将当前能力连接到一个能力。

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

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

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-application-Want.md) | 是 | 启动Ability的want信息。 |
| options | [ConnectOptions](js-apis-featureAbility.md#connectoptions) | 否 | 远端对象实例。 |

**返回值:**

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

**示例:**

  ```js
  var want = {
    "deviceId": "",
    "bundleName": "com.extreme.test",
    "abilityName": "MainAbility"
  };
  var options = {
    onConnect(elementName, remote) { console.log('----------- onConnect -----------') },
    onDisconnect(elementName) { console.log('----------- onDisconnect -----------') },
    onFailed(code) { console.log('----------- onFailed -----------') }
  }
  const result = this.context.connectAbility(want, options);
  console.log('----------- connectAbilityResult: ------------', result);
  ```


## AbilityContext.connectAbilityWithAccount

connectAbilityWithAccount(want: Want, accountId: number, options: ConnectOptions): number;

使用AbilityInfo.AbilityType.SERVICE模板和account将当前能力连接到一个能力。

**需要权限:** ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS

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

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

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-application-Want.md) | 是 | 启动Ability的want信息。 |
| accountId | number | 是 | 需要启动的accountId。 |
| options | [ConnectOptions](js-apis-featureAbility.md#connectoptions) | 否 | 远端对象实例。 |

**返回值:**

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

**示例:**

  ```js
  var want = {
    "deviceId": "",
    "bundleName": "com.extreme.test",
    "abilityName": "MainAbility"
  };
  var accountId = 100;
  var options = {
    onConnect(elementName, remote) { console.log('----------- onConnect -----------') },
    onDisconnect(elementName) { console.log('----------- onDisconnect -----------') },
    onFailed(code) { console.log('----------- onFailed -----------') }
  }
  const result = this.context.connectAbilityWithAccount(want, accountId, options);
  console.log('----------- connectAbilityResult: ------------', result);
  ```

## AbilityContext.disconnectAbility

disconnectAbility(connection: number): Promise\<void>;

已成功连接接口。

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

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

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| connection | number | 是 | 连接的能力的数字代码。 |

**返回值:**

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

**示例:**
    
  ```js
  var connectionNumber = 0;
  this.context.disconnectAbility(connectionNumber).then((data) => {
       console.log('disconnectAbility success, data: ', data);
  }).catch((err) => {
       console.log('disconnectAbility fail, err: ', err);
  });
  ```

## AbilityContext.disconnectAbility

disconnectAbility(connection: number, callback:AsyncCallback\<void>): void;

已成功连接接口。

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

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

**参数:**

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

**示例:**

  ```js
    var connectionNumber = 0;
    this.context.disconnectAbility(connectionNumber, (err) => {
       console.log('---------- disconnectAbility fail, err: -----------', err);
    });
  ```
ahjxliubao2's avatar
ahjxliubao2 已提交
610

Y
yuyaozhi 已提交
611
## AbilityContext.startAbilityByCall
ahjxliubao2's avatar
ahjxliubao2 已提交
612 613 614 615 616

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

获取指定通用组件服务端的caller通信接口, 并且将指定通用组件服务端拉起并切换到后台。

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

Y
yuyaozhi 已提交
619
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
620

G
guyuanzhang 已提交
621 622 623
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-application-Want.md) | 是 | 传入需要启动的ability的信息,包含ability名称、包名、设备ID,设备ID缺省或为空表示启动本地ability。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
624

Y
yuyaozhi 已提交
625 626
**返回值:**

G
guyuanzhang 已提交
627 628 629
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;Caller&gt; | 获取要通讯的caller对象。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
630

Y
yuyaozhi 已提交
631
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
632
    
Y
yuyaozhi 已提交
633
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
634 635 636 637 638 639
  import Ability from '@ohos.application.Ability';
  var caller;
  export default class MainAbility extends Ability {
      onWindowStageCreate(windowStage) {
          this.context.startAbilityByCall({
              bundleName: "com.example.myservice",
Y
yuyaozhi 已提交
640
              abilityName: "MainAbility",
ahjxliubao2's avatar
ahjxliubao2 已提交
641 642 643
              deviceId: ""
          }).then((obj) => {
              caller = obj;
Y
yuyaozhi 已提交
644
              console.log('Caller GetCaller Get ' + caller);
ahjxliubao2's avatar
ahjxliubao2 已提交
645 646 647 648 649 650 651
          }).catch((e) => {
              console.log('Caller GetCaller error ' + e);
          });
      }
  }
  ```

652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765
## AbilityContext.startAbilityWithAccount

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

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

**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS

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

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

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-application-Want.md) | 是 | 启动Ability的want信息。 |
| accountId | number | 是 | 需要启动的accountId。 |
| callback | AsyncCallback\<void\> | 是 | 启动Ability的回调函数。 |

**示例:**

  ```js
  var want = {
    "deviceId": "",
    "bundleName": "com.extreme.test",
    "abilityName": "MainAbility"
  };
  var accountId = 100;
  this.context.startAbilityWithAccount(want, accountId, (err) => {
    console.log('---------- startAbilityWithAccount fail, err:  -----------', err);
  });
  ```


## AbilityContext.startAbilityWithAccount

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

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

**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS

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

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

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-application-Want.md) | 是 | 启动Ability的want信息。 |
| accountId | number | 是 | 需要启动的accountId。 |
| options | [StartOptions](js-apis-application-StartOptions.md) | 否 | 启动Ability所携带的参数。 |
| callback | AsyncCallback\<void\> | 是 | 启动Ability的回调函数。 |

**示例:**

  ```js
  var want = {
    "deviceId": "",
    "bundleName": "com.extreme.test",
    "abilityName": "MainAbility"
  };
  var accountId = 100;
  var options = {
    windowMode: 0,
  };
  this.context.startAbilityWithAccount(want, accountId, options, (err) => {
    console.log('---------- startAbilityWithAccount fail, err:  -----------', err);
  });
  ```


## AbilityContext.startAbilityWithAccount

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

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

**需要权限**: ohos.permission.INTERACT_ACROSS_LOCAL_ACCOUNTS

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

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

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| want | [Want](js-apis-application-Want.md) | 是 | 启动Ability的want信息。 |
| accountId | number | 是 | 需要启动的accountId。 |
| options | [StartOptions](js-apis-application-StartOptions.md) | 否 | 启动Ability所携带的参数。 |

**示例:**

  ```js
  var want = {
    "deviceId": "",
    "bundleName": "com.extreme.test",
    "abilityName": "MainAbility"
  };
  var accountId = 100;
  var options = {
    windowMode: 0,
  };
  this.context.startAbilityWithAccount(want, accountId, options)
    .then((data) => {
        console.log('---------- startAbilityWithAccount success, data:  -----------', data);
    })
    .catch((err) => {
        console.log('---------- startAbilityWithAccount fail, err:  -----------', err);
    })
  ```
ahjxliubao2's avatar
ahjxliubao2 已提交
766

Y
yuyaozhi 已提交
767
## AbilityContext.requestPermissionsFromUser
ahjxliubao2's avatar
ahjxliubao2 已提交
768 769 770 771 772

requestPermissionsFromUser(permissions: Array&lt;string&gt;, requestCallback: AsyncCallback&lt;PermissionRequestResult&gt;) : void;

拉起弹窗请求用户授权。

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

Y
yuyaozhi 已提交
775
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
776

G
guyuanzhang 已提交
777 778 779 780
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| permissions | Array&lt;string&gt; | 是 | 权限列表。 |
| callback | AsyncCallback&lt;[PermissionRequestResult](js-apis-permissionrequestresult.md)&gt; | 是 | 回调函数,返回接口调用是否成功的结果。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
781

Y
yuyaozhi 已提交
782
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
783
    
Y
yuyaozhi 已提交
784 785 786 787
  ```js
       var permissions=['com.example.permission']
       this.context.requestPermissionsFromUser(permissions,(result) => {
       console.log('requestPermissionsFromUserresult:' + JSON.stringify(result));
ahjxliubao2's avatar
ahjxliubao2 已提交
788
  });
Y
yuyaozhi 已提交
789
  
ahjxliubao2's avatar
ahjxliubao2 已提交
790 791 792
  ```


Y
yuyaozhi 已提交
793
## AbilityContext.requestPermissionsFromUser
ahjxliubao2's avatar
ahjxliubao2 已提交
794 795 796 797 798

requestPermissionsFromUser(permissions: Array&lt;string&gt;) : Promise&lt;PermissionRequestResult&gt;;

拉起弹窗请求用户授权。通过Promise返回结果。

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

Y
yuyaozhi 已提交
801
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
802

G
guyuanzhang 已提交
803 804 805
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| permissions | Array&lt;string&gt; | 是 | 权限列表。 |
Y
yuyaozhi 已提交
806 807

**返回值:**
ahjxliubao2's avatar
ahjxliubao2 已提交
808

G
guyuanzhang 已提交
809 810 811
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;[PermissionRequestResult](js-apis-permissionrequestresult.md)&gt; | 返回一个Promise,包含接口的结果。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
812

Y
yuyaozhi 已提交
813
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
814
    
Y
yuyaozhi 已提交
815 816 817
  ```js
   var permissions=['com.example.permission']
       this.context.requestPermissionsFromUser(permissions).then((data) => {
R
RayShih 已提交
818
      console.log('success:' + JSON.stringify(data));
ahjxliubao2's avatar
ahjxliubao2 已提交
819
  }).catch((error) => {
R
RayShih 已提交
820
      console.log('failed:' + JSON.stringify(error));
ahjxliubao2's avatar
ahjxliubao2 已提交
821
  });
Y
yuyaozhi 已提交
822

ahjxliubao2's avatar
ahjxliubao2 已提交
823 824 825
  ```


Y
yuyaozhi 已提交
826
## AbilityContext.setMissionLabel
ahjxliubao2's avatar
ahjxliubao2 已提交
827 828 829 830 831

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

设置ability在任务中显示的名称。

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

Y
yuyaozhi 已提交
834
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
835

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

Y
yuyaozhi 已提交
841
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
842
    
Y
yuyaozhi 已提交
843
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
844
  this.context.setMissionLabel("test",(result) => {
R
RayShih 已提交
845
      console.log('requestPermissionsFromUserresult:' + JSON.stringify(result));
ahjxliubao2's avatar
ahjxliubao2 已提交
846 847 848 849
  });
  ```


Y
yuyaozhi 已提交
850
## AbilityContext.setMissionLabel
ahjxliubao2's avatar
ahjxliubao2 已提交
851

W
wusongqing 已提交
852
setMissionLabel(label: string): Promise&lt;void&gt;
ahjxliubao2's avatar
ahjxliubao2 已提交
853 854 855

设置ability在任务中显示的名称。

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

Y
yuyaozhi 已提交
858
**参数:**
ahjxliubao2's avatar
ahjxliubao2 已提交
859

G
guyuanzhang 已提交
860 861 862
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| label | string | 是 | 显示名称。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
863

Y
yuyaozhi 已提交
864 865
**返回值:**

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

Y
yuyaozhi 已提交
870
**示例:**
ahjxliubao2's avatar
ahjxliubao2 已提交
871
    
Y
yuyaozhi 已提交
872
  ```js
ahjxliubao2's avatar
ahjxliubao2 已提交
873
  this.context.setMissionLabel("test").then((data) => {
R
RayShih 已提交
874
      console.log('success:' + JSON.stringify(data));
ahjxliubao2's avatar
ahjxliubao2 已提交
875
  }).catch((error) => {
R
RayShih 已提交
876
      console.log('failed:' + JSON.stringify(error));
ahjxliubao2's avatar
ahjxliubao2 已提交
877 878
  });
  ```
879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989
## AbilityContext.setMissionIcon

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

设置当前ability的任务标签。

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

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

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| icon | image.PixelMap | 是 | 在最近的任务中显示的能力图标。 |
| callback | AsyncCallback\<void> | 是 | 指定的回调函数的结果。 |

**示例:**
    
  ```js
    import image from '@ohos.multimedia.image'
    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>;

设置当前ability的任务标签。

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

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

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| icon | image.PixelMap | 是 | 在最近的任务中显示的能力图标。 |

**返回值:**

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

**示例:**
    
  ```js
    import image from '@ohos.multimedia.image'
    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)
      .then((data) => {
          console.log('-------------- setMissionIcon success, data: -------------', data);
      })
      .catch((err) => {
          console.log('-------------- setMissionIcon fail, err: -------------', err);
      });
  ```
## AbilityContext.restoreWindowStage

restoreWindowStage(localStorage: LocalStorage) : void;

恢复ability中的window stage数据。

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

**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| localStorage | image.LocalStorage | 是 | 用于恢复window stage的存储数据。 |

**示例:**

  ```js
    var storage = new LocalStorage();
    this.context.restoreWindowStage(storage);
  ```
ahjxliubao2's avatar
ahjxliubao2 已提交
990

G
guyuanzhang 已提交
991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010
## AbilityContext.isTerminating

isTerminating(): boolean;

查询ability是否在terminating状态。

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

**返回值:**

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

**示例:**

  ```js
  var isTerminating = this.context.isTerminating();
  console.log('ability state :' + isTerminating);
  ```