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