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