#鸿蒙通关秘籍#如何开发 EmbeddedUIExtensionAbility 提供方模块?
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
#鸿蒙通关秘籍#鸿蒙应用的数据提供方如何管理写入的数据?
367浏览 • 1回复 待解决
卡片提供方在主进程中主动更新卡片
1723浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何加载和使用 EmbeddedUIExtensionAbility?
168浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在EmbeddedUIExtensionAbility中加载内容?
188浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何有效管理 EmbeddedUIExtensionAbility 的生命周期?
320浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙开发中的数据访问方如何查询公共数据?
226浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何实现鸿蒙API 13中EmbeddedUIExtensionAbility的生命周期管理?
356浏览 • 1回复 待解决
#鸿蒙通关秘籍#为什么鸿蒙开发框架提供多个GridRowSizeOption尺寸属性?
201浏览 • 1回复 待解决
作为组件提供方无法知道使用方传入的header/body中都有哪些字段,以及这些字段内部是否存在嵌套的情况。
1822浏览 • 0回复 待解决
#鸿蒙通关秘籍#能否在EmbeddedUIExtensionAbility中使用特定的进程名称?
207浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在我的HarmonyOS应用中实现模块化开发?
206浏览 • 1回复 待解决
#鸿蒙通关秘籍# HarmonyOS NEXT中的ArkTS如何进行模块化开发?
478浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何配置鸿蒙应用中EmbeddedUIExtensionAbility的module.json5文件?
306浏览 • 1回复 待解决
#鸿蒙通关秘籍#在鸿蒙开发中如何用动态import来加载本地和远程模块?
245浏览 • 1回复 待解决
#鸿蒙通关秘籍#怎么在DevEco Studio中创建一个EmbeddedUIExtensionAbility?
298浏览 • 1回复 待解决
HarmonyOS 如何通过卡片上的按钮打开提供方的page页面,并且要携带page页面所需要的参数呢?
136浏览 • 1回复 待解决
#鸿蒙通关秘籍# 在鸿蒙开发中如何通过connection模块正确实现网络状态监测功能?
150浏览 • 0回复 待解决
#鸿蒙通关秘籍#在HarmonyOS应用开发中如何通过模块进行挖孔屏适配?
320浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何使用FileAccessHelper模块复制文件?
199浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中声明共享模块?
241浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何使用Router模块实现鸿蒙页面跳转?
351浏览 • 1回复 待解决
#鸿蒙通关秘籍#在UIAbility中嵌入EmbeddedUIExtensionAbility时,如何保证它们属于同一应用?
156浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何为组合控件提供朗读支持?
161浏览 • 1回复 待解决
要开发一个 EmbeddedUIExtensionAbility 提供方模块,按照以下步骤进行:
在 DevEco Studio 工程中,手动创建一个 EmbeddedUIExtensionAbility:
ets
目录) 右键选择“New > Directory”,新建一个目录,并命名为EmbeddedUIExtAbility
。EmbeddedUIExtAbility
目录中,右键选择“New > File”,新建一个.ts
文件,并命名为EmbeddedUIExtAbility.ts
。在
EmbeddedUIExtAbility.ts
文件中,导入EmbeddedUIExtensionAbility
的依赖包,自定义类继承EmbeddedUIExtensionAbility
,并实现生命周期回调,如下:typescript import EmbeddedUIExtensionAbility from '@ohos.app.ability.EmbeddedUIExtensionAbility' import UIExtensionContentSession from '@ohos.app.ability.UIExtensionContentSession' import Want from '@ohos.app.ability.Want';
const TAG: string = '[ExampleEmbeddedAbility]' export default class ExampleEmbeddedAbility extends EmbeddedUIExtensionAbility { onCreate() { console.log(TAG,
onCreate
); }onForeground() { console.log(TAG,
onForeground
); }onBackground() { console.log(TAG,
onBackground
); }onDestroy() { console.log(TAG,
onDestroy
); }onSessionCreate(want: Want, session: UIExtensionContentSession) { console.log(TAG,
onSessionCreate, want: ${JSON.stringify(want)}
); let param: Record<string, UIExtensionContentSession> = { 'session': session }; let storage: LocalStorage = new LocalStorage(param); session.loadContent('pages/extension', storage); }onSessionDestroy(session: UIExtensionContentSession) { console.log(TAG,
onSessionDestroy
); } }在入口文件
pages/extension.ets
中,定义界面内容:typescript import UIExtensionContentSession from '@ohos.app.ability.UIExtensionContentSession';
let storage = LocalStorage.getShared()
@Entry(storage) @Component struct Extension { @State message: string = 'EmbeddedUIExtensionAbility Index'; private session: UIExtensionContentSession | undefined = storage.get<UIExtensionContentSession>('session');
build() { Column() { Text(this.message) .fontSize(20) .fontWeight(FontWeight.Bold) Button("terminateSelfWithResult").fontSize(20).onClick(() => { this.session?.terminateSelfWithResult({ resultCode: 1, want: { bundleName: "com.example.embeddeddemo", abilityName: "ExampleEmbeddedAbility", }}); }) }.width('100%').height('100%') } }
在
module.json5
文件中,注册EmbeddedUIExtensionAbility
:{ "module": { "extensionAbilities": [ { "name": "EmbeddedUIExtAbility", "icon": "$media:icon", "description": "EmbeddedUIExtAbility", "type": "embeddedUI", "srcEntry": "./ets/EmbeddedUIExtAbility/EmbeddedUIExtAbility.ts" } ] } }