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