1# Connecting to a ServiceAbility from the Stage Model 2 3 4This topic describes how the two application components of the stage model connect to the ServiceAbility component of the FA model. 5 6 7## UIAbility Accessing a ServiceAbility 8 9A [UIAbility](../reference/apis-ability-kit/js-apis-app-ability-uiAbility.md) accesses a ServiceAbility in the same way as it accesses a [ServiceExtensionAbility](../reference/apis-ability-kit/js-apis-app-ability-serviceExtensionAbility-sys.md). 10 11 12```ts 13import { common, Want } from '@kit.AbilityKit'; 14import { hilog } from '@kit.PerformanceAnalysisKit'; 15 16const TAG: string = '[Page_StartFAModel]'; 17const DOMAIN_NUMBER: number = 0xFF00; 18 19@Entry 20@Component 21struct Page_StartFAModel { 22 private context = this.getUIContext().getHostContext() as common.UIAbilityContext; 23 24 build() { 25 Column() { 26 // ... 27 List({ initialIndex: 0 }) { 28 // ... 29 ListItem() { 30 Row() { 31 // ... 32 } 33 .onClick(() => { 34 let want: Want = { 35 bundleName: 'com.samples.famodelabilitydevelop', 36 abilityName: 'com.samples.famodelabilitydevelop.ServiceAbility', 37 }; 38 let options: common.ConnectOptions = { 39 onConnect: (elementName, proxy) => { 40 hilog.info(DOMAIN_NUMBER, TAG, `onConnect called.`); 41 this.getUIContext().getPromptAction().showToast({ 42 message: 'ConnectFAServiceAbility' 43 }); 44 }, 45 onDisconnect: (elementName) => { 46 hilog.info(DOMAIN_NUMBER, TAG, `onDisconnect called.`); 47 }, 48 onFailed: (code) => { 49 hilog.error(DOMAIN_NUMBER, TAG, `onFailed code is: ${code}.`); 50 } 51 }; 52 let connectionId = this.context.connectServiceExtensionAbility(want, options); 53 hilog.info(DOMAIN_NUMBER, TAG, `connectionId is: ${JSON.stringify(connectionId)}.`); 54 }) 55 } 56 // ... 57 } 58 // ... 59 } 60 // ... 61 } 62} 63``` 64 65 66## ExtensionAbility Accessing a ServiceAbility 67 68The following uses the [ServiceExtensionAbility](../reference/apis-ability-kit/js-apis-app-ability-serviceExtensionAbility-sys.md) component as an example to describe how an [ExtensionAbility](../reference/apis-ability-kit/js-apis-app-ability-extensionAbility.md) accesses a ServiceAbility. A ServiceExtensionAbility accesses a ServiceAbility in the same way as it accesses another ServiceExtensionAbility. 69 70 71```ts 72import { common, Want } from '@kit.AbilityKit'; 73import { hilog } from '@kit.PerformanceAnalysisKit'; 74 75const TAG: string = '[Page_StartFAModel]'; 76const DOMAIN_NUMBER: number = 0xFF00; 77 78@Entry 79@Component 80struct Page_StartFAModel { 81 private context = this.getUIContext().getHostContext() as common.UIAbilityContext; 82 83 build() { 84 Column() { 85 // ... 86 List({ initialIndex: 0 }) { 87 // ... 88 ListItem() { 89 Row() { 90 // ... 91 } 92 .onClick(() => { 93 let want: Want = { 94 bundleName: 'com.samples.famodelabilitydevelop', 95 abilityName: 'com.samples.famodelabilitydevelop.ServiceAbility', 96 }; 97 let options: common.ConnectOptions = { 98 onConnect: (elementName, proxy) => { 99 hilog.info(DOMAIN_NUMBER, TAG, `onConnect called.`); 100 this.getUIContext().getPromptAction().showToast({ 101 message: 'ConnectFAServiceAbility' 102 }); 103 }, 104 onDisconnect: (elementName) => { 105 hilog.info(DOMAIN_NUMBER, TAG, `onDisconnect called.`); 106 }, 107 onFailed: (code) => { 108 hilog.error(DOMAIN_NUMBER, TAG, `onFailed code is: ${code}.`); 109 } 110 }; 111 let connectionId = this.context.connectServiceExtensionAbility(want, options); 112 hilog.info(DOMAIN_NUMBER, TAG, `connectionId is: ${JSON.stringify(connectionId)}.`); 113 }) 114 } 115 // ... 116 } 117 // ... 118 } 119 // ... 120 } 121} 122``` 123