IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 鸿蒙 JS FA 调用java PA简单实例 -> 正文阅读

[JavaScript知识库]鸿蒙 JS FA 调用java PA简单实例

核心:

一. Java PA 端

????????需要继承 Ability,重写 onConnect 方法并返回 RemoteObject对象,业务逻辑在RemoteObject? onRemoteRequest方法中处理。代码如下:



public class DemoService extends Ability {


    MyRemote myRemote = new MyRemote();
    //日志
    private static final HiLogLabel LABEL_LOG = new HiLogLabel(3, 0xD001100, "Demo");


    @Override
    protected IRemoteObject onConnect(Intent intent) {
        
        //返回RemoteObject的对象
        return myRemote.asObject();
    }

    class MyRemote extends RemoteObject implements IRemoteBroker {

        public MyRemote() {
            super("descriptor");
        }

        @Override
        public boolean onRemoteRequest(int code, MessageParcel data, MessageParcel reply,MessageOption option) throws RemoteException {
            

            return true;
        }

        @Override
        public IRemoteObject asObject() {
            return this;
        }
    }
}

注意写完service类以后,需要 config.json 中注册service类,代码如下:

"abilities": [
      {
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home"
            ]
          }
        ],
        "visible": true,
        "name": "com.jiakejian.myapplication.MainAbility",
        "icon": "$media:icon",
        "description": "$string:mainability_description",
        "label": "$string:entry_MainAbility",
        "type": "page",
        "launchType": "standard"
      },
      {
        "name": "com.jiakejian.myapplication.DemoService",
        "icon": "$media:icon",
        "description": "DemoService",
        "type": "service"
      }
    ],

二.JS FA端

简单写了一个hml页面,添加了一个点击事件:

<div class="container">

    <button class="title" @click="onClick">
        向java FA传递数据
    </button>
</div>

?js中需要添加 action 对象,相当于javaFA跳转中的intent ,并设为 异步方法。代码如下:

onClick:async function(){

        //要传递的数据
        var data = {
            id:"001",
            name:"xiaoli"
        }
        //action对象,相当于intent
        var action = {};

        //添加service所在的包名
        action.bundleName = 'com.jiakejian.myapplication';
        
        //添加service的类名
        action.abilityName = 'com.jiakejian.myapplication.DemoService';

        //添加messageCode ,用于区分其他的action
        action.messageCode = 100;

        //添加数据
        action.data = data;
        
        //跳转的activity的类型,0代表service
        action.abilityType = 0;

        //最重要的一步:跳转
        var str = await FeatureAbility.callAbility(action);

        //下面是处理 java FA 返回的数据
         var result = JSON.parse(str);
        console.log(result.id);
        console.log(result.name);
    }

三 .Java FA端? 在RemoteObject对象的 onRemoteRequest方法中 处理数据并返回数据,代码如下:

         @Override
        public boolean onRemoteRequest(int code, MessageParcel data, MessageParcel reply,MessageOption option) throws RemoteException {
            switch (code) {
                case 100:
                    String str = data.readString();
                    HiLog.info(LABEL_LOG, "str:"+str);
                    
                    //添加返回数据
                    Map<String, Object> result = new HashMap<String, Object>();
                    result.put("id", "002");
                    result.put("name", "xiaohuang");
                    reply.writeString(ZSONObject.toZSONString(result));
                    break;
                default:
                    return false;
            }
            return true;
        }

执行结果如下:

?

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:23:29  更:2021-11-09 19:25:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/13 13:58:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码