当前位置: 首页 > web >正文

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

平台桥接用于客户端(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.javaBridge bridge = new Bridge(this, "Bridge", getBridgeManager());
Bridge bridge = new Bridge(this, "Bridge", getBridgeManager(), BridgePlugin.BridgeType.BINARY_TYPE);

ArkUI侧向Android侧传递数据

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

// xxx.etsprivate 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.javaString[] data = { "message", "from", "android" };
bridge.sendMessage(data);

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

// xxx.etsprivate 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) {}
http://www.xdnf.cn/news/12823.html

相关文章:

  • STM32 低功耗设计全攻略:PWR 模块原理 + 睡眠 / 停止 / 待机模式实战(串口 + 红外 + RTC 应用全解析)
  • PHP环境极速搭建
  • 【Blender】Blender 通过 Python 实现模型大小压缩
  • 八股---7.JVM
  • 基于 React Native for HarmonyOS5 的跨平台组件库开发指南,以及组件示例
  • Cursor 编辑器, 使用技巧,简单记录一下
  • 求解一次最佳平方逼近多项式
  • 算法题(164):贴海报
  • 电力系统时间同步系统之三
  • 在 Java 中!(逻辑非)和 ||(逻辑或)的优先级关系
  • 生成模型从自回归到变分自动编码器
  • 【PhysUnits】15.18 Unit基础结构 (unit.rs)
  • 无需登录即可使用的Web应用网站
  • CMS、G1、ZGC、Shenandoah 的全面对比
  • 淘晶驰的串口显示屏T0 T1 K0 X2 X3 X5之间有何区别 各自的优势是啥 划分的依据是啥
  • 获取环境变量的两种方式:getenv()和environ
  • Nginx Stream 层精准定位ngx_stream_geoip_module
  • 指针的定义与使用
  • Mybatis-Plus的LambdaWrapper
  • 嵌入式面试高频(5)!!!C++语言(嵌入式八股文,嵌入式面经)
  • 将数据库表导出为C#实体对象
  • EMC测试
  • 6月7日day47打卡
  • [ACTF2020 新生赛]Include 1(php://filter伪协议)
  • 嵌入:AI 的翻译器
  • golang常用库之-go-i18n库(国际化)
  • 26、跳表
  • SEO长尾词优化实战策略
  • 【大模型原理与技术-毛玉仁】第五章 模型编辑
  • leetcode刷题日记——二叉搜索树中第 K 小的元素