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