| Name | Date | Size | #Lines | LOC | ||
|---|---|---|---|---|---|---|
| .. | - | - | ||||
| AppScope/ | 06-May-2025 | - | 34 | 32 | ||
| entry/ | 06-May-2025 | - | 2,176 | 2,023 | ||
| hvigor/ | 06-May-2025 | - | 23 | 22 | ||
| screenshots/ | 06-May-2025 | - | ||||
| .gitignore | D | 06-May-2025 | 133 | 12 | 12 | |
| README_zh.md | D | 06-May-2025 | 9.3 KiB | 153 | 89 | |
| build-profile.json5 | D | 06-May-2025 | 1.2 KiB | 53 | 51 | |
| hvigorfile.ts | D | 06-May-2025 | 234 | 7 | 5 | |
| oh-package.json5 | D | 06-May-2025 | 210 | 11 | 10 | |
| ohosTest.md | D | 06-May-2025 | 2.4 KiB | 10 | 8 |
README_zh.md
1# 基础能力增强 2 3### 介绍 4 5本示例使用 [AbilityStartCallback](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-inner-application-abilityStartCallback.md) , [UIExtensionContent](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-inner-application-uiExtensionContext.md) , [UIExtensionContentSession](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-uiExtensionContentSession.md) 中的接口进行实现。 6 7### 效果预览 8 9| 主页面 | 弹出状态Toast | UIExtensionContentSession页面 | UIExtension启动页 | 10| :----------------------------------------------: | :---------------------------------------------------: | :--------------------------------------------------: | :----------------------------------------------------: | 11| <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" /> | 12 13使用说明 14 15AbilityStartCallback对应接口 16 171.点击主页面**AbilityStartCallback开发示例**按钮,跳转到'AbilityStartCallback开发示例'界面; 18 192.点击**startAbilityByTyp onResult**按钮,拉起'选择音频'窗口,点击返回按钮,返回上级界面; 20 213.点击**startAbilityByType onError**按钮,弹出提示'startAbilityByType onError...'信息。 22 23 24 25UIExtensionContext对应接口 26 271.点击主页面**UIExtensionContext开发示例**按钮,跳转到'UIExtensionContext开发示例'界面; 28 292.点击**openLink**按钮,启动一个新的UIAbility,点击返回按钮,返回上级界面; 30 313.点击**启动UIExtensionAbility**按钮,启动一个新的UIExtensionAbility,在UIExtensionAbility界面上显示reportDrawnCompleted,terminateSelf callback,terminateSelf promise,terminateSelfWithResult callback,terminateSelfWithResult promise接口对应的按钮; 32 334.点击**reportDrawnCompleted**按钮,弹出提示'UIExtensionContent.reportDrawnCompleted succeed.'信息; 34 355.点击**terminateSelf callback**按钮,关闭UIExtensionAbility,显示'UIExtensionContext开发示例'界面; 36 376.点击**启动UIExtensionAbility**按钮,在UIExtensionAbility界面上点击**terminateSelf promise**按钮,关闭UIExtensionAbility,显示'UIExtensionContext开发示例'界面; 38 397.点击**启动UIExtensionAbility**按钮,在UIExtensionAbility界面上点击**terminateSelfWithResult callback**按钮,关闭UIExtensionAbility,显 示'UIExtensionContext开发示例'界面; 40 418.点击**启动UIExtensionAbility**按钮,在UIExtensionAbility界面上点击**terminateSelfWithResult promise**按钮,关闭UIExtensionAbility,显示'UIExtensionContext开发示例'界面。 42 43 44 45UIExtensionContentSession对应接口 46 471.点击主页面**UIExtensionContentSession开发示例**按钮,跳转到'UIExtensionContentSession开发示例'界面; 48 492.点击**启动UIExtensionAbility**按钮,启动一个新的UIExtensionAbility,在UIExtensionAbility界面上显示terminateSelfWithResult callback,terminateSelfWithResult promise,setWindowPrivacyMode callback,setWindowPrivacyMode promise,getUIExtensionWindowProxy接口对应的按钮; 50 513.点击**terminateSelfWithResult callback**按钮,关闭UIExtensionAbility,显示'UIExtensionContentSession开发示例'界面; 52 534.点击**terminateSelfWithResult promise**按钮,关闭UIExtensionAbility,显示'UIExtensionContentSession开发示例'界面; 54 555.点击**setWindowPrivacyMode callback**按钮,弹出提示'UIExtensionContentSession.setWindowPrivacyMode(callback)...'信息; 56 576.点击**setWindowPrivacyMode promise**按钮,弹出提示'UIExtensionContentSession.setWindowPrivacyMode(promise)...'信息; 58 597.点击**getUIExtensionWindowProxy**按钮,弹出提示'UIExtensionContentSession.getUIExtensionWindowProxy...'信息; 60 61### 工程目录 62 63``` 64entry/src/main/ets/ 65|---entryability 66| |---EntryAbility.ets // 首页的Ability 67| |---OpenLinkUIAbility.ets // UIAbility(用于验证新接口使用) 68|---pages 69| |---Index.ets // 首页 70| |---OpenLinkIndex.ets // 被启动的OpenLink接口的展示页 71|---uiextensionentry 72| |---ContextUIExtensionAbility.ets // UIExtensionAbility(用于验证新接口使用) 73| |---SessionUIExtensionAbility.ets // UIExtensionAbility(用于验证新接口使用) 74|---uiextensionpages 75| |---AbilityStartCallback.ets // AbilityStartCallback的接口的展示页 76| |---UIExtensionContentSession.ets // UIExtensionContentSession的接口的展示页 77| |---UIExtensionContentSessionPage.ets // SessionUIExtensionAbility加载的页面 78| |---UIExtensionContext.ets // UIExtensionContext的接口的展示页 79| |---UIExtensionContextPage.ets // ContextUIExtensionAbility加载的页面 80 81``` 82 83### 具体实现 84 85* AbilityStartCallback对应接口实现,源码参考[AbilityStartCallback.ets](entry/src/main/ets/uiextensionpages/AbilityStartCallback.ets) 86 87 * onResult接口实现:通过调用startAbilityByType接口,'所有照片'窗口,关闭窗口回调触发onResult接口; 88 * onError接口实现:通过调用startAbilityByType接口,调用失败触发onError接口; 89 90* UIExtensionContext对应接口实现,源码参考[UIExtensionContext.ets](entry/src/main/ets/uiextensionpages/UIExtensionContext.ets)和[UIExtensionContextPage.ets](entry/src/main/ets/uiextensionpages/UIExtensionContextPage.ets) 91 92 * openLink接口实现:在被启动的UIAbility的module.json5中配置下列字段: 93 94 -"actions"列表中包含"ohos.want.action.viewData" 95 96 \- "entities"列表中包含"entity.system.browsable" 97 98 \- "uris"列表中包含"scheme"为"https"且"domainVerify"为true的元素 99 100 在调用端调用openLink接口,传入对应字段信息,可以拉起对应的UIAbility; 101 102 * reportDrawnCompleted接口实现:通过调用this.context.reportDrawnCompleted口开发者提供打点功能; 103 104 * terminateSelf(Promise)接口实现:通过调用this.context.terminateSelf()接口实现停止Ability自身功能; 105 106 * terminateSelf(Callback)接口实现:通过调用this.context.terminateSelf()接口实现停止Ability自身功能; 107 108 * terminateSelfWithResult(Promise)接口实现:通过调用this.context.terminateSelfWithResult()接口实现停止Ability自身,并将结果返回给调用者的功能; 109 110 * terminateSelfWithResult(Callback)接口实现:通过调用this.context.terminateSelfWithResult()接口实现停止Ability自身,并将结果返回给调用者的功能; 111 112* UIExtensionContentSession对应接口实现,源码参考[UIExtensionContentSession.ets](entry/src/main/ets/uiextensionpages/UIExtensionContentSession.ets)和[UIExtensionContentSessionPage.ets](entry/src/main/ets/uiextensionpages/UIExtensionContentSessionPage.ets) 113 114 * terminateSelfWithResult(Promise)接口实现:通过调用this.session.terminateSelfWithResult()接口,实现停止UIExtensionContentSession对应的窗口界面对象,并将结果返回给UIExtensionComponent控件的功能; 115 * terminateSelfWithResult(Callback)接口实现:通过调用this.session.terminateSelfWithResult()接口,实现停止UIExtensionContentSession对应的窗口界面对象,并将结果返回给UIExtensionComponent控件的功能; 116 * setWindowPrivacyMode(Promise)接口实现:通过调用this.session.setWindowPrivacyMode()接口,实现设置窗口是否为隐私模式功能; 117 * setWindowPrivacyMode(Callback)接口实现:通过调用this.session.setWindowPrivacyMode()接口,实现设置窗口是否为隐私模式功能; 118 * getUIExtensionWindowProxy接口实现:通过调用this.session.getUIExtensionWindowProxy()接口,实现获取UIExtension窗口代理功能; 119 120### 相关权限 121 122[ohos.permission.START_INVISIBLE_ABILITY](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md) 123 124[ohos.permission.PRIVACY_WINDOW](https://gitee.com/openharmony/docs/blob/eb73c9e9dcdd421131f33bb8ed6ddc030881d06f/zh-cn/application-dev/security/permission-list.md) 125 126### 依赖 127 128不涉及。 129 130### 约束与限制 131 1321.本示例仅支持标准系统上运行,支持设备:RK3568; 133 1342.本示例为Stage模型,支持API12版本SDK,版本号:5.0.0.31; 135 1363.本示例涉及使用系统接口:UIAbilityContext.requestModalUIExtension,UIAbilityContext.startAbilityByType 137需要手动替换Full SDK才能编译通过; 138 1394.本示例需要使用DevEco Studio NEXT Developer Beta1 (Build Version: 5.0.3.403, built on June 20, 2024)才可编译运行; 140 1415.本示例涉及[ohos.permission.START_INVISIBLE_ABILITY](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md)权限为 system_core级别,需要配置高权限签名。 142 143### 下载 144 145```shell 146git init 147git config core.sparsecheckout true 148echo code/SystemFeature/UIExtensionSamples > .git/info/sparse-checkout 149git remote add origin https://gitee.com/openharmony/applications_app_samples.git 150git pull origin master 151``` 152 153