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