• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# FA模型开发指导
2
3### 介绍
4
5本示例展示了在一个FA模型中,PageAbility组件/ServiceAbility组件/DataAbility组件/服务卡片以及Context相关的示例。
6
7本示例参考[应用模型](https://gitee.com/openharmony/docs/tree/master/zh-cn/application-dev/application-models)8
9### 效果预览
10
11|PageAbility组件开发指导|ServiceAbility&DataAbility组件开发指导|FA模型与Stage模型应用组件互通指导|FA模型服务卡片开发指导|
12|--------------------------------|--------------------------------|--------------------------------|--------------------------------|
13|![PageAbility组件开发指导](screenshots/PageAbility组件开发指导.gif)|![ServiceAbility&DataAbility组件开发指导](screenshots/ServiceAbility&DataAbility组件开发指导.gif)| ![FA模型与Stage模型应用组件互通指导](screenshots/FA模型与Stage模型应用组件互通指导.gif) | ![FA模型服务卡片开发指导](screenshots/FA模型服务卡片开发指导.gif) |
14
15#### 使用说明
16
17##### 1.PgaeAbility组件开发指导
18
191)进入主页,点击[PageAbility组件开发指导-单设备],进入’PageAbility组件开发指导-单设备‘界面;
20
212)点击[获取分布式目录],弹出toast[/data/***];
22
233)点击[启动单例PageAbility],跳转至Title为’PageAbilitySingleton页面一‘的页面,再点击Home键回到桌面,再点击应用图标回到’PageAbility组件开发指导-单设备‘界面,点击[再启动单例PageAbility],跳转至Title为’PageAbilitySingleton页面二‘的页面;
24
254)回到’PageAbility组件开发指导-单设备‘界面,点击[启动多例PageAbility页面一],跳转至Title为’PageAbilityStandard页面一‘的页面,再点击Home键回到桌面,再点击应用图标回到’PageAbility组件开发指导-单设备‘界面,点击[启动多例PageAbility页面二],跳转至Title为’PageAbilityStandard页面二‘的页面;
26
275)点击[使用Worker进行线程间通信],弹出toast[{"data":"message from worker thread."}];
28
296)点击[停止PageAbility],退出当前应用返回桌面;
30
317)回到主页,点击[PageAbility组件开发指导-多设备],进入’PageAbility组件开发指导-多设备’界面;
32
338)点击[获取分布式数据同步权限],并在弹出的申请权限对话框中点击’允许‘;
34
359)点击[获取设备id],弹出对端设备的deviceId;
36
3710)点击[启动远程设备PageAbility],弹出toast[启动远程Ability成功],同时打开对端设备音乐应用。
38
39##### 2.ServiceAbility组件开发指导
40
411)回到主页,点击[ServiceAbility组件开发指导],进入’ServiceAbility组件开发指导’界面;
42
432)点击[启动ServiceAbility],弹出toast[启动serviceAbility成功];
44
453)点击[连接ServiceAbility],弹出toast[连接serviceAbility成功];
46
474)点击[连接错误的ServiceAbility],  弹出toast[连接serviceAbility失败]。
48
49##### 3.DataAbility组件开发指导
50
511)回到主页,点击[DataAbility组件开发指导],进入’DataAbility组件开发指导‘界面;
52
532)在弹出的对话框中点击’允许‘;
54
553)点击[插入数据-callback方式],再点击[插入数据-promise方式],点击后均弹出toast[插入数据成功];
56
574)点击[删除数据-callback方式],再点击[删除数据-promise方式],点击后均弹出toast[删除数据成功];
58
595)点击[更新数据-callback方式],再点击[更新数据-promise方式],点击后均弹出toast[更新数据成功];
60
616)点击[查找数据-callback方式],再点击[查找数据-promise方式],点击后均弹出toast[查找数据成功];
62
637)点击[批量插入数据-callback方式],再点击[批量插入数据-promise方式,点击后均弹出toast[批量插入数据成功];
64
658)点击[批量处理数据-callback方式],再点击[批量处理数据-promise方式],点击后均弹出toast[批量处理数据成功]。
66
67##### 4.FA模型与Stage模型应用组件互通指导
68
691)回到主页,点击[FA模型与Stage模型应用组件互通指导],进入’FA模型与Stage模型应用组件互通指导’界面;
70
712)点击[通过PageAbility与Stage模型互通-无需返回结果],成功启动时钟应用;
72
733)回到’FA模型与Stage模型应用组件互通指导’界面,点击[通过PageAbility与Stage模型互通-返回执行结果],成功启动时钟应用;
74
754)回到’FA模型与Stage模型应用组件互通指导’界面,点击[通过ServiceAbility与Stage模型互通],成功启动时钟应用(仅生效一次)。
76
77##### 5. FA模型服务卡片开发指导
78
791)回到桌面,长按应用图标,在弹出框中点击服务卡片,进入服务卡片添加界面;
80
812)点击添加至桌面,会跳转会桌面,并桌面上新增FAModel服务卡片;
82
833)点击卡片内‘titleOnCreate',会跳转至应用界面;
84
854)回到桌面,点击卡片内‘detailOnCreate',卡片内容会更新。
86
87### 工程目录
88```
89entry/src/main/ets/
90├── DataAbility
91│   └── data.ts								//测试DataAbility基本功能
92├── FormAbility
93│   └── form.ts								//测试FormAbility基本功能
94├── MainAbility
95│   ├── app.ets
96│   └── pages
97│       ├── index.ets						//应用主界面
98│       ├── pageDataAbility.ets				//DataAbility组件开发指导界面
99│       ├── pageInterflowFaAndStage.ets		//FA模型与Stage模型应用组件互通指导界面
100│       ├── pagePageAbilityFirst.ets		//PageAbility组件开发指导-单设备界面
101│       ├── pagePageAbilitySecond.ets		//PageAbility组件开发指导-多设备界面
102│       └── pageServiceAbility.ets			//ServiceAbility组件开发指导界面
103├── PageAbilitySingleton
104│   ├── app.ets
105│   └── pages
106│       ├── first.ets						//单例PageAbility页面一
107│       └── second.ets						//单例PageAbility页面二
108├── PageAbilityStandard
109│   ├── app.ets
110│   └── pages
111│       ├── default.ets						//多例PageAbility默认页面
112│       ├── first.ets						//多例PageAbility页面一
113│       └── second.ets						//多例PageAbility页面二
114├── ServiceAbility
115│   └── service.ts							//测试ServiceAbility基本功能
116├── ServiceAbilityStartUIAbility
117│   └── service.ts							//FA模型与Stage模型应用组件互通用ServiceAbility
118├── utils
119│   └── GlobalContext.ts					        //object存储工具类
120└── workers
121    └── worker.ts							//使用worker进行线程间通信
122```
123### 具体实现
124
125* 本示例分为PageAbility组件开发指导,ServiceAbility组件开发指导,DataAbility组件开发指导和FA模型与Stage模型应用组件互通指导四个模块。
126  * PageAbility组件开发指导:
127
128    * 调用相关接口函数来实现FA模型中单例PageAbility/多例PageAbility的启动停止以及启动远程PageAbility等功能,以及还实现了使用worker进行线程间通信的功能。
129
130    * 源码链接:[pagePageAbilityFirst.ets](entry\src\main\ets\MainAbility\pages\pagePageAbilityFirst.ets) [pagePageAbilitySecond.ets](entry\src\main\ets\MainAbility\pages\pagePageAbilitySecond.ets) [first.ets](entry\src\main\ets\PageAbilitySingleton\pages\first.ets)  [second.ets](entry\src\main\ets\PageAbilitySingleton\pages\second.ets)   [first.ets](entry\src\main\ets\PageAbilityStandard\pages\first.ets)  [second.ets](entry\src\main\ets\PageAbilityStandard\pages\second.ets)  [worker.ts](entry\src\main\ets\workers\worker.ts)
131
132    * 参考接口:[@ohos.ability.featureAbility](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/apis/js-apis-ability-featureAbility.md/)  [@ohos.worker](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-worker.md)
133  * ServiceAbility组件开发指导:
134
135    * 调用相关接口函数来实现FA模型中ServiceAbility的启动和连接等功能。
136    * 源码链接:[pageServiceAbility.ets](entry\src\main\ets\MainAbility\pages\pageServiceAbility.ets)  [service.ts](entry\src\main\ets\ServiceAbility\service.ts)
137
138    * 参考接口:[@ohos.ability.featureAbility](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/apis/js-apis-ability-featureAbility.md/)
139  * DataAbility组件开发指导:
140    * 调用相关接口函数来实现FA模型中DataAbility的增删改查等功能。
141    * 源码链接:[pageDataAbility.ets](entry\src\main\ets\MainAbility\pages\pageDataAbility.ets)  [data.ts](entry\src\main\ets\DataAbility\data.ts)
142    * 参考接口:[@ohos.data.dataAbility](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/apis/js-apis-data-ability.md/)
143  * FA模型与Stage模型应用组件互通指导:
144    * 调用相关接口函数来实现FA模型中调用相关接口函数来启动Stage模型中UIAbility的功能。
145    * 源码链接:[pageInterflowFaAndStage.ets](entry\src\main\ets\MainAbility\pages\pageInterflowFaAndStage.ets)  [service.ts](entry\src\main\ets\ServiceAbilityStartUIAbility\service.ts)
146    * 参考接口:[@ohos.ability.featureAbility](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/apis/js-apis-ability-featureAbility.md/)
147  * FA模型服务卡片开发指导:
148    * 调用相关接口函数来实现FA模型中服务卡片的创建,更新及事件等功能。
149    * 源码链接:[form.ts](entry\src\main\ets\FormAbility\form.ts)  [index.css](entry\src\main\js\widget\pages\index\index.css)  [index.hml](entry\src\main\js\widget\pages\index\index.hml)  [index.json](entry\src\main\js\widget\pages\index\index.json)
150    * 参考接口:[@ohos.app.form.formBindingData](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/apis/js-apis-app-form-formBindingData.md/) [@ohos.app.form.formInfo](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/apis/js-apis-app-form-formInfo.md/) [@ohos.app.form.formProvider](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/reference/apis/js-apis-app-form-formProvider.md/)
151
152### 相关权限
153
154[ohos.permission.READ_CONTACTS](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionread_contacts)
155
156[ohos.permission.WRITE_CONTACTS](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionwrite_contacts)
157
158[ohos.permission.DISTRIBUTED_DATASYNC](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissiondistributed_datasync)
159
160[ohos.permission.ACCESS_SERVICE_DM](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionaccess_service_dm)
161
162### 依赖
163
164本示例依赖系统默认自带的[时钟](https://gitee.com/openharmony/applications_app_samples/tree/master/code/Solutions/Tools/ArkTSClock)应用和[音乐](https://gitee.com/openharmony/applications_app_samples/tree/master/code/SuperFeature/DistributedAppDev/JsDistributedMusicPlayer)应用。
165
166本示例依赖带有ServiceExtensionAbility的Stage模型应用:[StageModelAbilityInteraction](https://gitee.com/openharmony/applications_app_samples/tree/master/code/DocsSample/ApplicationModels/StageModelAbilityInteraction)167
168在测试PgaeAbility组件开发指导相关功能前,需要准备两台RK3568设备,并将设备组网,步骤如下:
169```
1701.使两台设备处于同一网络下。
1712.打开A,B两设备的音乐。
1723.点击A设备音乐应用左下角箭头选择B设备。
1734.在B设备选择信任设备,弹出PIN码。
1745.在A设备输入PIN码。
1756.已组网成功,验证方法:在A设备播放音乐,B设备同步播放则证明组网成功。
176```
177### 约束与限制
178
1791.本示例仅支持标准系统上运行,支持设备:RK3568。
180
1812.本示例为Stage模型,已适配API version 11版本SDK,版本号:4.1.3.1
182
1833.本示例需要使用DevEco Studio 3.1.1 Release (Build Version: 3.1.0.501, built on June 20, 2023)及以上版本才可编译运行。
184
1854.本示例涉及相关权限为system_basic级别(相关权限级别可通过[权限定义列表](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/permission-list.md)查看),需要手动配置对应级别的权限签名(具体操作可查看[自动化签名方案](https://gitee.com/link?target=https%3A%2F%2Fdocs.openharmony.cn%2Fpages%2Fv3.2%2Fzh-cn%2Fapplication-dev%2Fsecurity%2Fhapsigntool-overview.md%2F))186
1876.本示例类型为系统应用,需要手动配置对应级别的应用类型("app-feature": "hos_system_app")。具体可参考profile配置文件[bundle-info对象内部结构]( https://gitee.com/openharmony/docs/blob/eb73c9e9dcdd421131f33bb8ed6ddc030881d06f/zh-cn/application-dev/security/app-provision-structure.md#bundle-info%E5%AF%B9%E8%B1%A1%E5%86%85%E9%83%A8%E7%BB%93%E6%9E%84 )
188
189### 下载
190
191如需单独下载本工程,执行如下命令:
192
193```
194git init
195git config core.sparsecheckout true
196echo code/DocsSample/ApplicationModels/FAModelAbilityDevelop/ > .git/info/sparse-checkout
197git remote add origin https://gitee.com/openharmony/applications_app_samples.git
198git pull origin master
199```
200