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