平台桥接用于客户端(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) {}

ArkUI-X与Android消息通信的更多相关文章

  1. Android消息通信 第三方开源项目EventBus 的用法

    EventBus是github上的一个第三方开发库,其在github上的项目主页地址:https://github.com/greenrobot/EventBus EventBus的消息模型是消息发布 ...

  2. Android线程消息通信(一)

    Android在Java标准线程模型的基础上,提供了消息驱动机制,用于多线程之间的通信.基于消息驱动机制的线程通信模型陈伟线程消息通信.在标准线程模型中,线程执行完毕后便退出,而Android扩展了线 ...

  3. Android消息机制

    每一个Android应用在启动的时候都会创建一个线程,这个线程被称为主线程或者UI线程,Android应用的所有操作默认都会运行在这个线程中. 但是当我们想要进行数据请求,图片下载,或者其他耗时操作时 ...

  4. Android消息机制:Looper,MessageQueue,Message与handler

    Android消息机制好多人都讲过,但是自己去翻源码的时候才能明白. 今天试着讲一下,因为目标是讲清楚整体逻辑,所以不追究细节. Message是消息机制的核心,所以从Message讲起. 1.Mes ...

  5. Android消息推送完美方案[转]

    转自 Android消息推送完美方案 推送功能在手机应用开发中越来越重要,已经成为手机开发的必须.在Android应用开发中,由于众所周知的原因,Android消息推送我们不得不大费周折.本文就是用来 ...

  6. Android消息推送完美方案

    转自:http://bbs.hiapk.com/thread-4652657-1-1.html 推送功能在手机应用开发中越来越重要,已经成为手机开发的必须.在Android应用开发中,由于众所周知的原 ...

  7. Android消息推送完美解决方案全析

    推送功能在手机应用开发中越来越重要,已经成为手机开发的必须.在Android应用开发中,由于众所周知的原因,Android消息推送我们不得不大费周折.本文就是用来和大家共同探讨一种Android消息推 ...

  8. Android消息推送的服务端

    2.Android消息推送 MQTT服务器采用mosquito  http://mosquitto.org/ PHP管理包采用phpmqttclient:https://github.com/toku ...

  9. Android开发之漫漫长途 ⅥI——Android消息机制(Looper Handler MessageQueue Message)

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  10. 安卓中不同APP之间的消息通信

    昨天在腾讯实习生招聘初试面试时面试官问道我关于两个APP之间相互通信的方式,当时自己回道到了contentProvider与BroadcastReceiver.但他接着问还有没有其它的方式,我跟他说可 ...

随机推荐

  1. Qt通过setProperty来达到设置控件的不同样式表

    文章目录 前言 根据不同的属性显示不一样的样式 setProperty Q_PROPERTY和DynamicProperty 前言 最近在做项目的时候,找了一个开源的小控件,发现里面有一个设置样式的骚 ...

  2. linux ubuntu mysql 默认密码

    前言 linux ubuntu安装mysql Ubuntu 安装 MySQL 后,在 /etc/mysql 目录下有个 debian.cnf,这里存储着默认的密码. [client] host = l ...

  3. go krotos proto编译引用外部包 was not found or had errors

    前言 kratos protos 生成 pb.go 文件时,会出现引用其他 proto 文件报错 was not found or had errors,因找不到此文件而无法编译. 解决 首先我们先了 ...

  4. Docker Hub 镜像加速器——持续更新(2025年3月12日)

    国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器.Docker 官方和国内很多云服务商都提供了国内加速器服务. 配置加速地址 Ubuntu 16.04+.Debian 8+ ...

  5. 深入理解Base64编码原理

    前言 上篇文章有涉及到Base64编码的内容,今天我们再来详细了解一下Base64的编码原理以及应用场景. 通过这篇文章你能够学习到: 什么是Base64,为什么需要Base64? Base64的编码 ...

  6. 实现领域驱动设计 - 使用ABP框架 - 应用程序服务

    应用程序服务 应用程序服务是一种无状态的服务,它实现应用程序的用例.应用程序服务通常获取和返回dto.它由表示层使用.它使用并协调领域对象(实体.存储库等)来实现用例 应用程序服务的常见原则如下: 实 ...

  7. 【网络协议】深入理解HTTP协议

    # 协议 协议就是一种双方提前约定好采用某种形式,以某种规格,利用某种物体把数据传输出去:而另一方再以同样的规则和流程去接收数据的约定制度或者规章. 现代网络是由多种运行在不同平台上的异构系统组成的. ...

  8. zk基础—3.集群与核心参数

    大纲 1.zk单机模式是如何启动的 2.zk集群是如何部署和启动的 3.zk集群部署要用什么样配置的机器 4.如何合理设置zk的JVM参数以及内存大小 5.zk配置的核心参数之tickTime.dat ...

  9. sql数据库连接

    前言 作为数据存储的数据库,近年来发展飞快,在早期的程序自我存储到后面的独立出中间件服务,再到集群,不可谓不快了.早期的sql数据库一枝独秀,到后面的Nosql,还有azure安全,五花八门,教人学不 ...

  10. 在 ASP.NET Core 中编写高性能 Web API 的4个小技巧

    Web API 通常用来与外部模块进行通信.发送和接收数据,作为后端开发人员,应该把写出高性能的应用作为目标. 下面 4 个技巧是我在编写 Web API 的小技巧. 1 .大量数据使用分页查询 接口 ...