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