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