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