145 Star 1.4K Fork 1.7K

OpenHarmony/applications_app_samples

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

基础能力增强

介绍

本示例使用 ohos.app.ability.appManager, UIAbilityContext , UIExtensionContentSession 等接口实现了以下功能:

  1. 提供查询单个应用是否正在运行接口;

  2. 新增系统接口请求创建模系统或模应用的UIExtension;

  3. UIExtension支持同步返回数据的能力;

  4. UIExtension提供StartAsCaller接口。

效果预览

主页面 弹出状态Toast 同步数据页面 UIExtension启动页

使用说明

1.应用查询单个应用是否正在运行的能力

点击'查询应用状态'的ListItem,弹出Toast提示'当前应用运行中'

2.UIExtension创建模系统或模应用

点击'创建模系统'的ListItem,弹出UIExtension的页面弹窗

3.UIExtension支持同步返回数据的能力

点击'同步发送数据'的ListItem,进入到新页面再次点击'同步发送数据'的ListItem,UIAbility部分弹出Toast提示'HomeAbility onReceive data from UIExtensionAbility',UIExtensionAbility 部分弹出Toast提示'UIExtensionAbility onReceive data from HomeAbility'

4.UIExtension提供启动AbilityAsCaller的能力

点击'启动AbilityAsCaller'的ListItem,应用启动NewAbility

5.UIExtension提供startAbilityAsCaller的能力

点击启动'启动UIExtensionAbility'的ListItem,进入到新页面,在新页面点击'启动AbilityAsCaller'的ListItem,应用启动NewAbility

工程目录

entry/src/main/ets/
|---entryability
|   |---EntryAbility.ets				// 首页的Ability
|---pages
|   |---Index.ets						// 首页
|   |---Ext.ets							// UIExtensionAbility的展示页
|   |---NewExt.ets						// 被启动的UIExtensionAbility的页面
|   |---New.ets							// 被启动UIAbility的展示页
|   |---Transit.ets						// UIExtensionComponent加载NewUIExtAbility的页面
|   |---SendSync.ets					// UIExtensionComponent加载SendSyncExtAbility的页面
|   |---SendSyncExt.ets					// 同步数据UIExtensionAbility的展示页
|---uiextability						
|   |---UIExtAbility.ets				// UIExtensionAbility(用于验证新接口使用)
|---sendsyncextability						
|   |---SendSyncExtAbility.ets			// UIExtensionAbility(用于验证新接口使用)
|---newuiextability						
|   |---NewUIExtAbility.ets				// UIExtensionAbility(用于验证新接口使用)
|---newability
|   |---NewAbility.ets					// 被启动的UIAbility(验证新接口启动使用)
|---utils								// 工具
|   |---Logger.ets						// 日志工具

具体实现

  • 应用查询单个应用是否正在运行的能力,通过appManager调用isApplicationRunning(bundleName: string, callback: AsyncCallback): void方法查询应用状态, 源码参考:Index.ets
  • UIExtension创建模系统或模应用,通过UIAbilityContext调用requestModalUIExtension(pickerWant: Want, callback: AsyncCallback): void方法拉起UIExtensionAbility, 源码参考:Index.ets
  • UIExtension支持同步返回数据的能力,通过UIExtensionProxy调用sendSync(data: { [key: string]: Object }): { [key: string]: Object }接口实现,源码参考:SendSync.ets
  • UIExtension提供startAbilityAsCaller的能力,通过UIExtensionContentSession调用startAbilityAsCaller(want: Want, callback: AsyncCallback): void接口实现,源码参考:Ext.ets

相关权限

ohos.permission.GET_RUNNING_INFO

依赖

不涉及。

约束与限制

1.本示例仅支持标准系统上运行,支持设备:RK3568。

2.本示例为Stage模型,支持API11版本SDK,版本号:4.1.5.1;

3.本示例涉及使用系统接口:appManager.isApplicationRunning ,UIAbilityContext.requestModalUIExtension, UIAbilityContext.startAbilityAsCaller,UIExtensionContentSession.startAbilityAsCaller,UIExtensionProxy.sendSync 需要手动替换Full SDK才能编译通过;

4.本示例需要使用DevEco Studio 3.1.1 Release (Build Version: 3.1.0.501, built on June 20, 2023)才可编译运行;

5.本示例涉及ohos.permission.GET_RUNNING_INFO权限为 system_basic级别,需要配置高权限签名;

下载

git init
git config core.sparsecheckout true
echo code/SystemFeature/Ability/AbilityFeatureSystem/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/openharmony/applications_app_samples.git
git@gitee.com:openharmony/applications_app_samples.git
openharmony
applications_app_samples
applications_app_samples
master

搜索帮助