ArkUI-X与Android消息通信

简介: 平台桥接实现ArkUI与Android/iOS间的双向数据传递和方法调用。本文聚焦Android与ArkUI的交互:1) 在ArkUI侧通过`createBridge`创建桥接实例,指定名称及数据格式(如JSON或二进制);2) 在Android侧创建`BridgePlugin`类,匹配名称完成方法调用。数据传递支持ArkUI向Android发送数据并通过回调接收响应,以及Android向ArkUI发送数据并监听回执。具体用法参考`Bridge API`和`BridgePlugin`文档。

平台桥接用于客户端(ArkUI)和平台(Android或iOS)之间传递消息,即用于ArkUI与平台双向数据传递、ArkUI侧调用平台的方法、平台调用ArkUI侧的方法。本文主要介绍Android平台与ArkUI交互,ArkUI侧具体用法请参考Bridge API,Android侧参考BridgePlugin。

创建平台桥接

1.在ArkUI侧创建平台桥接。指定名称,该名称应与Android侧平台桥接的名称一致。通过创建的该对象即可调用平台桥接的方法。数据可以发送json格式或二进制格式。

// xxx.ets

// 导入平台桥接模块
import bridge from '@arkui-x.bridge';

// 创建平台桥接实例
const bridgeImpl = bridge.createBridge('Bridge');
// 创建平台桥接实例(二进制格式)
const bridgeImpl = bridge.createBridge('Bridge', BridgeType.BINARY_TYPE);

2.在Android侧创建BridgePlugin类。指定名称,该名称应与ArkUI侧平台桥接的名称一致。通过创建的该对象即可调用平台桥接的方法。

// xxx.java

Bridge bridge = new Bridge(this, "Bridge", getBridgeManager());
Bridge bridge = new Bridge(this, "Bridge", getBridgeManager(), BridgePlugin.BridgeType.BINARY_TYPE);

ArkUI侧向Android侧传递数据

1.ArkUI侧向Android侧传递数据。

// xxx.ets

private bridgeImpl = bridge.createBridge('Bridge');

this.bridgeImpl.sendMessage('text').then((res)=>{
   
    // 监听Android侧的回执
    console.log('response: ' + res);
}).catch((err: Error) => {
   
    console.log('error: ' + JSON.stringify(err));
});

2.Android侧接收来自ArkUI侧的数据。

// xxx.java

// 创建平台桥接实例(将在since 13废弃,推荐使用新构造方法)
public Bridge(Context context, String name, int id) {
   
    super(context, name, id);
    setMessageListener(this);
}

// 创建平台桥接实例(新)
public Bridge(Context context, String name, BridgeManager bridgeManager) {
   
    super(context, name, bridgeManager);
    setMessageListener(this);
}

// 注册回调,监听ArkUI侧的数据传递
@Override
public Object onMessage(Object data) {
   
    // 返回回执给ArkUI侧
    return "java onMessage success";
}

Android侧向ArkUI侧传递数据

1.Android侧向ArkUI侧发送数据。

// xxx.java

String[] data = {
    "message", "from", "android" };
bridge.sendMessage(data);

2.ArkUI侧设置回调,用于接收Android侧发送的数据。

// xxx.ets

private bridgeImpl = bridge.createBridge('Bridge');

this.bridgeImpl.setMessageListener((message) => {
   
    console.log('receive message: ' + message);

    // 收到消息后,向Android侧发送回执
    return "ArkUI receive message success";
});

3.Android侧注册回调,监听ArkUI侧收到数据后的回执。

// xxx.java

// 创建平台桥接实例(将在since 13废弃,推荐使用新构造方法)
public Bridge(Context context, String name, int id) {
   
    super(context, name, id);
    setMessageListener(this);
}

// 创建平台桥接实例(新)
public Bridge(Context context, String name, BridgeManager bridgeManager) {
   
    super(context, name, bridgeManager);
    setMessageListener(this);
}

// 注册回调,监听ArkUI侧的回执
@Override
public void onMessageResponse(Object data) {
   }
相关文章
|
25天前
|
API Android开发 开发者
ArkUI-X跨平台应用改造指南
随着HarmonyOS Next 5.0的发布,基于ArkTS开发的应用日益丰富,但也面临多平台适配的挑战。ArkUI-X框架提供“一次开发、三平台部署”解决方案,助力开发者高效实现跨平台应用。本文介绍如何通过ArkUI-X将HarmonyOS Next应用改造为支持Android与iOS的跨平台工程,涵盖产品定制层(products)、基础特性层(features)和公共能力层(commons)的设计与实现,优化代码复用与交互一致性。
135 52
|
2月前
|
存储 IDE 开发工具
ArkUI-X跨平台框架接入指南
ArkUI-X是ArkUI的跨平台扩展框架,支持OpenHarmony、Android和iOS等多平台开发,未来还将增加更多平台支持。开发者只需一套主代码即可构建高性能、精美的多平台应用。使用DevEco Studio进行ArkUI-X开发时,需注意:仅支持ArkUI-X源码调试,各平台Native代码需用对应IDE处理;支持真机与模拟器调试;需配置相关SDK(如Android SDK)及环境变量(如ANDROID_HOME)。创建工程后,可通过DevEco Studio编译生成跨平台应用包,并在不同平台上运行查看效果。
220 64
|
1月前
|
JSON API Android开发
ArkUI-x跨平台Bridge最佳实践
ArkUI-X框架的bridge核心架构思想旨在实现ArkTS与平台原生语言(如Java、OC)之间的通信,支持业务层通信及跨平台API中转。bridge具备三种能力:多种桥接模式(JSON、二进制、线程并发)、数据与方法互传,以及“一码三平台”支持。通过分层架构设计,上层业务调用统一接口,下层实现平台差异化逻辑。FAQ部分提供了HMS API跨平台改造方案,包括动态import优化以避免crash问题,提升代码效率与整洁性。
122 44
|
23天前
|
移动开发 开发工具 Android开发
ArkUI-X跨平台技术落地-华为运动健康(二)
本文介绍了ArkUI-X在华为运动健康应用中的实践,涵盖原生与ArkUI界面参数传递、跨平台bridge桥接通信、平台差异化动态编译处理及性能表现。通过intent与putExtra()实现页面参数传递,定义5类bridge(数据、设备、页面跳转、日志、用户账户)提升跨平台与原生交互能力。采用编译前动态修改import技术屏蔽多端差异,确保业务代码复用。ArkUI-X跨平台页面达到60fps滑动帧率,包体积增加19MB,内存表现与原生持平。目前心脏健康模块已在iOS商用,Android版处于Beta阶段,未来将迁移更多高频模块至ArkUI-X框架,进一步提升开发效率与用户体验。
|
23天前
|
移动开发 JSON Android开发
ArkUI-X跨平台技术落地-华为运动健康(一)
华为运动健康App在多端开发中面临工作量大和体验不一致的问题,传统H5技术虽可跨平台但性能不足。为此,在鸿蒙NEXT版本开发中引入ArkUI-X框架,实现“一次开发、三端部署”。具体策略为:首页保留原生开发,二级页面(如心脏健康、睡眠)采用ArkUI-X技术复用代码,三级及低频页面仍使用H5。同时,通过抽象数据平台接口、bridge桥接底层能力差异等方式,解决多端数据与功能适配问题,大幅降低开发成本并提升用户体验一致性。架构设计上,新增独立跨平台Entry模块与健康Module,支持编译hap包供Android和iOS复用,形成高效跨平台解决方案。
|
25天前
|
Android开发
ArkUI-X与Android联动编译开发指南
本文介绍通过CLI工具链创建项目并生成联动编译脚本,实现Android Studio编译Android应用时自动编译ArkTS源码并将产物拷贝至Android工程。其功能包括手动配置ArkTS源码编译开关、编译module及文件输出路径。文章详细说明了编译配置方法,如设置`configBuildFlag`开关触发编译脚本、添加跨平台module(例:`moduleLists=entry,testmodule`)、修改Android的arkuix和systemRes输出路径。相关脚本位于`.arkui-x/android`目录。
|
2月前
|
前端开发 API vr&ar
DevEco重大更新快来体验吧
HarmonyOS API 17正式发布,DevEco新增多项特性。支持创建API 17应用,模拟器首次适配阔折叠手机与2in1设备。新增权限管理功能,可自动签名快速申请ACL权限;新增自动监听WebView进程能力,简化调试流程。系统能力方面,支持指定窗口大小、AR Engine深度估计、ArkUI对2in1设备优化及新增File Manager Service Kit文件管理服务,大幅提升开发效率与用户体验。
175 64
DevEco重大更新快来体验吧
|
1月前
|
Android开发 开发者
ArkUI-X中Plugin生命周期开发指南
ArkUI-X插件用于扩展ArkUI应用功能,支持管理插件生命周期。本文聚焦于Android平台ArkUI-X插件生命周期的使用,介绍如何通过实现`IArkUIXPlugin`接口创建插件,包括`onRegistry`初始化和`onUnRegistry`销毁方法。开发者可通过`addPlugin`方法在`StageActivity`中注册插件,确保调用顺序正确(需在`super.onCreate()`前)。示例代码展示了插件的创建、资源管理和注册流程,帮助开发者快速上手。
120 57
|
1月前
|
开发工具 Android开发
ArkUI-X添加到现有Android项目中
本教程介绍如何使用ArkUI-X SDK开发Android AAR,实现ArkTS声明式开发在Android平台的显示。主要内容包括:1) 跨平台Library工程开发;2) AAR在Android应用中的集成方式。通过ACE Tools或DevEco Studio完成AAR构建,初始化ArkUI-X,并通过Activity或Fragment加载页面。具体步骤涵盖工程创建、构建AAR包、配置Manifest及使用Intent或Fragment打开页面等。
130 57
|
1月前
|
IDE API 开发工具
ArkUI-X平台差异化
跨平台使用场景是一套ArkTS代码运行在多个终端设备上,如Android、iOS、OpenHarmony(含基于OpenHarmony发行的商业版,如HarmonyOS Next)。当不同平台业务逻辑不同,或使用了不支持跨平台的API,就需要根据平台不同进行一定代码差异化适配。当前仅支持在代码运行态进行差异化,接下来详细介绍场景及如何差异化适配。
101 43