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