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

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[]转为string
    sysAppStr += ']'

    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.kler.cn/a/525502.html

相关文章:

  • Kubernetes 环境中的自动化运维实战指南
  • C++中常用的排序方法之——冒泡排序
  • GSI快速收录服务:让你的网站内容“上架”谷歌
  • java——继承
  • 将ollama迁移到其他盘(eg:F盘)
  • (Java版本)基于JAVA的网络通讯系统设计与实现-毕业设计
  • [Python学习日记-80] 用 socket 实现文件传输功能(上传下载)
  • 设计模式 - 行为模式_Template Method Pattern模板方法模式在数据处理中的应用
  • C#方法作用
  • Java基础知识总结(二十八)--可变参数(...)、静态导入、枚举
  • JMeter插件 Arrivals Thread Group 源码解析:实现原理与性能测试中的应用
  • C24.【C++ Cont】结构体
  • springboot 简化 spring开发
  • 智能家居能源管理系统:Python与AI的完美结合
  • QT设置应用程序图标
  • LeetCode:56.合并区间
  • 工业相机常用词语解释
  • Vue.js 使用 Vuex 管理组件间的共享状态
  • 【GStreamer】GstBuffer的简单分析
  • 10.7 获得程序版本信息
  • 【DeepSeek】LLM强化学习GRPO Trainer详解
  • Baklib在知识管理效率提升中的独特价值与其他产品的比较探析
  • RocketMQ 中如何实现消息的可靠传递?
  • C++,STL 简介:历史、组成、优势
  • 9.1 LangChain深度解析:大模型应用开发的“万能胶水”与核心架构设计
  • 数论问题77一一3x+1问题