ArkUI-X与Android桥接通信之消息通信

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

创建平台桥接

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

typescript 复制代码
// 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侧平台桥接的名称一致。通过创建的该对象即可调用平台桥接的方法。

java 复制代码
// 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侧传递数据。

typescript 复制代码
// 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侧的数据。

java 复制代码
// 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侧发送数据。

java 复制代码
// xxx.java

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

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

typescript 复制代码
// 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侧收到数据后的回执。

java 复制代码
// 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) {}
相关推荐
前端不太难2 小时前
从单页面到系统化:鸿蒙 App 演进路径
华为·状态模式·harmonyos
想你依然心痛4 小时前
HarmonyOS 6(API 23)实战:基于悬浮导航、沉浸光感与HMAF的“文思智脑“——PC端AI智能体沉浸式智能写作工作台
人工智能·ar·harmonyos·ai写作
小雨青年4 小时前
鸿蒙 HarmonyOS 6 | Pura X Max 鸿蒙原生适配 09:展开态列表增加字段但不变复杂
华为·harmonyos
richard_yuu4 小时前
鸿蒙治愈游戏模块实战|四大轻量解压游戏、ArkTS动画交互与低功耗落地
游戏·交互·harmonyos
阿钱真强道8 小时前
24 鸿蒙LiteOS GPIO中断实战:从原理到上升沿/下降沿详解
harmonyos·中断·rk·liteos·开源鸿蒙·瑞芯微·rk2206
cd_9492172110 小时前
鸿蒙系统下抖音存储空间不足怎么办?缓存清理教程
缓存·华为·harmonyos
轻口味13 小时前
HarmonyOS 6.1 全栈实战录 - 14 渲染树透镜:FrameNode 渲染状态感知与高性能 UI 调优实战
ui·华为·harmonyos
HwJack2013 小时前
HarmonyOS NEXT 游戏APP开发中如何正确拦截退出手势
游戏·华为·harmonyos
HwJack2013 小时前
HarmonyOS APP开发中ArkTS/JS 类型错误全景拆解
javascript·华为·harmonyos
lqj_本人14 小时前
鸿蒙PC:鸿蒙版本 Electron 框架环境搭建并且实现 XH 笔记应用
笔记·electron·harmonyos