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提供StartAsCaller接口。 14 15### 效果预览 16 17| 主页面 | 弹出状态Toast | 同步数据页面 | UIExtension启动页 | 18|:------------------------------------------------:|:-----------------------------------------------------:|:----------------------------------------------------:|:------------------------------------------------------:| 19| <img src="screenshots/index.jpeg" width="270" /> | <img src="screenshots/app_status.jpeg" width="270" /> | <img src="screenshots/sync_data.jpeg" width="270" /> | <img src="screenshots/uiextension.jpeg" width="270" /> | 20 21使用说明 22 231.应用查询单个应用是否正在运行的能力 24 25点击'查询应用状态'的ListItem,弹出Toast提示'当前应用运行中' 26 272.UIExtension创建模系统或模应用 28 29点击'创建模系统'的ListItem,弹出UIExtension的页面弹窗 30 313.UIExtension支持同步返回数据的能力 32 33点击'同步发送数据'的ListItem,进入到新页面再次点击'同步发送数据'的ListItem,UIAbility部分弹出Toast提示'HomeAbility 34onReceive data from UIExtensionAbility',UIExtensionAbility 部分弹出Toast提示'UIExtensionAbility onReceive data from 35HomeAbility' 36 374.UIExtension提供启动AbilityAsCaller的能力 38 39点击'启动AbilityAsCaller'的ListItem,应用启动NewAbility 40 415.UIExtension提供startAbilityAsCaller的能力 42 43点击启动'启动UIExtensionAbility'的ListItem,进入到新页面,在新页面点击'启动AbilityAsCaller'的ListItem,应用启动NewAbility 44 45### 工程目录 46 47``` 48entry/src/main/ets/ 49|---entryability 50| |---EntryAbility.ets // 首页的Ability 51|---pages 52| |---Index.ets // 首页 53| |---Ext.ets // UIExtensionAbility的展示页 54| |---NewExt.ets // 被启动的UIExtensionAbility的页面 55| |---New.ets // 被启动UIAbility的展示页 56| |---Transit.ets // UIExtensionComponent加载NewUIExtAbility的页面 57| |---SendSync.ets // UIExtensionComponent加载SendSyncExtAbility的页面 58| |---SendSyncExt.ets // 同步数据UIExtensionAbility的展示页 59|---uiextability 60| |---UIExtAbility.ets // UIExtensionAbility(用于验证新接口使用) 61|---sendsyncextability 62| |---SendSyncExtAbility.ets // UIExtensionAbility(用于验证新接口使用) 63|---newuiextability 64| |---NewUIExtAbility.ets // UIExtensionAbility(用于验证新接口使用) 65|---newability 66| |---NewAbility.ets // 被启动的UIAbility(验证新接口启动使用) 67|---utils // 工具 68| |---Logger.ets // 日志工具 69``` 70 71### 具体实现 72 73- 应用查询单个应用是否正在运行的能力,通过appManager调用isApplicationRunning(bundleName: string, callback: 74 AsyncCallback<boolean>): void方法查询应用状态, 源码参考:[Index.ets](entry/src/main/ets/pages/Index.ets) 75- UIExtension创建模系统或模应用,通过UIAbilityContext调用requestModalUIExtension(pickerWant: Want, callback: 76 AsyncCallback<void>): void方法拉起UIExtensionAbility, 源码参考:[Index.ets](entry/src/main/ets/pages/Index.ets) 77- UIExtension支持同步返回数据的能力,通过UIExtensionProxy调用sendSync(data: { [key: string]: Object }): { [key: string]: 78 Object }接口实现,源码参考:[SendSync.ets](entry/src/main/ets/pages/SendSync.ets) 79- UIExtension提供startAbilityAsCaller的能力,通过UIExtensionContentSession调用startAbilityAsCaller(want: Want, callback: 80 AsyncCallback<void>): void接口实现,源码参考:[Ext.ets](entry/src/main/ets/pages/Ext.ets) 81 82### 相关权限 83 84[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) 85 86### 依赖 87 88不涉及。 89 90### 约束与限制 91 921.本示例仅支持标准系统上运行,支持设备:RK3568。 93 942.本示例为Stage模型,支持API11版本SDK,版本号:4.1.5.1; 95 963.本示例涉及使用系统接口:appManager.isApplicationRunning ,UIAbilityContext.requestModalUIExtension, 97UIAbilityContext.startAbilityAsCaller,UIExtensionContentSession.startAbilityAsCaller,UIExtensionProxy.sendSync 98需要手动替换Full SDK才能编译通过; 99 1004.本示例需要使用DevEco Studio 3.1.1 Release (Build Version: 3.1.0.501, built on June 20, 2023)才可编译运行; 101 1025.本示例涉及[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级别,需要配置高权限签名; 103 104### 下载 105 106```shell 107git init 108git config core.sparsecheckout true 109echo code/SystemFeature/Ability/AbilityFeatureSystem/ > .git/info/sparse-checkout 110git remote add origin https://gitee.com/openharmony/applications_app_samples.git 111git pull origin master 112``` 113 114