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

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) {}

相关文章:

  • 在Unity中Update和Fixedupdate有什么区别
  • PHP中如何定义常量以及常量和变量的主要区别
  • 【Pikachu】PHP反序列化RCE实战
  • 讲述我的plc自学之路 第十三章
  • Unity VR/MR开发-开发环境准备
  • 大数据学习(133)-Hive数据分析2
  • 行为设计模式之Iterator(迭代器)
  • ​**​CID字体​**​ 和 ​**​Simple字体​**​
  • 新手如何选择前端框架?
  • 行为型设计模式之Mediator(中介者)
  • 【Redis】持久化
  • 苍穹外卖-day01
  • 告别 @MockBean!在 Spring Boot 3.2+ 中使用 @MockitoBean 进行单元测试
  • NLP学习路线图(三十三): 文本分类
  • redis--黑马点评--分布式锁实现详解
  • uni-app学习笔记二十七--设置底部菜单TabBar的样式
  • AWS 公开数据集下载与操作说明
  • iOS 抖音导航栏首页一键分两列功能的实现
  • 【iOS】多线程NSOperation,NSOperationQueue
  • 从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十二)
  • 福建省建设工程继续教育网站/域名注册阿里云
  • 介绍个人网站的ppt怎么做/自媒体十大平台
  • 企业网站建设应该注意什么事项问题/品牌宣传策略
  • perl网站建设/搜索引擎优化是什么
  • dreamweaver的优点/抖音seo排名软件哪个好
  • 在网站上如何做天气预报栏/足球联赛排名