1# @ohos.ability.featureAbility (FeatureAbility模块)
2
3FeatureAbility模块提供与用户进行交互的Ability的能力,包括启动新的Ability、停止Ability、获取dataAbilityHelper对象、获取当前Ability对应的窗口,连接断连Service等。
4
5> **说明:**
6>
7> 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9> 本模块接口仅可在FA模型下使用。
10
11## 使用限制
12
13FeatureAbility模块的接口只能在Page类型的Ability中调用。
14
15## 导入模块
16
17```ts
18import { featureAbility } from '@kit.AbilityKit';
19```
20
21## featureAbility.startAbility
22
23startAbility(parameter: StartAbilityParameter, callback: AsyncCallback\<number>): void
24
25启动新的Ability。使用callback异步回调。
26
27> **说明:**
28>
29> 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)。
30
31**模型约束**:此接口仅可在FA模型下使用。
32
33**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
34
35**参数:**
36
37| 参数名        | 类型                                       | 必填   | 说明             |
38| --------- | ---------------------------------------- | ---- | -------------- |
39| parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | 是    | 表示被启动的Ability。 |
40| callback  | AsyncCallback\<number>                   | 是    | 回调函数。当启动Ability成功,err为undefined,data为0表示启动成功,data为其他表示启动失败;否则为错误对象。      |
41
42**示例:**
43
44<!--code_no_check_fa-->
45```ts
46import { featureAbility, wantConstant } from '@kit.AbilityKit';
47
48featureAbility.startAbility(
49  {
50    want:
51    {
52      action: '',
53      entities: [''],
54      type: '',
55      flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
56      deviceId: '',
57      bundleName: 'com.example.myapplication',
58      /* FA模型中abilityName由package + Ability name组成 */
59      abilityName: 'com.example.myapplication.secondAbility',
60      uri: ''
61    },
62  },
63  (error, data) => {
64    if (error && error.code !== 0) {
65      console.error(`startAbility fail, error: ${JSON.stringify(error)}`);
66    } else {
67      console.log(`startAbility success, data: ${JSON.stringify(data)}`);
68    }
69  }
70);
71```
72
73
74
75## featureAbility.startAbility
76
77startAbility(parameter: StartAbilityParameter): Promise\<number>
78
79启动新的Ability。使用Promise异步回调。
80
81> **说明:**
82>
83> 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)。
84
85**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
86
87**模型约束**:此接口仅可在FA模型下使用。
88
89**参数:**
90
91| 参数名        | 类型                                       | 必填   | 说明             |
92| --------- | ---------------------------------------- | ---- | -------------- |
93| parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | 是    | 表示被启动的Ability。 |
94
95**返回值:**
96
97| 类型                                       | 说明      |
98| ---------------------------------------- | ------- |
99| Promise\<number> | Promise对象。返回0表示启动成功,返回其他表示启动失败。 |
100
101**示例:**
102
103<!--code_no_check_fa-->
104```ts
105import { featureAbility, wantConstant } from '@kit.AbilityKit';
106
107featureAbility.startAbility(
108  {
109    want:
110    {
111      action: 'ohos.want.action.home',
112      entities: ['entity.system.home'],
113      type: 'MIMETYPE',
114      flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
115      deviceId: '',
116      bundleName: 'com.example.myapplication',
117      /* FA模型中abilityName由package + Ability name组成 */
118      abilityName: 'com.example.myapplication.secondAbility',
119      uri: ''
120    },
121  }
122).then((data) => {
123  console.info(`startAbility data: ${JSON.stringify(data)}`);
124});
125```
126
127## featureAbility.acquireDataAbilityHelper<sup>7+</sup>
128
129acquireDataAbilityHelper(uri: string): DataAbilityHelper
130
131获取dataAbilityHelper对象。
132
133> **说明:**
134>
135> 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)。
136>
137> 跨应用访问dataAbility,对端应用需配置关联启动。
138
139**模型约束**:此接口仅可在FA模型下使用。
140
141**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
142
143**参数:**
144
145| 参数名   | 类型     | 必填   | 说明           |
146| ---- | ------ | ---- | ------------ |
147| uri  | string | 是    | 表示要打开的文件的路径。 |
148
149**返回值:**
150
151| 类型                | 说明                              |
152| ----------------- | ------------------------------- |
153| [DataAbilityHelper](js-apis-inner-ability-dataAbilityHelper.md) | 用来协助其他Ability访问DataAbility的工具类。 |
154
155**示例:**
156
157<!--code_no_check_fa-->
158```ts
159import { featureAbility } from '@kit.AbilityKit';
160
161let dataAbilityHelper = featureAbility.acquireDataAbilityHelper(
162  'dataability:///com.example.DataAbility'
163);
164```
165
166## featureAbility.startAbilityForResult<sup>7+</sup>
167
168startAbilityForResult(parameter: StartAbilityParameter, callback: AsyncCallback\<AbilityResult>): void
169
170启动一个Ability。使用callback异步回调。启动Ability后,存在如下几种情况:
171 - 正常情况下可通过调用[terminateSelfWithResult](#featureabilityterminateselfwithresult7)接口使之终止并且返回结果给调用方。
172 - 异常情况下比如杀死Ability会返回异常信息给调用方, 异常信息中resultCode为-1。
173 - 如果被启动的Ability模式是单实例模式, 不同应用多次调用该接口启动这个Ability,当这个Ability调用[terminateSelfWithResult](#featureabilityterminateselfwithresult7)接口使之终止时,只将正常结果返回给最后一个调用方, 其它调用方返回异常信息, 异常信息中resultCode为-1。
174
175> **说明:**
176>
177> 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)。
178
179**模型约束**:此接口仅可在FA模型下使用。
180
181**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
182
183**参数:**
184
185| 参数名        | 类型                                       | 必填   | 说明             |
186| --------- | ---------------------------------------- | ---- | -------------- |
187| parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | 是    | 表示被启动的Ability。 |
188| callback  | AsyncCallback\<[AbilityResult](js-apis-inner-ability-abilityResult.md)> | 是    | 回调函数。当启动Ability成功,err为undefined,data为ability的启动结果;否则为错误对象。      |
189
190**示例:**
191
192<!--code_no_check_fa-->
193```ts
194import { featureAbility, wantConstant } from '@kit.AbilityKit';
195
196featureAbility.startAbilityForResult(
197  {
198    want:
199    {
200      action: 'ohos.want.action.home',
201      entities: ['entity.system.home'],
202      type: 'MIMETYPE',
203      flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
204      deviceId: '',
205      bundleName: 'com.example.myapplication',
206      /* FA模型中abilityName由package + Ability name组成 */
207      abilityName: 'com.example.myapplication.secondAbility',
208      uri: ''
209    },
210  },
211  (error, data) => {
212    if (error && error.code !== 0) {
213      console.error(`startAbilityForResult fail, error: ${JSON.stringify(error)}`);
214    } else {
215      console.log(`startAbilityForResult success, data: ${JSON.stringify(data)}`);
216    }
217  }
218);
219```
220
221## featureAbility.startAbilityForResult<sup>7+</sup>
222
223startAbilityForResult(parameter: StartAbilityParameter): Promise\<AbilityResult>
224
225启动一个Ability。使用Promise异步回调。启动Ability后,存在如下几种情况:
226 - 正常情况下可通过调用[terminateSelfWithResult](#featureabilityterminateselfwithresult7)接口使之终止并且返回结果给调用方。
227 - 异常情况下比如杀死Ability会返回异常信息给调用方, 异常信息中resultCode为-1。
228 - 如果被启动的Ability模式是单实例模式, 不同应用多次调用该接口启动这个Ability,当这个Ability调用[terminateSelfWithResult](#featureabilityterminateselfwithresult7)接口使之终止时,只将正常结果返回给最后一个调用方, 其它调用方返回异常信息, 异常信息中resultCode为-1。
229
230> **说明:**
231>
232> 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)。
233
234**模型约束**:此接口仅可在FA模型下使用。
235
236**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
237
238**参数:**
239
240| 参数名        | 类型                                       | 必填   | 说明            |
241| --------- | ---------------------------------------- | ---- | ------------- |
242| parameter | [StartAbilityParameter](js-apis-inner-ability-startAbilityParameter.md) | 是    | 表示被启动的Ability。 |
243
244**返回值:**
245
246| 类型                                       | 说明      |
247| ---------------------------------------- | ------- |
248| Promise\<[AbilityResult](js-apis-inner-ability-abilityResult.md)> | Promise对象,返回启动Ability的结果。 |
249
250**示例:**
251
252<!--code_no_check_fa-->
253```ts
254import { featureAbility, wantConstant } from '@kit.AbilityKit';
255
256featureAbility.startAbilityForResult(
257  {
258    want:
259    {
260      action: 'ohos.want.action.home',
261      entities: ['entity.system.home'],
262      type: 'MIMETYPE',
263      flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
264      deviceId: '',
265      bundleName: 'com.example.myapplication',
266      /* FA模型中abilityName由package + Ability name组成 */
267      abilityName: 'com.example.myapplication.secondAbility',
268      uri: '',
269      parameters:
270      {
271        mykey0: 1111,
272        mykey1: [1, 2, 3],
273        mykey2: '[1, 2, 3]',
274        mykey3: 'xxxxxxxxxxxxxxxxxxxxxx',
275        mykey4: [1, 15],
276        mykey5: [false, true, false],
277        mykey6: ['aaaaaa', 'bbbbb', 'ccccccccccc'],
278        mykey7: true,
279      },
280    },
281  },
282).then((data) => {
283  console.info(`startAbilityForResult data: ${JSON.stringify(data)}`);
284});
285```
286
287## featureAbility.terminateSelfWithResult<sup>7+</sup>
288
289terminateSelfWithResult(parameter: AbilityResult, callback: AsyncCallback\<void>): void
290
291停止当前的Ability。使用callback异步回调。如果该Ability是通过调用[startAbilityForResult](#featureabilitystartabilityforresult7)接口被拉起的,调用terminateSelfWithResult接口时会将结果返回给调用者,如果该Ability不是通过调用[startAbilityForResult](#featureabilitystartabilityforresult7)接口被拉起的,调用terminateSelfWithResult接口时不会有结果返回给调用者。
292
293**模型约束**:此接口仅可在FA模型下使用。
294
295**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
296
297**参数:**
298
299| 参数名        | 类型                              | 必填   | 说明             |
300| --------- | ------------------------------- | ---- | -------------- |
301| parameter | [AbilityResult](js-apis-inner-ability-abilityResult.md) | 是    | 表示停止Ability之后返回的结果。 |
302| callback  | AsyncCallback\<void>            | 是    | 回调函数。当停止当前Ability成功,err为undefined,否则为错误对象。      |
303
304**示例:**
305
306<!--code_no_check_fa-->
307```ts
308import { featureAbility, wantConstant } from '@kit.AbilityKit';
309
310featureAbility.terminateSelfWithResult(
311  {
312    resultCode: 1,
313    want:
314    {
315      action: 'ohos.want.action.home',
316      entities: ['entity.system.home'],
317      type: 'MIMETYPE',
318      flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
319      deviceId: '',
320      bundleName: 'com.example.myapplication',
321      /* FA模型中abilityName由package + Ability name组成 */
322      abilityName: 'com.example.myapplication.secondAbility',
323      uri: '',
324      parameters: {
325        mykey0: 2222,
326        mykey1: [1, 2, 3],
327        mykey2: '[1, 2, 3]',
328        mykey3: 'ssssssssssssssssssssssssss',
329        mykey4: [1, 15],
330        mykey5: [false, true, false],
331        mykey6: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'],
332        mykey7: true,
333      }
334    },
335  },
336  (error) => {
337    console.error(`error: ${JSON.stringify(error)}`);
338  }
339);
340```
341
342## featureAbility.terminateSelfWithResult<sup>7+</sup>
343
344terminateSelfWithResult(parameter: AbilityResult): Promise\<void>
345
346停止当前的Ability。使用Promise异步回调。如果该Ability是通过调用[startAbilityForResult](#featureabilitystartabilityforresult7)接口被拉起的,调用terminateSelfWithResult接口时会将结果返回给调用者,如果该Ability不是通过调用[startAbilityForResult](#featureabilitystartabilityforresult7)接口被拉起的,调用terminateSelfWithResult接口时不会有结果返回给调用者。
347
348**模型约束**:此接口仅可在FA模型下使用。
349
350**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
351
352**参数:**
353
354| 参数名        | 类型                              | 必填   | 说明            |
355| --------- | ------------------------------- | ---- | ------------- |
356| parameter | [AbilityResult](js-apis-inner-ability-abilityResult.md) | 是    | 表示停止Ability之后返回的结果。 |
357
358**返回值:**
359
360| 类型             | 说明              |
361| -------------- | --------------- |
362| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
363
364**示例:**
365
366<!--code_no_check_fa-->
367```ts
368import { featureAbility, wantConstant } from '@kit.AbilityKit';
369
370featureAbility.terminateSelfWithResult(
371  {
372    resultCode: 1,
373    want:
374    {
375      action: 'ohos.want.action.home',
376      entities: ['entity.system.home'],
377      type: 'MIMETYPE',
378      flags: wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,
379      deviceId: '',
380      bundleName: 'com.example.myapplication',
381      /* FA模型中abilityName由package + Ability name组成 */
382      abilityName: 'com.example.myapplication.secondAbility',
383      uri:'',
384      parameters: {
385        mykey0: 2222,
386        mykey1: [1, 2, 3],
387        mykey2: '[1, 2, 3]',
388        mykey3: 'ssssssssssssssssssssssssss',
389        mykey4: [1, 15],
390        mykey5: [false, true, false],
391        mykey6: ['qqqqq', 'wwwwww', 'aaaaaaaaaaaaaaaaa'],
392        mykey7: true,
393      }
394    },
395  }
396).then(() => {
397  console.info('==========================>terminateSelfWithResult=======================>');
398});
399```
400
401## featureAbility.hasWindowFocus<sup>7+<sup>
402
403hasWindowFocus(callback: AsyncCallback\<boolean>): void
404
405检查Ability的主窗口是否具有窗口焦点。使用callback异步回调。
406
407**模型约束**:此接口仅可在FA模型下使用。
408
409**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
410
411**参数:**
412
413| 参数名       | 类型                      | 必填   | 说明                                       |
414| -------- | ----------------------- | ---- | ---------------------------------------- |
415| callback | AsyncCallback\<boolean> | 是    |回调函数。<br>如果此Ability当前具有视窗焦点,则返回true;否则返回false。 |
416
417**示例:**
418
419<!--code_no_check_fa-->
420```ts
421import { featureAbility } from '@kit.AbilityKit';
422
423featureAbility.hasWindowFocus((error, data) => {
424  if (error && error.code !== 0) {
425    console.error(`hasWindowFocus fail, error: ${JSON.stringify(error)}`);
426  } else {
427    console.log(`hasWindowFocus success, data: ${JSON.stringify(data)}`);
428  }
429});
430```
431
432## featureAbility.hasWindowFocus<sup>7+<sup>
433
434hasWindowFocus(): Promise\<boolean>
435
436检查Ability的主窗口是否具有窗口焦点。使用Promise异步回调。
437
438**模型约束**:此接口仅可在FA模型下使用。
439
440**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
441
442**返回值:**
443
444| 类型                | 说明                                    |
445| ----------------- | ------------------------------------- |
446| Promise\<boolean> | Promise对象。如果此Ability当前具有视窗焦点,则返回true;否则返回false。 |
447
448**示例:**
449
450<!--code_no_check_fa-->
451```ts
452import { featureAbility } from '@kit.AbilityKit';
453
454featureAbility.hasWindowFocus().then((data) => {
455  console.info(`hasWindowFocus data: ${JSON.stringify(data)}`);
456});
457```
458
459## featureAbility.getWant
460
461getWant(callback: AsyncCallback\<Want>): void
462
463获取要拉起的Ability对应的Want。使用callback异步回调。
464
465**模型约束**:此接口仅可在FA模型下使用。
466
467**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
468
469**参数:**
470
471| 参数名       | 类型                            | 必填   | 说明        |
472| -------- | ----------------------------- | ---- | --------- |
473| callback | AsyncCallback\<[Want](js-apis-application-want.md)> | 是    | 回调函数,返回want信息。 |
474
475**示例:**
476
477<!--code_no_check_fa-->
478```ts
479import { featureAbility } from '@kit.AbilityKit';
480
481featureAbility.getWant((error, data) => {
482  if (error && error.code !== 0) {
483    console.error(`getWant fail, error: ${JSON.stringify(error)}`);
484  } else {
485    console.log(`getWant success, data: ${JSON.stringify(data)}`);
486  }
487});
488```
489
490## featureAbility.getWant
491
492getWant(): Promise\<Want>
493
494获取要拉起的Ability对应的Want。使用Promise异步回调。
495
496**模型约束**:此接口仅可在FA模型下使用。
497
498**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
499
500**返回值:**
501
502| 类型                      | 说明               |
503| ----------------------- | ---------------- |
504| Promise\<[Want](js-apis-application-want.md)> | Promise对象,返回want信息。 |
505
506**示例:**
507
508<!--code_no_check_fa-->
509```ts
510import { featureAbility } from '@kit.AbilityKit';
511
512featureAbility.getWant().then((data) => {
513  console.info(`getWant data: ${JSON.stringify(data)}`);
514});
515```
516
517## featureAbility.getContext
518
519getContext(): Context
520
521获取应用上下文。
522
523**模型约束**:此接口仅可在FA模型下使用。
524
525**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
526
527**返回值:**
528
529| 类型      | 说明         |
530| ------- | ---------- |
531| Context | 返回应用程序上下文。 |
532
533**示例:**
534
535<!--code_no_check_fa-->
536```ts
537import { featureAbility } from '@kit.AbilityKit';
538
539let context = featureAbility.getContext();
540context.getBundleName((error, data) => {
541  if (error && error.code !== 0) {
542    console.error(`getBundleName fail, error: ${JSON.stringify(error)}`);
543  } else {
544    console.log(`getBundleName success, data: ${JSON.stringify(data)}`);
545  }
546});
547```
548
549## featureAbility.terminateSelf<sup>7+</sup>
550
551terminateSelf(callback: AsyncCallback\<void>): void
552
553停止当前的Ability。使用callback异步回调。
554
555**模型约束**:此接口仅可在FA模型下使用。
556
557**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
558
559**参数:**
560
561| 参数名       | 类型                   | 必填   | 说明       |
562| -------- | -------------------- | ---- | -------- |
563| callback | AsyncCallback\<void> | 是    | 回调函数。当停止当前的Ability成功,err为undefined,否则为错误对象。 |
564
565**示例:**
566
567<!--code_no_check_fa-->
568```ts
569import { featureAbility } from '@kit.AbilityKit';
570
571featureAbility.terminateSelf(
572  (error) => {
573    console.error(`error: ${JSON.stringify(error)}`);
574  }
575)
576```
577
578## featureAbility.terminateSelf<sup>7+</sup>
579
580terminateSelf(): Promise\<void>
581
582停止当前的Ability。使用Promise异步回调。
583
584**模型约束**:此接口仅可在FA模型下使用。
585
586**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
587
588**返回值:**
589
590| 类型             | 说明               |
591| -------------- | ---------------- |
592| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
593
594**示例:**
595
596<!--code_no_check_fa-->
597```ts
598import { featureAbility } from '@kit.AbilityKit';
599
600featureAbility.terminateSelf().then(() => {
601  console.info('==========================>terminateSelf=======================>');
602});
603```
604
605## featureAbility.connectAbility<sup>7+</sup>
606
607connectAbility(request: Want, options:ConnectOptions): number
608
609将当前Ability与指定的ServiceAbility进行连接。
610
611> **说明:**
612>
613> 组件启动规则详见:[组件启动规则(FA模型)](../../application-models/component-startup-rules-fa.md)。
614> 跨应用连接serviceAbility,对端应用需配置关联启动。
615
616**模型约束**:此接口仅可在FA模型下使用。
617
618**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
619
620**参数:**
621
622| 参数名      | 类型             | 必填   | 说明                    |
623| ------- | -------------- | ---- | --------------------- |
624| request | [Want](js-apis-application-want.md)  | 是    | 表示被连接的ServiceAbility。 |
625| options | [ConnectOptions](js-apis-inner-ability-connectOptions.md) | 是    | 表示连接回调函数。             |
626
627**返回值:**
628
629| 类型     | 说明                   |
630| ------ | -------------------- |
631| number | 连接的ServiceAbility的ID(ID从0开始自增,每连接成功一次ID加1)。 |
632
633**示例:**
634
635<!--code_no_check_fa-->
636```ts
637import { featureAbility } from '@kit.AbilityKit';
638import { rpc } from '@kit.IPCKit';
639
640let connectId = featureAbility.connectAbility(
641  {
642    deviceId: '',
643    bundleName: 'com.ix.ServiceAbility',
644    abilityName: 'com.ix.ServiceAbility.ServiceAbilityA',
645  },
646  {
647    onConnect: (element, remote) => {
648      console.log(`ConnectAbility onConnect remote is proxy: ${(remote instanceof rpc.RemoteProxy)}`);
649    },
650    onDisconnect: (element) => {
651      console.log(`ConnectAbility onDisconnect element.deviceId : ${element.deviceId}`)
652    },
653    onFailed: (code) => {
654      console.error(`featureAbilityTest ConnectAbility onFailed errCode : ${code}`)
655    },
656  },
657);
658```
659
660## featureAbility.disconnectAbility<sup>7+</sup>
661
662disconnectAbility(connection: number, callback:AsyncCallback\<void>): void
663
664断开与指定ServiceAbility的连接。使用callback异步回调。
665
666**模型约束**:此接口仅可在FA模型下使用。
667
668**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
669
670**参数:**
671
672| 参数名         | 类型                   | 必填   | 说明                      |
673| ---------- | -------------------- | ---- | ----------------------- |
674| connection | number               | 是    | 表示断开连接的ServiceAbility的ID。 |
675| callback   | AsyncCallback\<void> | 是    | 回调函数。当断开与指定ServiceAbility的连接成功,err为undefined,否则为错误对象。      |
676
677**示例:**
678
679<!--code_no_check_fa-->
680```ts
681import { featureAbility } from '@kit.AbilityKit';
682import { rpc } from '@kit.IPCKit';
683
684let connectId = featureAbility.connectAbility(
685  {
686    bundleName: 'com.ix.ServiceAbility',
687    abilityName: 'com.ix.ServiceAbility.ServiceAbilityA',
688  },
689  {
690    onConnect: (element, remote) => {
691      console.log(`ConnectAbility onConnect remote is proxy: ${(remote instanceof rpc.RemoteProxy)}`);
692    },
693    onDisconnect: (element) => {
694      console.log(`ConnectAbility onDisconnect element.deviceId : ${element.deviceId}`);
695    },
696    onFailed: (code) => {
697      console.error(`featureAbilityTest ConnectAbility onFailed errCode : ${code}`);
698    },
699  },
700);
701
702featureAbility.disconnectAbility(connectId, (error) => {
703  if (error && error.code !== 0) {
704    console.error(`disconnectAbility fail, connectId: ${connectId}, error: ${JSON.stringify(error)}`);
705  } else {
706    console.log(`disconnectAbility success, connectId: ${connectId}`);
707  }
708});
709```
710
711## featureAbility.disconnectAbility<sup>7+</sup>
712
713disconnectAbility(connection: number): Promise\<void>
714
715断开与指定ServiceAbility的连接。使用Promise异步回调。
716
717**模型约束**:此接口仅可在FA模型下使用。
718
719**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
720
721**参数:**
722
723| 参数名         | 类型     | 必填   | 说明                      |
724| ---------- | ------ | ---- | ----------------------- |
725| connection | number | 是    | 表示断开连接的ServiceAbility的ID。 |
726
727**返回值:**
728
729| 类型             | 说明              |
730| -------------- | --------------- |
731| Promise\<void> | Promise对象。无返回结果的Promise对象。 |
732
733**示例:**
734
735<!--code_no_check_fa-->
736```ts
737import { featureAbility } from '@kit.AbilityKit';
738import { rpc } from '@kit.IPCKit';
739import { BusinessError } from '@kit.BasicServicesKit';
740
741let connectId = featureAbility.connectAbility(
742  {
743    bundleName: 'com.ix.ServiceAbility',
744    abilityName: 'com.ix.ServiceAbility.ServiceAbilityA',
745  },
746  {
747    onConnect: (element, remote) => {
748      console.log(`ConnectAbility onConnect remote is proxy: ${(remote instanceof rpc.RemoteProxy)}`);
749    },
750    onDisconnect: (element) => {
751      console.log(`ConnectAbility onDisconnect element.deviceId : ${element.deviceId}`);
752    },
753    onFailed: (code) => {
754      console.error(`featureAbilityTest ConnectAbility onFailed errCode : ${code}`);
755    },
756  },
757);
758
759featureAbility.disconnectAbility(connectId).then(() => {
760  console.log('disconnectAbility success')
761}).catch((error: BusinessError)=>{
762  console.error(`featureAbilityTest result errCode : ${error.code}`);
763});
764```
765
766
767## featureAbility.getWindow<sup>7+</sup>
768
769getWindow(callback: AsyncCallback\<window.Window>): void
770
771获取当前Ability对应的窗口。使用callback异步回调。
772
773**模型约束**:此接口仅可在FA模型下使用。
774
775**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
776
777**参数:**
778
779| 参数名     | 类型                          | 必填 | 说明                          |
780| -------- | ----------------------------- | ---- | ----------------------------- |
781| callback | AsyncCallback\<[window.Window](../apis-arkui/js-apis-window.md#window)> | 是   | 回调函数,返回当前Ability对应的窗口。 |
782
783**示例:**
784
785<!--code_no_check_fa-->
786```ts
787import { featureAbility } from '@kit.AbilityKit';
788import { window } from '@kit.ArkUI';
789import { BusinessError } from '@kit.BasicServicesKit';
790
791featureAbility.getWindow((error: BusinessError, data: window.Window) => {
792  if (error && error.code !== 0) {
793    console.error(`getWindow fail, error: ${JSON.stringify(error)}`);
794  } else {
795    console.log(`getWindow success, data: ${typeof(data)}`);
796  }
797});
798```
799
800## featureAbility.getWindow<sup>7+</sup>
801
802getWindow(): Promise\<window.Window>
803
804获取当前Ability对应的窗口。使用Promise异步回调。
805
806**模型约束**:此接口仅可在FA模型下使用。
807
808**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
809
810**返回值:**
811
812| 类型                    | 说明                          |
813| ----------------------- | ----------------------------- |
814| Promise\<[window.Window](../apis-arkui/js-apis-window.md#window)> | Promise对象,返回当前Ability对应的窗口。 |
815
816**示例:**
817
818<!--code_no_check_fa-->
819```ts
820import { featureAbility } from '@kit.AbilityKit';
821import { window } from '@kit.ArkUI';
822import { BusinessError } from '@kit.BasicServicesKit';
823
824featureAbility.getWindow().then((data: window.Window) => {
825  console.log(`getWindow success, data: ${typeof(data)}`);
826}).catch((error: BusinessError)=>{
827  console.error(`getWindow fail, error: ${JSON.stringify(error)}`);
828});
829```
830
831## AbilityWindowConfiguration<sup>7+</sup>
832
833表示当前Ability对应的窗口配置项,使用时通过featureAbility.AbilityWindowConfiguration获取。
834
835**模型约束**:此接口仅可在FA模型下使用。
836
837**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
838
839| 名称                                     | 值   | 说明                                       |
840| ---------------------------------------- | ---- | ---------------------------------------- |
841| WINDOW_MODE_UNDEFINED       | 0    | 未定义。 |
842| WINDOW_MODE_FULLSCREEN      | 1    | 全屏。    |
843| WINDOW_MODE_SPLIT_PRIMARY   | 100  | 屏幕如果是水平方向表示左分屏,屏幕如果是竖直方向表示上分屏。 |
844| WINDOW_MODE_SPLIT_SECONDARY | 101  | 屏幕如果是水平方向表示右分屏,屏幕如果是竖直方向表示下分屏。 |
845| WINDOW_MODE_FLOATING        | 102  | 悬浮窗。 |
846
847**示例:**
848
849<!--code_no_check_fa-->
850```ts
851import { featureAbility } from '@kit.AbilityKit';
852
853featureAbility.AbilityWindowConfiguration.WINDOW_MODE_UNDEFINED
854```
855
856## AbilityStartSetting<sup>7+</sup>
857
858表示当前Ability对应的窗口属性,abilityStartSetting属性是一个定义为[key: string]: any的对象,key对应设定类型为:AbilityStartSetting枚举类型,value对应设定类型为:AbilityWindowConfiguration枚举类型。
859
860使用时通过featureAbility.AbilityStartSetting获取。
861
862**模型约束**:此接口仅可在FA模型下使用。
863
864**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
865
866| 名称                           | 值              | 说明                                       |
867| ---------------------------- | --------------- | ---------------------------------------- |
868| BOUNDS_KEY      | 'abilityBounds' | 窗口显示大小属性的参数名。 |
869| WINDOW_MODE_KEY | 'windowMode'    | 窗口显示模式属性的参数名。|
870| DISPLAY_ID_KEY  | 'displayId'     | 窗口显示设备ID属性的参数名。 |
871
872**示例:**
873
874<!--code_no_check_fa-->
875```ts
876import { featureAbility } from '@kit.AbilityKit';
877
878featureAbility.AbilityStartSetting.BOUNDS_KEY
879```
880
881## ErrorCode<sup>7+</sup>
882
883定义启动Ability时返回的错误码。
884
885**模型约束**:此接口仅可在FA模型下使用。
886
887**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
888
889| 名称                             | 值    | 说明                                       |
890| ------------------------------ | ---- | ---------------------------------------- |
891| NO_ERROR         | 0    | 没有异常。   |
892| INVALID_PARAMETER | -1   | 无效的参数。 |
893| ABILITY_NOT_FOUND | -2   | 找不到ABILITY。 |
894| PERMISSION_DENY   | -3   | 权限拒绝。   |
895
896## DataAbilityOperationType<sup>7+</sup>
897
898表示数据的操作类型。DataAbility批量操作数据时可以通过该枚举值指定操作类型。
899
900**模型约束**:此接口仅可在FA模型下使用。
901
902**系统能力**:SystemCapability.Ability.AbilityRuntime.FAModel
903
904| 名称                       | 值    | 说明                                       |
905| ------------------------ | ---- | ---------------------------------------- |
906| TYPE_INSERT | 1    | 插入类型。 |
907| TYPE_UPDATE | 2    | 修改类型。 |
908| TYPE_DELETE | 3    | 删除类型。 |
909| TYPE_ASSERT | 4    | 声明类型。 |
910
911## Context<sup>9+</sup>
912
913type Context = _Context
914
915Context模块。
916
917**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
918
919**模型约束**:此接口仅可在FA模型下使用。
920
921| 类型 | 说明 |
922| --- | --- |
923| [_Context](js-apis-inner-app-context.md) | Context模块。 |
924
925## AppVersionInfo<sup>9+</sup>
926
927type AppVersionInfo = _AppVersionInfo
928
929应用版本信息。
930
931**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
932
933**模型约束**:此接口仅可在FA模型下使用。
934
935| 类型 | 说明 |
936| --- | --- |
937| [_AppVersionInfo](js-apis-inner-app-appVersionInfo.md) | 应用版本信息。 |
938
939## ProcessInfo<sup>9+</sup>
940
941type ProcessInfo = _ProcessInfo
942
943进程信息。
944
945**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
946
947**模型约束**:此接口仅可在FA模型下使用。
948
949| 类型 | 说明 |
950| --- | --- |
951| [_ProcessInfo](js-apis-inner-app-processInfo.md) | 进程信息。 |
952