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

使用aidl通信,跨应用通信并实时回调

使用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中。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值