首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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.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废弃,推荐使用新构造方法)

publicBridge(Context context, String name, int id){

super(context, name, id);

  setMessageListener(this);

}

// 创建平台桥接实例(新)

publicBridge(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废弃,推荐使用新构造方法)

publicBridge(Context context, String name, int id){

super(context, name, id);

  setMessageListener(this);

}

// 创建平台桥接实例(新)

publicBridge(Context context, String name, BridgeManager bridgeManager){

super(context, name, bridgeManager);

  setMessageListener(this);

}

// 注册回调,监听ArkUI侧的回执

@Override

publicvoidonMessageResponse(Object data){}

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OFK_GgscOW2T-Msv9_KTr16g0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券