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

android aidl进程间通信封装通用实现-用法说明

接上一篇:android aidl进程间通信封装通用实现-CSDN博客

该aar包的使用还是比较方便的

一先看客户端

1 初始化

JsonProtocolManager.getInstance().init(mContext, "com.autoaidl.jsonprotocol");
//客户端监听事件实现
JsonProtocolManager.getInstance().setJsonProtocolReceive(new IJsonReceive() {@Overridepublic String received(String jsonParams, Bundle bundle) {LogUtils.d(TAG, "OnReceive --> jsonParams:" + jsonParams);return JsonSdkController.getInstance().onReceive(jsonParams);}
});

2 发送事件:

 就是通过json的形式将参数包裹进来,另一端统一解析

 唯一标志位:KEY_CLIENT_REQUEST_AUTHOR 是必须要加的,不然区分不出来是那个客户端

JSONObject jsonObject = new JSONObject();
jsonObject.put("protocolId", ProtocolID.PROTOCOL_SEARCH);
jsonObject.put("versionName", "v0.0.1");
JSONObject jsonData = new JSONObject();
jsonData.put("say","hello- which pid are you ?");
jsonObject.put("data", jsonData);
jsonObject.put(SDKConstants.KEY_CLIENT_REQUEST_AUTHOR, "yangtestt");
JsonProtocolManager.getInstance().request(jsonObject.toString(),null);

二再看服务端

1 初始化

JsonProtocolManager.getInstance().init(mContext, "com.autoaidl.jsonprotocol");

2 发送事件

JSONObject jsonObject = new JSONObject(); jsonObject.put("protocolId", ProtocolID.PROTOCOL_SEARCH); jsonObject.put("versionName", "v0.0.1"); JSONObject jsonData = new JSONObject(); jsonData.put("say","hello- which pid are you ?"); jsonObject.put("data", jsonData); //jsonObject.put(SDKConstants.KEY_CLIENT_REQUEST_AUTHOR, "yangtestt"); JsonProtocolManager.getInstance().request(jsonObject.toString(),null);

服务端和客户端相互发送比较类似,只是服务端不需要传唯一id值

也不需要监听回调

我项目里的demo更简单,直接将客户端和服务端的代码 放到一起公用了(代码虽然冗余,但能用),demo中的服务端和客户端唯一的区别就是gradle里面动态改了包名。

实际项目中可以直接将lib库编译成aar包集成进去,然后客户但android 11的版本需要

增加两部

1 增加权限

<queries><package android:name="com.autoaidl.jsonprotocol" /><intent><action android:name="com.auto.aidl.AidlService" /></intent>
</queries>

2 init的时候要传入服务端的包名

服务器端只需引入aar包就行了,init的时候包名也可以传空。

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

相关文章:

  • 【Java中23种设计模式-单例模式2--懒汉式线程不安全】
  • 【后端高频面试题--Linux篇】
  • 网络原理HTTP/HTTPS(2)
  • 【Java中23种设计模式-单例模式2--懒汉式2线程安全】
  • 由LeetCode541引发的java数组和字符串的转换问题
  • HTTP 头部- Origin Referer
  • Python 实现Excel 文件合并
  • ECMAScript 6+ 新特性 ( 一 )
  • 动态DP入门线性动态DP
  • 基于python+django+vue.js开发的停车管理系统
  • 网站管理新利器:免费在线生成 robots.txt 文件!
  • 【Java程序员面试专栏 Java领域】Java虚拟机 核心面试指引
  • 洛谷C++简单题小练习day15—计算阶乘小程序(不用循环)
  • Vue报错,xxx is defined #变量未定义
  • Idea启动Gradle报错: Please, re-import the Gradle project and try again
  • Python函数(一)
  • Excel表的内容批量生成个人加水印的Word文档
  • 微服务设计:Spring Cloud API 网关概述
  • stm32学习笔记-STLINK使用
  • Linux CentOS stream 9 firewalld
  • VLM多模态图像识别小模型UForm
  • 我的NPI项目之设备系统启动(七) -- 高通OS启动阶段和镜像分区简析
  • vue框架-vue-cli
  • Sora (text-to-video model-文本转视频模型)
  • java生态环境评价Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • 数据结构-最短路径(Dijkstra算法与Floyd算法)
  • 文献速递:GAN医学影像合成--联邦生成对抗网络基础医学图像合成中的后门攻击与防御
  • Java实现自动化pdf打水印小项目 使用技术pdfbox、Documents4j
  • hive load data未正确读取到日期
  • C++ 遍历map的3中方法