1# FA模型绑定Stage模型ServiceExtensionAbility
2
3
4本文介绍FA模型的三种应用组件如何绑定Stage模型的ServiceExtensionAbility组件。
5
6
7## PageAbility关联访问ServiceExtensionAbility
8
9PageAbility关联访问ServiceExtensionAbility和PageAbility关联访问ServiceAbility的方式完全相同。
10
11
12```ts
13import featureAbility from '@ohos.ability.featureAbility';
14import common from '@ohos.app.ability.common';
15import Want from '@ohos.app.ability.Want';
16import { BusinessError } from '@ohos.base';
17import hilog from '@ohos.hilog';
18
19const TAG: string = 'PageInterflowFaAndStage';
20const domain: number = 0xFF00;
21
22@Entry
23@Component
24struct PageInterflowFaAndStage {
25  build() {
26    Column() {
27      // ...
28      List({ initialIndex: 0 }) {
29        ListItem() {
30          Row() {
31            // ...
32          }
33          .onClick(() => {
34            let want: Want = {
35              bundleName: 'ohos.samples.etsclock',
36              abilityName: 'MainAbility'
37            };
38            featureAbility.startAbility({ want }).then((code) => {
39              hilog.info(domain, TAG, 'Ability verify code: ' + JSON.stringify(code));
40            }).catch((error: BusinessError) => {
41              hilog.error(domain, TAG, 'Ability failed: ' + JSON.stringify(error));
42            });
43            let serviceWant: Want = {
44              bundleName: 'com.samples.stagemodelabilityinteraction',
45              abilityName: 'ServiceExtAbility'
46            };
47            let faConnect: common.ConnectOptions = {
48              onConnect: (elementName, proxy) => {
49                hilog.info(domain, TAG, "FaConnection onConnect called.");
50              },
51              onDisconnect: (elementName) => {
52                hilog.info(domain, TAG, "FaConnection onDisconnect called.");
53              },
54              onFailed: (code) => {
55                hilog.info(domain, TAG, "FaConnection onFailed code is: " + code);
56              }
57            };
58            let connectionId = featureAbility.connectAbility(serviceWant, faConnect);
59          })
60        }
61        // ...
62      }
63      // ...
64    }
65    // ...
66  }
67}
68```
69
70
71## ServiceAbility/DataAbility关联访问ServiceExtensionAbility
72
73ServiceAbility/DataAbility关联访问ServiceExtensionAbility和ServiceAbility/DataAbility关联访问ServiceAbility的方式完全相同。
74
75
76```ts
77import type common from '@ohos.app.ability.common';
78import particleAbility from '@ohos.ability.particleAbility';
79import type Want from '@ohos.app.ability.Want';
80import type { BusinessError } from '@ohos.base';
81import hilog from '@ohos.hilog';
82
83const TAG: string = '[Sample_FAModelAbilityDevelop]';
84const domain: number = 0xFF00;
85
86class ServiceAbilityStartUiAbility {
87  onStart(): void {
88    // 启动UIAbility
89    let want: Want = {
90      bundleName: 'ohos.samples.etsclock',
91      abilityName: 'MainAbility'
92    };
93    particleAbility.startAbility({ want }).then(() => {
94      hilog.info(domain, TAG, 'ServiceAbilityStartUIAbility Start Ability successfully.');
95    }).catch((error: BusinessError) => {
96      hilog.info(domain, TAG, 'ServiceAbilityStartUIAbility Ability failed: ' + JSON.stringify(error));
97    });
98
99    // 访问ServiceExtensionAbility
100    let serviceWant: Want = {
101      bundleName: 'com.samples.stagemodelabilityinteraction',
102      abilityName: 'ServiceExtAbility'
103    };
104    let faConnect: common.ConnectOptions = {
105      onConnect: (elementName, proxy) => {
106        hilog.info(domain, TAG, 'FaConnection onConnect called.');
107      },
108      onDisconnect: (elementName) => {
109        hilog.info(domain, TAG, 'FaConnection onDisconnect called.');
110      },
111      onFailed: (code) => {
112        hilog.info(domain, TAG, 'FaConnection onFailed code is: ' + code);
113      }
114    };
115    let connectionId = particleAbility.connectAbility(serviceWant, faConnect);
116    hilog.info(domain, TAG, 'ServiceAbilityStartUIAbility ServiceAbility onStart');
117  }
118};
119
120export default new ServiceAbilityStartUiAbility();
121```
122