android 用aidl构建QQ机器人宿主,被hook的应用作为客户端实现通讯的探索

官方文档https://developer.android.com/guide/components/aidl
要实现这个功能只能让机器人作为服务端启用Service,如果要实现qq那边实现,那么则需要修改软件,或者通过反射等方法实现,但是这种方式实现必然有弊端,而且实现起来估计不容易。

Parcel:unable to marshalValue
此问题表示传递的东西必须序列化,否则无法通过aidl发送过去
DeadObjectException。表示服务以及死掉了,绑定的连接对象已经无法使用了,应该删除

package cn.qssq666.robot;
import java.util.List;
import java.util.Map;
interface ICallBack {
    void actionPerformed (int actionId);
//基本数据类型默认为in  can be an out type, so you must declare it as in, out or inout. 'out String flag2' can only be an in parameter.
     void onReceiveMsg( int flag, boolean flag1,   String flag2,in Map map,in List list);
}
// RobotCall.aidl
package cn.qssq666.robot;
import cn.qssq666.robot.ICallback;

// Declare any non-default types here with import statements

interface RobotCallBinder {
    /**
     * Demonstrates some basic types that you can use as parameters
     * and return values in AIDL.
     */
    void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat,
            double aDouble, String aString);
    void registerCallback(in ICallBack cb);
    void unregisterCallback( in ICallBack cb);
  boolean isTaskRunning();
    void stopRunningTask();

       List queryData(int action,boolean flag1,String flag2);
        Map queryMapData(int action,boolean flag1,String flag2);

}

基本类型不需要加in ,默认为in,而非基本类型必须加in或者inout,或者out
不支持重载参数

:app:preDebugBuild UP-TO-DATE
G:\newproject\AndroidServiceHost\app\src\main\aidl\cn\qssq666\robot\ICallback.aidl:12 attempt to redefine method queryData,
G:\newproject\AndroidServiceHost\app\src\main\aidl\cn\qssq666\robot\ICallback.aidl:11    previously defined here.

只支持基本类型和序列化的对象或者 纯Map,或者List或者String而不是arraylist

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值