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

arkts bridge使用示例

接上一篇:arkui-x跨平台与android java联合开发-CSDN博客

本篇讲前端arkui如何与后端其他平台进行数据交互,接上一篇,后端os平台为Android java。

arkui-x框架提供了一个独特的机制:bridge。

1、前端接口定义实现

定义一个bridge的class,里面创建平台桥接实例,就可以实现各种bridge接口。

这里实现了一个getThirdAppInfo接口,获取后端第三方应用的信息。参数为两个string,返回一个promise数据。promise也就是JavaScript中用于处理异步操作的一种机制,详细说法这里就不展开了。

DevEco Studio工程

import bridge from '@arkui-x.bridge';export class ThirdPartyBridge {// 创建平台桥接实例private thirdPartyBridge = bridge?.createBridge && bridge.createBridge('xBridge');public getThirdAppInfo(defaultCfg: string, sysAppList: string) {return new Promise<string>((resolve, reject) => {this.thirdPartyBridge.callMethod('getThirdAppInfo', defaultCfg, sysAppList).then((result) => {console.log("getThirdAppInfo: ", result)resolve(result ? result.toString() : "")}).catch((err: Error) => {console.log('getThirdAppInfo err', JSON.stringify(err))})})}
}

2、后端数据获取接口

Android Studio工程

import ohos.ace.adapter.capability.bridge.BridgeManager;
import ohos.ace.adapter.capability.bridge.BridgePlugin;@SuppressLint("LogNotTimber")
public class Bridge extends BridgePlugin {private static final String TAG = Bridge.class.getSimpleName();public Bridge(Context context, String name, BridgeManager bridgeManager) {super(context, name, bridgeManager);}
。。。。。。public String getThirdAppInfo(String defaultCfg, String sysAppStr) throws JSONException {
//        Log.d("getThirdAppInfo", "---para1: " + defaultCfg + " para2: " + sysAppStr);List<JSONObject> retList = new ArrayList<>();
。。。。。。
// 实现获取数据的逻辑return retList.toString();}
。。。。。。
}

这里返回数据定义为json字符串,是为了方便前端解析。

3、前端调用bridge的业务代码实现

DevEco Studio工程

import { ThirdPartyBridge } from '../../bridge/ThirdPartyBridge';
import { DesktopShowCfg, ThirdPartyAppInfo } from '../../model/ThirdPartyAppInfo'export const getThirdAppInfo = async (defaultCfg: string, sysAppList: ThirdPartyAppInfo[]): Promise<ThirdPartyAppInfo[]> => {try {let sysAppStr: string = '[';
......// ThirdPartyAppInfo[]转为stringsysAppStr += ']'const bridge = new ThirdPartyBridge()const str = await bridge.getThirdAppInfo(defaultCfg, sysAppStr)console.log("---getThirdAppInfo", `获取第三方应用信息成功:` + str)let appInfoListList: ThirdPartyAppInfo[] = JSON.parse(str) as ThirdPartyAppInfo[]console.log("---getThirdAppInfo", `获取第三方应用信息,解析成功,app数量为:` + appInfoListList.length)return appInfoListList} catch (e) {console.log("---getThirdAppInfo", `获取第三方应用信息失败`, e.message)return []}
}

这里直接使用 JSON.parse(str) as ThirdPartyAppInfo[]方式实现了快速解析json。

http://www.lryc.cn/news/529163.html

相关文章:

  • LINUX部署微服务项目步骤
  • zsh安装插件
  • 网站如何正式上线(运维详解)
  • SQL server 数据库使用整理
  • 【Rust自学】17.2. 使用trait对象来存储不同值的类型
  • 初始化mysql报错cannot open shared object file: No such file or directory
  • 2025年1月22日(网络编程)
  • Jason配置环境变量
  • 蓝桥杯python语言基础(7)——自定义排序和二分查找
  • (开源)基于Django+Yolov8+Tensorflow的智能鸟类识别平台
  • 后盾人JS--闭包明明白白
  • redis的分片集群模式
  • Kiwi 安卓浏览器本月停止维护,扩展功能迁移至 Edge Canary
  • 我的AI工具箱Tauri+Django内容生产介绍和使用
  • 四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)
  • Java---猜数字游戏
  • 网站快速收录:利用RSS订阅提升效率
  • vue3第三部分--组件通信
  • DeepSeek R1-Zero vs. R1:强化学习推理的技术突破与应用前景
  • matlab提取滚动轴承故障特征
  • 数据结构与算法学习笔记----容斥原理
  • Java 知识速记:全面解析 final 关键字
  • (笔记+作业)书生大模型实战营春节卷王班---L0G2000 Python 基础知识
  • 9、Docker环境安装Nginx
  • 受击反馈HitReact、死亡效果Death Dissolve、Floating伤害值Text(末尾附 客户端RPC )
  • 572. 另一棵树的子树
  • MATLAB中textBoundary函数用法
  • vue3的路由配置
  • 在彼此的根系里呼吸
  • 深入理解若依RuoYi-Vue数据字典设计与实现