当前位置:   article > 正文

【AIDL】跨应用通信,并实时回调_aidl 如何写回调

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

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/122834
推荐阅读
相关标签
  

闽ICP备14008679号