1# @ohos.app.ability.abilityManager (AbilityManager)(系统接口)
2
3AbilityManager模块提供获取、新增、修改Ability相关信息和运行状态信息的能力。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8> 本模块接口均为系统接口,三方应用不支持调用。
9
10## 导入模块
11
12```ts
13import { abilityManager } from '@kit.AbilityKit';
14```
15
16## UserStatus<sup>12+</sup>
17
18用户操作的断言调试结果,该类型为枚举。
19
20**系统接口**:该接口为系统接口。
21
22**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
23
24| 名称 | 值 | 说明 |
25| -------- | -------- | -------- |
26| ASSERT_TERMINATE | 0 | 表示用户点击终止的操作的断言调试结果。 |
27| ASSERT_CONTINUE | 1 | 表示用户点击继续的操作的断言调试结果。 |
28| ASSERT_RETRY | 2 | 表示用户点击重试的操作的断言调试结果。 |
29
30## updateConfiguration
31
32updateConfiguration(config: Configuration, callback: AsyncCallback\<void>): void
33
34通过传入修改的配置项来更新配置(callback形式)。
35
36**系统接口**:此接口为系统接口。
37
38**需要权限**:ohos.permission.UPDATE_CONFIGURATION
39
40**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
41
42**参数**:
43
44| 参数名        | 类型                                       | 必填   | 说明             |
45| --------- | ---------------------------------------- | ---- | -------------- |
46| config    | [Configuration](js-apis-app-ability-configuration.md)   | 是    | 新的配置项,仅需配置需要更新的项。 |
47| callback  | AsyncCallback\<void>                   | 是    | 以回调方式返回接口运行结果,可进行错误处理或其他自定义处理。      |
48
49**错误码**:
50
51以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
52
53| 错误码ID | 错误信息 |
54| ------- | -------- |
55| 201 | Permission denied. |
56| 202 | Not System App. Interface caller is not a system app. |
57| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
58| 16000050 | Internal error. |
59
60**示例**:
61
62```ts
63import { abilityManager, Configuration, ConfigurationConstant } from '@kit.AbilityKit';
64import { BusinessError } from '@kit.BasicServicesKit';
65
66const config: Configuration = {
67  language: 'Zh-Hans',                 // 简体中文
68  colorMode: ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT,         // 浅色模式
69  direction: ConfigurationConstant.Direction.DIRECTION_VERTICAL,       // 垂直方向
70  screenDensity: ConfigurationConstant.ScreenDensity.SCREEN_DENSITY_SDPI,  // 屏幕像素密度为'sdpi'
71  displayId: 1,                        // 应用在Id为1的物理屏上显示
72  hasPointerDevice: true,              // 指针类型设备已连接
73};
74
75try {
76  abilityManager.updateConfiguration(config, (err: BusinessError) => {
77    if (err) {
78      console.error(`updateConfiguration fail, err: ${JSON.stringify(err)}`);
79    } else {
80      console.log('updateConfiguration success.');
81    }
82  });
83} catch (paramError) {
84  let code: number = (paramError as BusinessError).code;
85  let message: string = (paramError as BusinessError).message;
86  console.error(`error.code: ${code}, error.message: ${message}`);
87}
88```
89
90## updateConfiguration
91
92updateConfiguration(config: Configuration): Promise\<void>
93
94通过修改配置来更新配置(Promise形式)。
95
96**系统接口**:此接口为系统接口。
97
98**需要权限**:ohos.permission.UPDATE_CONFIGURATION
99
100**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
101
102**参数**:
103
104| 参数名        | 类型                                       | 必填   | 说明             |
105| --------- | ---------------------------------------- | ---- | -------------- |
106| config    | [Configuration](js-apis-app-ability-configuration.md)   | 是    | 新的配置项,仅需配置需要更新的项。 |
107
108**返回值:**
109
110| 类型                                       | 说明      |
111| ---------------------------------------- | ------- |
112| Promise\<void> | 以Promise方式返回接口运行结果息,可进行错误处理或其他自定义处理。 |
113
114**错误码**:
115
116以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
117
118| 错误码ID | 错误信息 |
119| ------- | -------- |
120| 201 | Permission denied. |
121| 202 | Not System App. Interface caller is not a system app. |
122| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
123| 16000050 | Internal error. |
124
125**示例**:
126
127```ts
128import { abilityManager, Configuration, ConfigurationConstant } from '@kit.AbilityKit';
129import { BusinessError } from '@kit.BasicServicesKit';;
130
131const config: Configuration = {
132  language: 'Zh-Hans',                 // 简体中文
133  colorMode: ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT,         // 浅色模式
134  direction: ConfigurationConstant.Direction.DIRECTION_VERTICAL,       // 垂直方向
135  screenDensity: ConfigurationConstant.ScreenDensity.SCREEN_DENSITY_SDPI,  // 屏幕像素密度为'sdpi'
136  displayId: 1,                        // 应用在Id为1的物理屏上显示
137  hasPointerDevice: true,              // 指针类型设备已连接
138};
139
140try {
141  abilityManager.updateConfiguration(config).then(() => {
142    console.log('updateConfiguration success.');
143  }).catch((err: BusinessError) => {
144    console.error(`updateConfiguration fail, err: ${JSON.stringify(err)}`);
145  });
146} catch (paramError) {
147  let code: number = (paramError as BusinessError).code;
148  let message: string = (paramError as BusinessError).message;
149  console.error(`error.code: ${code}, error.message: ${message}`);
150}
151```
152
153## getAbilityRunningInfos
154
155getAbilityRunningInfos(callback: AsyncCallback\<Array\<AbilityRunningInfo>>): void
156
157获取UIAbility运行相关信息(callback形式)。
158
159**系统接口**:此接口为系统接口。
160
161**需要权限**:ohos.permission.GET_RUNNING_INFO
162
163**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
164
165**参数**:
166
167| 参数名        | 类型                                       | 必填   | 说明             |
168| --------- | ---------------------------------------- | ---- | -------------- |
169| callback  | AsyncCallback\<Array\<[AbilityRunningInfo](js-apis-inner-application-abilityRunningInfo.md)>>  | 是    | 以回调方式返回接口运行结果及运行中的ability信息,可进行错误处理或其他自定义处理。      |
170
171**错误码**:
172
173以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
174
175| 错误码ID | 错误信息 |
176| ------- | -------- |
177| 202 | Not System App. Interface caller is not a system app. |
178| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
179| 16000050 | Internal error. |
180
181**示例**:
182
183```ts
184import { abilityManager } from '@kit.AbilityKit';
185import { BusinessError } from '@kit.BasicServicesKit';
186
187try {
188  abilityManager.getAbilityRunningInfos((err: BusinessError, data: Array<abilityManager.AbilityRunningInfo>) => {
189    if (err) {
190      console.error(`getAbilityRunningInfos fail, error: ${JSON.stringify(err)}`);
191    } else {
192      console.log(`getAbilityRunningInfos success, data: ${JSON.stringify(data)}`);
193    }
194  });
195} catch (paramError) {
196  let code: number = (paramError as BusinessError).code;
197  let message: string = (paramError as BusinessError).message;
198  console.error(`error.code: ${code}, error.message: ${message}`);
199}
200```
201
202## getExtensionRunningInfos
203
204getExtensionRunningInfos(upperLimit: number, callback: AsyncCallback\<Array\<ExtensionRunningInfo>>): void
205
206获取关于运行扩展能力的信息(callback形式)。
207
208**系统接口**:此接口为系统接口。
209
210**需要权限**:ohos.permission.GET_RUNNING_INFO
211
212**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
213
214**参数**:
215
216| 参数名        | 类型                                       | 必填   | 说明             |
217| --------- | ---------------------------------------- | ---- | -------------- |
218| upperLimit | number                                   | 是 | 获取消息数量的最大限制,最大为2<sup>31</sup>-1。 |
219| callback  | AsyncCallback\<Array\<[ExtensionRunningInfo](js-apis-inner-application-extensionRunningInfo-sys.md)>>  | 是    | 以回调方式返回接口运行结果及运行中的extension信息,可进行错误处理或其他自定义处理。      |
220
221**错误码**:
222
223以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
224
225| 错误码ID | 错误信息 |
226| ------- | -------- |
227| 202 | Not System App. Interface caller is not a system app. |
228| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
229| 16000050 | Internal error. |
230
231**示例**:
232
233```ts
234import { abilityManager } from '@kit.AbilityKit';
235import { BusinessError } from '@kit.BasicServicesKit';
236
237let upperLimit = 10;
238
239try {
240  abilityManager.getExtensionRunningInfos(upperLimit, (err: BusinessError, data: Array<abilityManager.ExtensionRunningInfo>) => {
241    if (err) {
242      console.error(`getExtensionRunningInfos fail, err: ${JSON.stringify(err)}`);
243    } else {
244      console.log(`getExtensionRunningInfos success, data: ${JSON.stringify(data)}`);
245    }
246  });
247} catch (paramError) {
248  let code: number = (paramError as BusinessError).code;
249  let message: string = (paramError as BusinessError).message;
250  console.error(`error.code: ${code}, error.message: ${message}`);
251}
252```
253
254## getExtensionRunningInfos
255
256getExtensionRunningInfos(upperLimit: number): Promise\<Array\<ExtensionRunningInfo>>
257
258获取关于运行扩展能力的信息(Promise形式)。
259
260**系统接口**:此接口为系统接口。
261
262**需要权限**:ohos.permission.GET_RUNNING_INFO
263
264**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
265
266**参数**:
267
268| 参数名        | 类型                                       | 必填   | 说明             |
269| --------- | ---------------------------------------- | ---- | -------------- |
270| upperLimit | number                                   | 是 | 获取消息数量的最大限制,最大为2<sup>31</sup>-1。 |
271
272**返回值:**
273
274| 类型                                       | 说明      |
275| ---------------------------------------- | ------- |
276| Promise\<Array\<[ExtensionRunningInfo](js-apis-inner-application-extensionRunningInfo-sys.md)>> | 以Promise方式返回接口运行结果及运行中的extension信息,可进行错误处理或其他自定义处理。 |
277
278**错误码**:
279
280以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
281
282| 错误码ID | 错误信息 |
283| ------- | -------- |
284| 202 | Not System App. Interface caller is not a system app. |
285| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
286| 16000050 | Internal error. |
287
288**示例**:
289
290```ts
291import { abilityManager } from '@kit.AbilityKit';
292import { BusinessError } from '@kit.BasicServicesKit';
293
294let upperLimit = 10;
295
296try {
297  abilityManager.getExtensionRunningInfos(upperLimit).then((data: Array<abilityManager.ExtensionRunningInfo>) => {
298    console.log(`getExtensionRunningInfos success, data: ${JSON.stringify(data)}`);
299  }).catch((err: BusinessError) => {
300    console.error(`getExtensionRunningInfos fail, err: ${JSON.stringify(err)}`);
301  });
302} catch (paramError) {
303  let code: number = (paramError as BusinessError).code;
304  let message: string = (paramError as BusinessError).message;
305  console.error(`error.code: ${code}, error.message: ${message}`);
306}
307```
308
309## getTopAbility
310
311getTopAbility(callback: AsyncCallback\<ElementName>): void
312
313获取窗口焦点的ability接口(callback形式)。
314
315**系统接口**:此接口为系统接口。
316
317**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
318
319**参数**:
320
321| 参数名        | 类型                                       | 必填   | 说明             |
322| --------- | ---------------------------------------- | ---- | -------------- |
323| callback  | AsyncCallback\<[ElementName](js-apis-bundleManager-elementName.md)>  | 是    | 以回调方式返回接口运行结果及应用名,可进行错误处理或其他自定义处理。      |
324
325**错误码**:
326
327以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
328
329| 错误码ID | 错误信息 |
330| ------- | -------- |
331| 202 | Not System App. Interface caller is not a system app. |
332| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
333| 16000050 | Internal error. |
334
335**示例**:
336
337```ts
338import { abilityManager } from '@kit.AbilityKit';
339import { BusinessError } from '@kit.BasicServicesKit';
340
341abilityManager.getTopAbility((err: BusinessError, data) => {
342  if (err) {
343    console.error(`getTopAbility fail, err: ${JSON.stringify(err)}`);
344  } else {
345    console.log(`getTopAbility success, data: ${JSON.stringify(data)}`);
346  }
347});
348```
349
350## getTopAbility
351
352getTopAbility(): Promise\<ElementName>
353
354获取窗口焦点的ability接口(Promise形式)。
355
356**系统接口**:此接口为系统接口。
357
358**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
359
360**返回值:**
361
362| 类型                                       | 说明      |
363| ---------------------------------------- | ------- |
364| Promise\<[ElementName](js-apis-bundleManager-elementName.md)>| 以Promise方式返回接口运行结果及应用名,可进行错误处理或其他自定义处理。 |
365
366**错误码**:
367
368以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
369
370| 错误码ID | 错误信息 |
371| ------- | -------- |
372| 202 | Not System App. Interface caller is not a system app. |
373| 16000050 | Internal error. |
374
375**示例**:
376
377```ts
378import { abilityManager } from '@kit.AbilityKit';
379import { BusinessError } from '@kit.BasicServicesKit';
380
381abilityManager.getTopAbility().then((data) => {
382  console.log(`getTopAbility success, data: ${JSON.stringify(data)}`);
383}).catch((err: BusinessError) => {
384  console.error(`getTopAbility fail, err: ${JSON.stringify(err)}`);
385});
386```
387
388## acquireShareData<sup>10+</sup>
389
390acquireShareData(missionId: number, callback: AsyncCallback\<Record\<string, Object>>): void
391
392系统弹框通过该接口发起原子化服务分享,调用到目标UIAbility的onShare,返回分享数据(callback形式)。
393
394**系统接口**:此接口为系统接口。
395
396**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
397
398**参数**:
399
400| 参数名        | 类型                                       | 必填   | 说明             |
401| --------- | ---------------------------------------- | ---- | -------------- |
402| missionId | number                                   | 是 | 目标应用的missionId,最大为2<sup>31</sup>-1。 |
403| callback  | AsyncCallback\<Record\<string, Object>>  | 是    | 以回调方式返回接口运行结果及分享得到的数据,可进行错误处理或其他自定义处理。      |
404
405**错误码**:
406
407以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
408
409| 错误码ID | 错误信息 |
410| ------- | -------- |
411| 202 | Not System App. Interface caller is not a system app. |
412| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
413| 16000050 | Internal error. |
414
415**示例**:
416
417```ts
418import { abilityManager } from '@kit.AbilityKit';
419import { BusinessError } from '@kit.BasicServicesKit';
420
421try {
422  abilityManager.acquireShareData(1, (err: BusinessError, wantParam: Record<string, Object>) => {
423    if (err) {
424      console.error(`acquireShareData fail, err: ${JSON.stringify(err)}`);
425    } else {
426      console.log(`acquireShareData success, data: ${JSON.stringify(wantParam)}`);
427    }
428  });
429} catch (paramError) {
430  let code: number = (paramError as BusinessError).code;
431  let message: string = (paramError as BusinessError).message;
432  console.error(`error.code: ${code}, error.message: ${message}`);
433}
434```
435
436## acquireShareData<sup>10+</sup>
437
438acquireShareData(missionId: number): Promise\<Record\<string, Object>>
439
440系统弹框通过该接口发起原子化服务分享,调用到目标UIAbility的onShare,返回分享数据(Promise形式)。
441
442**系统接口**:此接口为系统接口。
443
444**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
445
446**参数**:
447
448| 参数名        | 类型                                       | 必填   | 说明             |
449| --------- | ---------------------------------------- | ---- | -------------- |
450| missionId | number                                   | 是 | 目标应用的missionId,最大为2<sup>31</sup>-1。 |
451
452**返回值:**
453
454| 类型                                       | 说明      |
455| ---------------------------------------- | ------- |
456| Promise\<Record\<string, Object>>| 以Promise方式返回接口运行结果及分享数据,可进行错误处理或其他自定义处理。 |
457
458**错误码**:
459
460以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
461
462| 错误码ID | 错误信息 |
463| ------- | -------- |
464| 202 | Not System App. Interface caller is not a system app. |
465| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
466| 16000050 | Internal error. |
467
468**示例**:
469
470```ts
471import { abilityManager } from '@kit.AbilityKit';
472import { BusinessError } from '@kit.BasicServicesKit';
473
474try {
475  abilityManager.acquireShareData(1).then((wantParam: Record<string, Object>) => {
476    console.log(`acquireShareData success, data: ${JSON.stringify(wantParam)}`);
477  }).catch((err: BusinessError) => {
478    console.error(`acquireShareData fail, err: ${JSON.stringify(err)}`);
479  });
480} catch (paramError) {
481  let code: number = (paramError as BusinessError).code;
482  let message: string = (paramError as BusinessError).message;
483  console.error(`error.code: ${code}, error.message: ${message}`);
484}
485```
486
487## notifySaveAsResult<sup>10+</sup>
488
489notifySaveAsResult(parameter: AbilityResult, requestCode: number, callback: AsyncCallback\<void>): void
490
491该接口仅供[DLP](../apis-data-protection-kit/js-apis-dlppermission.md)(Data Loss Prevention, 数据丢失防护)管理应用使用,其他应用禁止使用,DLP管理应用通过该接口通知沙箱应用另存为结果。使用callback异步回调。
492
493**模型约束**:此接口仅可在Stage模型下使用。
494
495**系统接口**:此接口为系统接口。
496
497**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
498
499**参数**:
500
501| 参数名        | 类型                                       | 必填   | 说明             |
502| --------- | ---------------------------------------- | ---- | -------------- |
503| parameter | [AbilityResult](js-apis-inner-ability-abilityResult.md) | 是 | 返回给调用startAbilityForResult&nbsp;接口调用方的相关信息。 |
504| requestCode | number                                        | 是 | DLP管理应用传入的请求代码。          |
505| callback  | AsyncCallback<void\>                             | 是 | 回调函数。当另存为结果通知成功,err为undefined,否则为错误对象。         |
506
507**错误码**:
508
509以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
510
511| 错误码ID | 错误信息 |
512| ------- | -------- |
513| 201 | Permission denied. |
514| 202 | Not System App. Interface caller is not a system app. |
515| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
516| 16000050 | Internal error. |
517
518**示例**:
519
520```ts
521import { abilityManager, Want, common } from '@kit.AbilityKit';
522import { BusinessError } from '@kit.BasicServicesKit';
523
524let want: Want = {
525  bundleName: 'com.example.myapplication',
526  abilityName: 'EntryAbility'
527};
528let resultCode = 100;
529// 返回给另存为行为发起方AbilityResult信息
530let abilityResult: common.AbilityResult = {
531  want,
532  resultCode
533};
534let requestCode = 1;
535try {
536  abilityManager.notifySaveAsResult(abilityResult, requestCode, (err: BusinessError) => {
537    if (err && err.code != 0) {
538      console.error(`notifySaveAsResult fail, err: ${JSON.stringify(err)}`);
539    } else {
540      console.log(`notifySaveAsResult success`);
541    }
542  });
543} catch (paramError) {
544  let code: number = (paramError as BusinessError).code;
545  let message: string = (paramError as BusinessError).message;
546  console.error(`error.code: ${code}, error.message: ${message}`);
547}
548```
549
550## notifySaveAsResult<sup>10+</sup>
551
552notifySaveAsResult(parameter: AbilityResult, requestCode: number): Promise\<void>
553
554该接口仅供[DLP](../apis-data-protection-kit/js-apis-dlppermission.md)(Data Loss Prevention, 数据丢失防护)管理应用使用,其他应用禁止使用,DLP管理应用通过该接口通知沙箱应用另存为结果。使用Promise异步回调。
555
556**模型约束**:此接口仅可在Stage模型下使用。
557
558**系统接口**:此接口为系统接口。
559
560**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
561
562**参数**:
563
564| 参数名        | 类型                                       | 必填   | 说明             |
565| --------- | ---------------------------------------- | ---- | -------------- |
566| parameter | [AbilityResult](js-apis-inner-ability-abilityResult.md) | 是 | 返回给调用startAbilityForResult&nbsp;接口调用方的相关信息。 |
567| requestCode | number                                        | 是 | DLP管理应用传入的请求代码。          |
568
569**返回值:**
570
571| 类型                                       | 说明      |
572| ---------------------------------------- | ------- |
573| Promise<void\>| Promise对象。无返回结果的Promise对象。 |
574
575**错误码**:
576
577以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
578
579| 错误码ID | 错误信息 |
580| ------- | -------- |
581| 201 | Permission denied. |
582| 202 | Not System App. Interface caller is not a system app. |
583| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
584| 16000050 | Internal error. |
585
586**示例**:
587
588```ts
589import { abilityManager, Want, common } from '@kit.AbilityKit';
590import { BusinessError } from '@kit.BasicServicesKit';
591
592let want: Want = {
593  bundleName: 'com.example.myapplication',
594  abilityName: 'EntryAbility'
595};
596let resultCode = 100;
597// 返回给另存为行为发起方AbilityResult信息
598let abilityResult: common.AbilityResult = {
599  want,
600  resultCode
601};
602let requestCode = 1;
603try {
604  abilityManager.notifySaveAsResult(abilityResult, requestCode).then(() => {
605    console.log(`notifySaveAsResult success`);
606  }).catch((err: BusinessError) => {
607    console.error(`notifySaveAsResult fail, err: ${JSON.stringify(err)}`);
608  });
609} catch (paramError) {
610  let code: number = (paramError as BusinessError).code;
611  let message: string = (paramError as BusinessError).message;
612  console.error(`error.code: ${code}, error.message: ${message}`);
613}
614```
615
616## abilityManager.on('abilityForegroundState')<sup>11+</sup>
617
618on(type: 'abilityForegroundState', observer: AbilityForegroundStateObserver): void
619
620注册Ability的启动和退出的观测器。
621
622**系统接口**:此接口为系统接口。
623
624**需要权限**:ohos.permission.RUNNING_STATE_OBSERVER
625
626**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
627
628**参数:**
629
630| 参数名 | 类型 | 必填 | 说明 |
631| -------- | -------- | -------- | -------- |
632| type | string | 是 | 调用接口类型,固定填'abilityForegroundState'字符串。 |
633| observer | [AbilityForegroundStateObserver](js-apis-inner-application-abilityForegroundStateObserver-sys) | 是 | Ability状态观测器,用于观测Ability的启动和退出。 |
634
635**错误码**:
636
637以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
638
639| 错误码ID | 错误信息 |
640| ------- | -------- |
641| 201 | Permission denied. |
642| 202 | Not System App. Interface caller is not a system app. |
643| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
644| 16000050 | Internal error. |
645
646**示例:**
647
648```ts
649import { abilityManager } from '@kit.AbilityKit';
650import { BusinessError } from '@kit.BasicServicesKit';
651
652let observer: abilityManager.AbilityForegroundStateObserver = {
653  onAbilityStateChanged(abilityStateData) {
654    console.log(`onAbilityStateChanged: ${JSON.stringify(abilityStateData)}`);
655  },
656};
657try {
658  abilityManager.on('abilityForegroundState', observer);
659} catch (paramError) {
660  let code = (paramError as BusinessError).code;
661  let message = (paramError as BusinessError).message;
662  console.error(`error: ${code}, ${message} `);
663}
664```
665
666## abilityManager.off('abilityForegroundState')<sup>11+</sup>
667
668off(type: 'abilityForegroundState', observer?: AbilityForegroundStateObserver): void
669
670取消注册Ability启动和退出的观测器。
671
672**系统接口**:此接口为系统接口。
673
674**需要权限**:ohos.permission.RUNNING_STATE_OBSERVER
675
676**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
677
678**参数:**
679
680| 参数名 | 类型 | 必填 | 说明 |
681| -------- | -------- | -------- | -------- |
682| type | string | 是 | 调用接口类型,固定填'abilityForegroundState'字符串。 |
683| observer | [AbilityForegroundStateObserver](js-apis-inner-application-abilityForegroundStateObserver-sys) | 否 | Ability状态观测器,用于观测Ability的启动和退出。如果未配置该参数,则取消当前应用注册的所有observer。如果配置了该参数,则取消该observer。 |
684
685**错误码**:
686
687以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
688
689| 错误码ID | 错误信息 |
690| ------- | -------- |
691| 201 | Permission denied. |
692| 202 | Not System App. Interface caller is not a system app. |
693| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
694| 16000050 | Internal error. |
695
696**示例:**
697
698```ts
699import { abilityManager } from '@kit.AbilityKit';
700import { BusinessError } from '@kit.BasicServicesKit';
701
702let observer_: abilityManager.AbilityForegroundStateObserver | undefined;
703// 1.注册应用启动和退出的监听器
704let observer: abilityManager.AbilityForegroundStateObserver = {
705  onAbilityStateChanged(abilityStateData: abilityManager.AbilityStateData) {
706    console.log(`onAbilityStateChanged: ${JSON.stringify(abilityStateData)}`);
707  },
708};
709try {
710  abilityManager.on('abilityForegroundState', observer);
711  observer_ = observer;
712} catch (paramError) {
713  let code = (paramError as BusinessError).code;
714  let message = (paramError as BusinessError).message;
715  console.error(`error: ${code}, ${message} `);
716}
717
718// 2.注销监听器
719try {
720  abilityManager.off('abilityForegroundState',  observer_);
721} catch (paramError) {
722  let code = (paramError as BusinessError).code;
723  let message = (paramError as BusinessError).message;
724  console.error(`error: ${code}, ${message} `);
725}
726```
727
728## abilityManager.getForegroundUIAbilities<sup>11+</sup>
729
730getForegroundUIAbilities(callback: AsyncCallback\<Array\<AbilityStateData>>): void
731
732获取前台正在运行的应用Ability的信息。
733
734**系统接口**:此接口为系统接口。
735
736**需要权限**:ohos.permission.GET_RUNNING_INFO
737
738**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
739
740**参数:**
741
742  | 参数名 | 类型 | 必填 | 说明 |
743  | -------- | -------- | -------- | -------- |
744  | callback | AsyncCallback\<Array\<[AbilityStateData](js-apis-inner-application-abilityStateData.md)>>  | 是 |以回调方式返回接口运行结果及有关前台Ability的信息,可进行错误处理或其他自定义处理。 |
745
746**错误码**:
747
748以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
749
750| 错误码ID | 错误信息 |
751| ------- | -------- |
752| 201 | Permission denied. |
753| 202 | Not System App. Interface caller is not a system app. |
754| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
755| 16000050 | Internal error. |
756
757**示例:**
758
759```ts
760import { abilityManager } from '@kit.AbilityKit';
761import { BusinessError } from '@kit.BasicServicesKit';
762
763abilityManager.getForegroundUIAbilities((err: BusinessError, data: Array<abilityManager.AbilityStateData>) => {
764  if (err) {
765    console.error(`Get foreground ui abilities failed, error: ${JSON.stringify(err)}`);
766  } else {
767    console.log(`Get foreground ui abilities data is: ${JSON.stringify(data)}`);
768  }
769});
770```
771
772## abilityManager.getForegroundUIAbilities<sup>11+</sup>
773
774getForegroundUIAbilities(): Promise\<Array\<AbilityStateData>>
775
776获取前台正在运行的应用Ability的信息。
777
778**系统接口**:此接口为系统接口。
779
780**需要权限**:ohos.permission.GET_RUNNING_INFO
781
782**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
783
784**返回值:**
785
786| 类型 | 说明 |
787| -------- | -------- |
788| Promise\<Array\<[AbilityStateData](js-apis-inner-application-abilityStateData.md)>> | 以Promise方式返回接口运行结果及有关前台Ability的信息,可进行错误处理或其他自定义处理。|
789
790**错误码**:
791
792以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
793
794| 错误码ID | 错误信息 |
795| ------- | -------- |
796| 201 | Permission denied. |
797| 202 | Not System App. Interface caller is not a system app. |
798| 16000050 | Internal error. |
799
800**示例:**
801
802```ts
803import { abilityManager } from '@kit.AbilityKit';
804import { BusinessError } from '@kit.BasicServicesKit';
805
806abilityManager.getForegroundUIAbilities().then((data: Array<abilityManager.AbilityStateData>) => {
807  console.log(`Get foreground ui abilities data is: ${JSON.stringify(data)}`);
808}).catch((error: BusinessError) => {
809  console.error(`Get foreground ui abilities failed, error: ${JSON.stringify(error)}`);
810});
811```
812
813## abilityManager.notifyDebugAssertResult<sup>12+</sup>
814
815notifyDebugAssertResult(sessionId: string, status: UserStatus): Promise\<void>
816
817将断言调试结果通知应用程序。使用Promise异步回调。
818
819**系统接口**:此接口为系统接口。
820
821**需要权限**:ohos.permission.NOTIFY_DEBUG_ASSERT_RESULT
822
823**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
824
825**参数**:
826
827| 参数名 | 类型 | 必填 | 说明 |
828| ------- | -------- | -------- | -------- |
829| sessionId | string | 是 | 指示AssertFault的请求ID。 |
830| status | [UserStatus](#userstatus12) | 是 | 用户的操作状态。 |
831
832**返回值:**
833
834| 类型 | 说明 |
835| -------- | -------- |
836| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
837
838**错误码**:
839
840以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
841
842| 错误码ID | 错误信息 |
843| ------- | -------- |
844| 201 | Permission denied. |
845| 202 | Not System App. Interface caller is not a system app. |
846| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
847| 16000050 | Internal error. |
848
849**示例:**
850
851```ts
852import { abilityManager, UIExtensionAbility, wantConstant, Want, UIExtensionContentSession } from '@kit.AbilityKit';
853import { BusinessError } from '@kit.BasicServicesKit';
854
855export default class UiExtAbility extends UIExtensionAbility {
856  onSessionCreate(want: Want, session: UIExtensionContentSession): void {
857    let sessionId: string = '';
858    if (want.parameters) {
859      sessionId = want.parameters[wantConstant.Params.ASSERT_FAULT_SESSION_ID] as string;
860    }
861    let status = abilityManager.UserStatus.ASSERT_TERMINATE;
862    abilityManager.notifyDebugAssertResult(sessionId, status).then(() => {
863      console.log('notifyDebugAssertResult success.');
864    }).catch((err: BusinessError) => {
865      console.error(`notifyDebugAssertResult failed, error: ${JSON.stringify(err)}`);
866    });
867  }
868}
869```
870
871## abilityManager.isEmbeddedOpenAllowed<sup>12</sup>
872
873isEmbeddedOpenAllowed(context: Context, appId: string): Promise\<boolean>
874
875判断是否允许嵌入式拉起[EmbeddableUIAbility](js-apis-app-ability-embeddableUIAbility.md)。使用Promise异步回调。
876
877**系统接口**:此接口为系统接口。
878
879**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
880
881**参数**:
882
883| 参数名 | 类型 | 必填 | 说明 |
884| ------- | -------- | -------- | -------- |
885| context | [Context](js-apis-inner-application-context.md) | 是 | 嵌入式拉起EmbeddableUIAbility的调用方Context。 |
886| appId | string | 是 | 应用的唯一标识,由云端统一分配。 |
887
888**返回值:**
889
890| 类型 | 说明 |
891| -------- | -------- |
892| Promise\<boolean> | Promise对象。返回true表示允许嵌入式启动,返回false表示不允许嵌入式启动。 |
893
894**错误码**:
895
896以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
897
898| 错误码ID | 错误信息 |
899| ------- | -------- |
900| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
901| 16000050 | Internal error. |
902
903**示例:**
904
905```ts
906import { abilityManager, UIAbility } from '@kit.AbilityKit';
907import { BusinessError } from '@kit.BasicServicesKit';
908
909export default class EntryAbility extends UIAbility {
910  onForeground() {
911    let appId: string = '6918661953712445909';
912    try {
913      abilityManager.isEmbeddedOpenAllowed(this.context, appId).then((data) => {
914        console.info(`isEmbeddedOpenAllowed data: ${JSON.stringify(data)}`);
915      }).catch((err: BusinessError) => {
916        console.error(`isEmbeddedOpenAllowed failed, code is ${err.code}, message is ${err.message}`);
917      });
918    } catch (err) {
919      // 处理入参错误异常
920      console.error(`param is invalid, code is ${err.code}, message is ${err.message}`);
921    }
922  }
923}
924```
925
926## abilityManager.setResidentProcessEnabled<sup>12+</sup>
927
928setResidentProcessEnabled(bundleName: string, enable: boolean): Promise\<void>
929
930常驻进程支持按需启停。
931
932**系统接口**:此接口为系统接口。
933
934**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
935
936**参数**:
937
938| 参数名 | 类型 | 必填 | 说明 |
939| ------- | -------- | -------- | -------- |
940| bundleName | string | 是 | 常驻进程的包名。 |
941| enable | boolean | 是 | 常驻进程的使能状态。 true:表示该进程为常驻进程。 false:表示该进程为普通进程,不会进行保活。|
942
943**返回值:**
944
945| 类型 | 说明 |
946| -------- | -------- |
947| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
948
949**错误码**:
950
951以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)和[元能力子系统错误码](errorcode-ability.md)。
952
953| 错误码ID | 错误信息 |
954| ------- | -------- |
955| 202 | Not a system application. |
956| 401 | Parameter error. Possible cause: 1.Non empty package name needs to be provided, 2.The second parameter needs to provide a Boolean type setting value |
957| 16000050 | Internal error. |
958| 16200006 | The caller application can only set the resident status of the configured process |
959
960**示例:**
961
962```ts
963import { abilityManager } from '@kit.AbilityKit';
964import { BusinessError } from '@kit.BasicServicesKit';
965
966try {
967  let residentProcessBundleName: string = 'com.xxx.xxxxxx';
968  let enable: boolean = false;
969  abilityManager.setResidentProcessEnabled(residentProcessBundleName, enable)
970    .then(() => {
971      console.log('setResidentProcessEnabled success.');
972    })
973    .catch((err: BusinessError) => {
974      console.error(`setResidentProcessEnabled fail, err: ${JSON.stringify(err)}`);
975    });
976} catch (err) {
977  let code = (err as BusinessError).code;
978  let message = (err as BusinessError).message;
979  console.error(`setResidentProcessEnabled failed, code is ${code}, message is ${message}`);
980}
981```
982