README_zh.md
1# 基础能力增强
2
3### 介绍
4
5本示例使用 [ohos.app.ability.appManager](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-appManager-sys.md), [UIAbilityContext](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-inner-application-uiAbilityContext-sys.md) , [UIExtensionContentSession](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-uiExtensionContentSession-sys.md) 等接口实现了以下功能:
6
71. 提供查询单个应用是否正在运行接口;
8
92. 新增系统接口请求创建模系统或模应用的UIExtension;
10
113. UIExtension支持同步返回数据的能力;
12
134. 提供隐式启动UIExtension接口;
14
156. UIExtension提供StartAsCaller接口;
16
17### 效果预览
18
19| 主页面 | 弹出状态Toast | 同步数据页面 | UIExtension启动页 |
20|:--------------------------------------------------------------:|:--------------------------------------------------------------:|:--------------------------------------------------------------:|:--------------------------------------------------------------:|
21| <img src="./screenshots/Screenshot_20231208091732705.jpeg" /> | <img src="./screenshots/Screenshot_20231208091801521.jpeg" /> | <img src="./screenshots/Screenshot_20231208091750553.jpeg" /> | <img src="./screenshots/Screenshot_20231208091848484.jpeg" /> |
22
23使用说明
24
251.应用查询单个应用是否正在运行的能力
26
27点击''查询应用状态'的ListItem,弹出Toast提示'当前应用运行中'
28
292.UIExtension创建模系统或模应用
30
31点击'创建模系统'的ListItem,弹出UIExtension的页面弹窗
32
333.UIExtension支持同步返回数据的能力
34
35点击'同步发送数据'的ListItem,进入到新页面再次点击'同步发送数据'的ListItem,UIAbility部分弹出Toast提示'HomeAbility
36onReceive data from UIExtensionAbility',UIExtensionAbility 部分弹出Toast提示'UIExtensionAbility onReceive data from
37HomeAbility'
38
394.UIExtension提供隐式启动startAbilityByType的能力
40
41点击启动启动UIExtensionAbility'的ListItem,进入到新页面,在新页面点击'启动AbilityByType'的ListItem,应用启动NewUIExtAbility
42
435.UIExtension提供startAbilityAsCaller的能力
44
45点击启动启动UIExtensionAbility'的ListItem,进入到新页面,在新页面点击'启动AbilityAsCaller'的ListItem,应用启动NewAbility
46
47### 工程目录
48
49```
50entry/src/main/ets/
51|---entryability
52| |---EntryAbility.ets // 首页的Ability
53|---pages
54| |---Index.ets // 首页
55| |---Ext.ets // UIExtensionAbility的展示页
56| |---NewExt.ets // 被启动的UIExtensionAbility的页面
57| |---New.ets // 被启动UIAbility的展示页
58| |---Transit.ets // UIExtensionComponent加载NewUIExtAbility的页面
59| |---SendSync.ets // UIExtensionComponent加载SendSyncExtAbility的页面
60| |---SendSyncExt.ets // 同步数据UIExtensionAbility的展示页
61|---uiextability
62| |---UIExtAbility.ets // UIExtensionAbility(用于验证新接口使用)
63|---sendsyncextability
64| |---SendSyncExtAbility.ets // UIExtensionAbility(用于验证新接口使用)
65|---newuiextability
66| |---NewUIExtAbility.ets // UIExtensionAbility(用于验证新接口使用)
67|---newability
68| |---NewAbility.ets // 被启动的UIAbility(验证新接口启动使用)
69|---utils // 工具
70| |---Logger.ets // 日志工具
71```
72
73### 具体实现
74
75- 应用查询单个应用是否正在运行的能力,通过appManager调用isApplicationRunning(bundleName: string, callback:
76 AsyncCallback<boolean>): void方法查询应用状态, 源码参考:[Index.ets](entry/src/main/ets/pages/Index.ets)
77- UIExtension创建模系统或模应用,通过UIAbilityContext调用requestModalUIExtension(pickerWant: Want, callback:
78 AsyncCallback<void>): void方法拉起UIExtensionAbility, 源码参考:[Index.ets](entry/src/main/ets/pages/Index.ets)
79- UIExtension支持同步返回数据的能力,通过UIExtensionProxy调用sendSync(data: { [key: string]: Object }): { [key: string]:
80 Object }接口实现,源码参考:[SendSync.ets](entry/src/main/ets/pages/SendSync.ets)
81- UIExtension提供隐式启动startAbilityByType的能力,通过UIExtensionContentSession调用startAbilityByType(type: string,
82 wantParam: Record<string, Object>, abilityStartCallback: AbilityStartCallback, callback: AsyncCallback<void>):
83 void接口实现 ,源码参考:[Ext.ets](entry/src/main/ets/pages/Ext.ets)
84- UIExtension提供startAbilityAsCaller的能力,通过UIExtensionContentSession调用startAbilityAsCaller(want: Want, callback:
85 AsyncCallback<void>): void接口实现,源码参考:[Ext.ets](entry/src/main/ets/pages/Ext.ets)
86
87### 相关权限
88
89[ohos.permission.GET_RUNNING_INFO](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionget_running_info)
90
91### 依赖
92
93以下依赖主要针对UIExtension提供隐式启动startAbilityByType的功能使用
94
951.将uiextension_picker_config.json配置文件导出到本地
96
97```
98hdc_std file recv system/etc/uiextension_picker_config.json
99```
100
1012.修改uiextension_picker_config.json配置文件
102
103json中需要配置的字段内容:
104
105```
106{
107 "uiextension":[
108 {
109 "type": "share",
110 "typePicker": "sysPicker/share"
111 }
112 ]
113}
114```
115
1163.将uiextension_picker_config.json文件导入到 /system/etc路径下
117
118```
119hdc_std shell mount -o rw,remount /
120
121hdc_std file send uiextension_picker_config.json /system/etc
122
123hdc_std shell sync
124
125hdc_std shell reboot
126```
127
128### 约束与限制
129
1301.本示例仅支持标准系统上运行,支持设备:RK3568;
131
1322.本示例为Stage模型,支持API11版本SDK,版本号:4.1.5.1;
133
1343.本示例涉及使用系统接口:appManager.isApplicationRunning ,UIAbilityContext.requestModalUIExtension,
135UIAbilityContext.startAbilityAsCaller,UIExtensionContentSession.startAbilityAsCaller,UIExtensionProxy.sendSync
136需要手动替换Full SDK才能编译通过;
137
1384.本示例需要使用DevEco Studio 3.1.1 Release (Build Version: 3.1.0.501, built on June 20, 2023)才可编译运行;
139
1405.本示例涉及[ohos.permission.GET_RUNNING_INFO](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissionget_running_info)权限为 system_basic级别,需要配置高权限签名。
141
142### 下载
143
144```shell
145git init
146git config core.sparsecheckout true
147echo code/SystemFeature/Ability/AbilityFeatureSystem/ > .git/info/sparse-checkout
148git remote add origin https://gitee.com/openharmony/applications_app_samples.git
149git pull origin master
150```
151
152