栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【AIDL】跨应用通信,并实时回调

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【AIDL】跨应用通信,并实时回调

使用aidl通信,跨应用通信并实时回调
  • 使用aidl通信
    • A应用
    • B应用
    • android.mk编译A应用jar包

使用aidl通信 A应用
  1. 创建两个aidl, ICarInfoManager,ICallback
  2. ICarInfoManager中写一个监听的方法, 如:void registerCallback(ICallback callback);
  3. ICallback中写回调方法,如:void notifyData(int type, String state);
  4. 创建一个service,如Test,绑定ICarInfoManager。
    callback可以调用回调方法给B应用。
    例:
  5. 生成包含aidl的jar包
B应用
  1. 导入A应用生成的jar包。
  2. 启动service。如:
  3. 写carInfoConn。
    如: 此处连接的service就是Test,而Test返回的对象就是IBinder就可以获得ICarInfoManager对象。
    此时再去注册callback。
  4. 此处踩坑重点,一定要创建 新类继承ICallback
    如果在registerCallback时,直接如下写,在A应用那边会显示callback为空。
    原因是此时重写了asBinder(),而默认返回null。
  5. 正确写法 如下
    继承类后,不需要重写asBinder(),此时debug看,A应用callback不为空,回调会返回到B应用。
android.mk编译A应用jar包
  1. aidl文件 新建一个module,和app文件夹平级。
    java和aidl的内部文件夹名称一致,如都为com.cn.bdd,后面分别创建java文件或aidl文件。

  2. module下的build.gradle。应如下:

  3. module下的manifest的包名不能和app下manifest的包名一致,其他不用写。

  4. 使用as自带右侧gradle中module->other->package-aidl-jar脚本,编译出jar包,生成在app/libs目录下。
    (若脚本不存在,请改变你gradle版本,一般是gradle低了)

  5. mmm编译apk,修改以下内容,会把module中aidl打入apk中。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/671434.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号