#鸿蒙通关秘籍#如何开发 EmbeddedUIExtensionAbility 提供方模块?
        HarmonyOS
      
        赞
        
 收藏 0
 回答 1
 
        待解决
        
相关问题
 #鸿蒙通关秘籍#鸿蒙应用的数据提供方如何管理写入的数据? 
1383浏览  • 1回复 待解决
卡片提供方在主进程中主动更新卡片 
2454浏览  • 1回复 待解决
#鸿蒙通关秘籍#如何加载和使用 EmbeddedUIExtensionAbility? 
1254浏览  • 1回复 待解决
#鸿蒙通关秘籍#如何在EmbeddedUIExtensionAbility中加载内容? 
939浏览  • 1回复 待解决
#鸿蒙通关秘籍#如何有效管理 EmbeddedUIExtensionAbility 的生命周期? 
1582浏览  • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙开发中的数据访问方如何查询公共数据? 
1054浏览  • 1回复 待解决
#鸿蒙通关秘籍#如何实现鸿蒙API 13中EmbeddedUIExtensionAbility的生命周期管理? 
2007浏览  • 1回复 待解决
#鸿蒙通关秘籍#能否在EmbeddedUIExtensionAbility中使用特定的进程名称? 
976浏览  • 1回复 待解决
#鸿蒙通关秘籍#为什么鸿蒙开发框架提供多个GridRowSizeOption尺寸属性? 
1197浏览  • 1回复 待解决
HarmonyOS 如何通过卡片上的按钮打开提供方的page页面,并且要携带page页面所需要的参数呢? 
794浏览  • 1回复 待解决
#鸿蒙通关秘籍#如何配置鸿蒙应用中EmbeddedUIExtensionAbility的module.json5文件? 
1264浏览  • 1回复 待解决
#鸿蒙通关秘籍#怎么在DevEco Studio中创建一个EmbeddedUIExtensionAbility? 
1536浏览  • 1回复 待解决
#鸿蒙通关秘籍# HarmonyOS NEXT中的ArkTS如何进行模块化开发? 
1886浏览  • 1回复 待解决
作为组件提供方无法知道使用方传入的header/body中都有哪些字段,以及这些字段内部是否存在嵌套的情况。 
2531浏览  • 1回复 待解决
#鸿蒙通关秘籍#如何在我的HarmonyOS应用中实现模块化开发? 
1177浏览  • 1回复 待解决
#鸿蒙通关秘籍#在鸿蒙开发中如何用动态import来加载本地和远程模块? 
1544浏览  • 1回复 待解决
#鸿蒙通关秘籍#如何使用FileAccessHelper模块复制文件? 
1047浏览  • 1回复 待解决
#鸿蒙通关秘籍#在HarmonyOS应用开发中如何通过模块进行挖孔屏适配? 
1307浏览  • 1回复 待解决
#鸿蒙通关秘籍# 在鸿蒙开发中如何通过connection模块正确实现网络状态监测功能? 
984浏览  • 0回复 待解决
#鸿蒙通关秘籍#在UIAbility中嵌入EmbeddedUIExtensionAbility时,如何保证它们属于同一应用? 
716浏览  • 1回复 待解决
#鸿蒙通关秘籍#如何使用Router模块实现鸿蒙页面跳转? 
1772浏览  • 1回复 待解决
#鸿蒙通关秘籍#如何在鸿蒙系统中声明共享模块? 
1162浏览  • 1回复 待解决
#鸿蒙通关秘籍#EmbeddedUIExtensionAbility在多进程配置的设备上有啥特别之处? 
1287浏览  • 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" } ] } }