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

ahjxliubao2's avatar
ahjxliubao2 已提交
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
- [使用说明](#使用说明)
- [属性](#属性)
- [startAbility](#startAbility)
- [startAbility](#startAbility)
- [startAbility](#startAbility)
- [startAbilityForResult](#startAbilityForResult)
- [startAbilityForResult](#startAbilityForResult)
- [startAbilityForResult](#startAbilityForResult)
- [terminateSelf](#terminateSelf)
- [terminateSelf](#terminateSelf)
- [terminateSelfWithResult](#terminateSelfWithResult)
- [terminateSelfWithResult](#terminateSelfWithResult)
- [startAbilityByCall](#startAbilityByCall)
- [requestPermissionsFromUser](#requestPermissionsFromUser)
- [requestPermissionsFromUser](#requestPermissionsFromUser)
- [setMissionLabel](#setMissionLabel)
- [setMissionLabel](#setMissionLabel)


22
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
ahjxliubao2's avatar
ahjxliubao2 已提交
23
> 本模块首批接口从API 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
24 25 26 27 28


Ability的上下文环境,继承自Context。


ahjxliubao2's avatar
ahjxliubao2 已提交
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
## 使用说明


​在使用AbilityContext的功能前,需要通过Ability子类实例获取。


  
```
import Ability from '@ohos.application.Ability'
class MainAbility extends Ability {
    onWindowStageCreate(windowStage) {
        let context = this.context;
    }
}
```


46 47
## 属性

48
| 名称 | 参数类型 | 可读 | 可写 | 说明 | 
49
| -------- | -------- | -------- | -------- | -------- |
50 51
| abilityInfo | AbilityInfo | 是 | 否 | Abilityinfo相关信息 | 
| currentHapModuleInfo | HapModuleInfo | 是 | 否 | 当前hap包的信息 | 
52 53 54 55 56 57 58 59


## startAbility

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

启动Ability。

ahjxliubao2's avatar
ahjxliubao2 已提交
60 61 62 63
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

64
- 参数:
65
  | 参数名 | 类型 | 必填 | 说明 | 
66
  | -------- | -------- | -------- | -------- |
67 68
  | want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 启动Ability的want信息。 | 
  | callback | AsyncCallback<void> | 是 | callback形式返回启动结果 | 
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

- 示例:
  ```
  var want = {
  	"deviceId": "",
  	"bundleName": "com.extreme.test",
  	"abilityName": "com.extreme.test.MainAbility"
  };
  this.context.startAbility(want, (error) => {
      console.log("error.code = " + error.code)
  })
  ```


## startAbility

ahjxliubao2's avatar
ahjxliubao2 已提交
85 86 87 88
startAbility(want: Want, options: StartOptions, callback: AsyncCallback<void>): void

启动Ability。

ahjxliubao2's avatar
ahjxliubao2 已提交
89 90 91 92
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

ahjxliubao2's avatar
ahjxliubao2 已提交
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
- 参数:
    | 参数名 | 类型 | 必填 | 说明 | 
  | -------- | -------- | -------- | -------- |
  | want | [Want](js-apis-featureAbility.md#Want类型说明)  | 是 | 启动Ability的want信息。 | 
  | options | StartOptions | 是 | 启动Ability所携带的参数。 |
  | callback | AsyncCallback<void> | 是 | callback形式返回启动结果。 | 

- 示例:
    
  ```
  var want = {
  	"deviceId": "",
  	"bundleName": "com.extreme.test",
  	"abilityName": "com.extreme.test.MainAbility"
  };
  var options = {
  	windowMode: 0,
  };
  this.context.startAbility(want, options, (error) => {
      console.log("error.code = " + error.code)
  })
  ```


## startAbility

startAbility(want: Want, options: StartOptions): Promise<void>;
120

121
启动Ability。通过Promise返回结果。
122

ahjxliubao2's avatar
ahjxliubao2 已提交
123 124 125 126
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

127
- 参数:
128
  | 参数名 | 类型 | 必填 | 说明 | 
129
  | -------- | -------- | -------- | -------- |
130
  | want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 启动Ability的want信息。 | 
ahjxliubao2's avatar
ahjxliubao2 已提交
131
  | options | StartOptions | 是 | 启动Ability所携带的参数。 |
132 133

- 返回值:
134
  | 类型 | 说明 | 
135
  | -------- | -------- |
136
  | Promise<void> | Promise形式返回启动结果。 | 
137 138 139 140 141 142 143 144

- 示例:
  ```
  var want = {
  	"deviceId": "",
  	"bundleName": "com.extreme.test",
  	"abilityName": "com.extreme.test.MainAbility"
  };
ahjxliubao2's avatar
ahjxliubao2 已提交
145 146 147 148
  var options = {
  	windowMode: 0,
  };
  this.context.startAbility(want, options)
149 150 151 152 153 154 155 156 157 158
  .then((data) => {
      console.log('Operation successful.')
  }).catch((error) => {
      console.log('Operation failed.');
  })
  ```


## startAbilityForResult

159
startAbilityForResult(want: Want, callback: AsyncCallback<AbilityResult>): void;
160 161 162

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

ahjxliubao2's avatar
ahjxliubao2 已提交
163 164 165 166
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

167
- 参数:
Z
zengyawen 已提交
168
  | 参数名 | 类型 | 必填 | 说明 |
169
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
170
  | want |[Want](js-apis-featureAbility.md#Want类型说明) | 是 | 启动Ability的want信息。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
171
  | callback | AsyncCallback<[AbilityResult](js-apis-featureAbility.md#abilityresult)> | 是 | 执行结果回调函数。 |
172

173 174 175 176 177 178 179 180 181 182 183 184

- 示例:
  ```
  this.context.startAbilityForResult(
      {bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo2"},
      (error, result) => {
          console.log("startAbilityForResult AsyncCallback is called, error.code = " + error.code)
          console.log("startAbilityForResult AsyncCallback is called, result.resultCode = " + result.resultCode)
       }
  );
  ```

ahjxliubao2's avatar
ahjxliubao2 已提交
185 186 187 188 189 190
## startAbilityForResult

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

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

ahjxliubao2's avatar
ahjxliubao2 已提交
191 192 193 194
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

ahjxliubao2's avatar
ahjxliubao2 已提交
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | want |[Want](js-apis-featureAbility.md#Want类型说明) | 是 | 启动Ability的want信息。 |
  | options | StartOptions | 是 | 启动Ability所携带的参数。 |
  | callback | AsyncCallback<[AbilityResult](js-apis-featureAbility.md#abilityresult)> | 是 | 执行结果回调函数。 |


- 示例:
  ```
  var options = {
    windowMode: 0,
  };
  this.context.startAbilityForResult(
      {bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo2"}, options,
      (error, result) => {
          console.log("startAbilityForResult AsyncCallback is called, error.code = " + error.code)
          console.log("startAbilityForResult AsyncCallback is called, result.resultCode = " + result.resultCode)
       }
  );
  ```

217 218 219

## startAbilityForResult

ahjxliubao2's avatar
ahjxliubao2 已提交
220
startAbilityForResult(want: Want, options: StartOptions): Promise<AbilityResult>;
221 222 223

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

ahjxliubao2's avatar
ahjxliubao2 已提交
224 225 226 227
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

228
- 参数:
229
  | 参数名 | 类型 | 必填 | 说明 | 
230
  | -------- | -------- | -------- | -------- |
ahjxliubao2's avatar
ahjxliubao2 已提交
231 232 233
  | want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 启动Ability的want信息。 |
  | options | StartOptions | 是 | 启动Ability所携带的参数。 |

234 235

- 返回值
Z
zengyawen 已提交
236
  | 类型 | 说明 |
237
  | -------- | -------- |
Z
zengyawen 已提交
238
  | Promise<[AbilityResult](js-apis-featureAbility.md#abilityresult)> | Promise形式返回执行结果。 |
239 240 241

- 示例:
  ```
ahjxliubao2's avatar
ahjxliubao2 已提交
242 243 244 245
  var options = {
    windowMode: 0,
  };
  this.context.startAbilityForResult({bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo2"}, options).then((result) => {
246 247 248 249 250 251 252 253 254
      console.log("startAbilityForResult Promise.resolve is called, result.resultCode = " + result.resultCode)
  }, (error) => {
      console.log("startAbilityForResult Promise.Reject is called, error.code = " + error.code)
  })
  ```


## terminateSelf

255
terminateSelf(callback: AsyncCallback<void>): void;
256

257
停止Ability自身。
258

ahjxliubao2's avatar
ahjxliubao2 已提交
259 260 261 262
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

263
- 参数:
264
  | 参数名 | 类型 | 必填 | 说明 | 
265
  | -------- | -------- | -------- | -------- |
ahjxliubao2's avatar
ahjxliubao2 已提交
266
  | callback | AsyncCallback<void> | 是 | 回调函数,返回接口调用是否成功的结果。 | 
267 268 269 270

- 示例:
  ```
  this.context.terminateSelf((err) => {
ahjxliubao2's avatar
ahjxliubao2 已提交
271 272
      console.log('terminateSelf result:' + JSON.stringfy(err));
  });
273 274 275 276 277
  ```


## terminateSelf

278
terminateSelf(): Promise<void>;
279

280
停止Ability自身。通过Promise返回结果。
281

ahjxliubao2's avatar
ahjxliubao2 已提交
282 283 284 285
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

286
- 返回值:
287
  | 类型 | 说明 | 
288
  | -------- | -------- |
289
  | Promise<void> | 返回一个Promise,包含接口的结果。 | 
290 291 292 293 294

- 示例:
  ```
  this.context.terminateSelf(want).then((data) => {
      console.log('success:' + JSON.stringfy(data));
ahjxliubao2's avatar
ahjxliubao2 已提交
295
  }).catch((error) => {
296 297 298 299 300 301 302
      console.log('failed:' + JSON.stringfy(error));
  });
  ```


## terminateSelfWithResult

303
terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback<void>): void;
304

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

ahjxliubao2's avatar
ahjxliubao2 已提交
307 308 309 310
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

311
- 参数
Z
zengyawen 已提交
312
  | 参数名 | 类型 | 必填 | 说明 |
313
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
314
  | parameter | [AbilityResult](js-apis-featureAbility.md#abilityresult) | 是 | 返回给调用startAbilityForResult 接口调用方的相关信息。 |
ahjxliubao2's avatar
ahjxliubao2 已提交
315
  | callback | AsyncCallback<void> | 是 | callback形式返回停止结果。 |
316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331

- 示例:
  ```
  this.context.terminateSelfWithResult(
     {
          want: {bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo"},
          resultCode: 100
      }, (error) => {
          console.log("terminateSelfWithResult is called = " + error.code)
      }
  );
  ```


## terminateSelfWithResult

332
terminateSelfWithResult(parameter: AbilityResult): Promise<void>;
333

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

ahjxliubao2's avatar
ahjxliubao2 已提交
336 337 338 339
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

340
- 参数:
Z
zengyawen 已提交
341
  | 参数名 | 类型 | 必填 | 说明 |
342
  | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
343
  | parameter | [AbilityResult](js-apis-featureAbility.md#abilityresult) | 是 | 返回给startAbilityForResult 调用方的信息。 |
344 345

- 返回值:
346
  | 类型 | 说明 | 
347
  | -------- | -------- |
ahjxliubao2's avatar
ahjxliubao2 已提交
348
  | Promise<void> | promise形式返回停止结果。 | 
349 350 351 352 353 354 355 356 357 358 359 360

- 示例:
  ```
  this.context.terminateSelfWithResult(
  {
      want: {bundleName: "com.extreme.myapplication", abilityName: "MainAbilityDemo"},
      resultCode: 100
  }).then((result) => {
      console.log("terminateSelfWithResult")
  }
  )
  ```
ahjxliubao2's avatar
ahjxliubao2 已提交
361 362 363 364 365 366 367 368


## startAbilityByCall

startAbilityByCall(want: Want): Promise<Caller>;

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

ahjxliubao2's avatar
ahjxliubao2 已提交
369 370 371 372
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

ahjxliubao2's avatar
ahjxliubao2 已提交
373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410
- 参数:
    | 参数名 | 类型 | 必填 | 说明 | 
  | -------- | -------- | -------- | -------- |
  | want | [Want](js-apis-featureAbility.md#Want类型说明) | 是 | 传入需要启动的ability的信息,包含ability名称、包名、设备ID,设备ID缺省或为空表示启动本地ability。 | 

- 返回值:
    | 类型 | 说明 | 
  | -------- | -------- |
  | Promise<> | 获取要通讯的caller对象。 | 

- 示例:
    
  ```
  import Ability from '@ohos.application.Ability';
  var caller;
  export default class MainAbility extends Ability {
      onWindowStageCreate(windowStage) {
          this.context.startAbilityByCall({
              bundleName: "com.example.myservice",
              abilityName: "com.example.myservice.MainAbility",
              deviceId: ""
          }).then((obj) => {
              caller = obj;
              console.log('Caller GetCaller Get ' + call);
          }).catch((e) => {
              console.log('Caller GetCaller error ' + e);
          });
      }
  }
  ```


## requestPermissionsFromUser

requestPermissionsFromUser(permissions: Array<string>, requestCallback: AsyncCallback<PermissionRequestResult>) : void;

拉起弹窗请求用户授权。

ahjxliubao2's avatar
ahjxliubao2 已提交
411 412 413 414
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

ahjxliubao2's avatar
ahjxliubao2 已提交
415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435
- 参数:
    | 参数名 | 类型 | 必填 | 说明 | 
  | -------- | -------- | -------- | -------- |
  | permissions | Array<string> | 是 | 权限列表。 | 
  | callback | AsyncCallback<[PermissionRequestResult](js-apis-permissionrequestresult.md)> | 是 | 回调函数,返回接口调用是否成功的结果。 | 

- 示例:
    
  ```
  this.context.requestPermissionsFromUser(permissions,(result) => {
      console.log('requestPermissionsFromUserresult:' + JSON.stringfy(result));
  });
  ```


## requestPermissionsFromUser

requestPermissionsFromUser(permissions: Array<string>) : Promise<PermissionRequestResult>;

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

ahjxliubao2's avatar
ahjxliubao2 已提交
436 437 438 439
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

ahjxliubao2's avatar
ahjxliubao2 已提交
440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466
- 参数:
    | 参数名 | 类型 | 必填 | 说明 | 
  | -------- | -------- | -------- | -------- |
  | permissions | Array<string> | 是 | 权限列表。 | 

- 返回值:
    | 类型 | 说明 | 
  | -------- | -------- |
  | Promise<[PermissionRequestResult](js-apis-permissionrequestresult.md)> | 返回一个Promise,包含接口的结果。 | 

- 示例:
    
  ```
  this.context.requestPermissionsFromUser(permissions).then((data) => {
      console.log('success:' + JSON.stringfy(data));
  }).catch((error) => {
      console.log('failed:' + JSON.stringfy(error));
  });
  ```


## setMissionLabel

setMissionLabel(label: string, callback:AsyncCallback<void>): void;

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

ahjxliubao2's avatar
ahjxliubao2 已提交
467 468 469 470
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

ahjxliubao2's avatar
ahjxliubao2 已提交
471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491
- 参数:
    | 参数名 | 类型 | 必填 | 说明 | 
  | -------- | -------- | -------- | -------- |
  | label | string | 是 | 显示名称。 | 
  | callback | AsyncCallback<void> | 是 | 回调函数,返回接口调用是否成功的结果。 | 

- 示例:
    
  ```
  this.context.setMissionLabel("test",(result) => {
      console.log('requestPermissionsFromUserresult:' + JSON.stringfy(result));
  });
  ```


## setMissionLabel

setMissionLabel(label: string, callback:AsyncCallback<void>): void;

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

ahjxliubao2's avatar
ahjxliubao2 已提交
492 493 494 495
**系统能力:**

SystemCapability.Ability.AbilityRuntime.Core

ahjxliubao2's avatar
ahjxliubao2 已提交
496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515
- 参数:
    | 参数名 | 类型 | 必填 | 说明 | 
  | -------- | -------- | -------- | -------- |
  | label | string | 是 | 显示名称。 | 

- 返回值:
    | 类型 | 说明 | 
  | -------- | -------- |
  | Promise<void> | 返回一个Promise,包含接口的结果。 | 

- 示例:
    
  ```
  this.context.setMissionLabel("test").then((data) => {
      console.log('success:' + JSON.stringfy(data));
  }).catch((error) => {
      console.log('failed:' + JSON.stringfy(error));
  });
  ```