• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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