众所周知,Java的InvocationHandler可以作为动态代理去调用接口方法。但是如何去调用android里面的aidl接口定义的方法呢?
经过查阅相关资料和自己实践最终得出解决方案:
1 首先利用反射获取aidl接口的实例
Class<?> reflectCallback = null;
try {
reflectCallback = Class.forName("com.xxx.xxx.IAidlClass"); //aidl类
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
mProxyHandler = new CallbackProxyHandler(ServiceManager.AUDIO_BOOK_KEY);
mCallbackProxy = (IAidlClass) Proxy.newProxyInstance(
CallbackProxyManager.class.getClassLoader(), new Class[] {
reflectCallback },
mProxyHandler);
2 接着去实现InvocationHandler类
public class CallbackProxyHandler implements InvocationHandler {
String key;
public CallbackProxyHandler(String key) {
this.key = key;
}
@Override
public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
boolean result =

本文介绍如何使用Java的动态代理机制调用Android AIDL接口定义的方法。通过反射获取AIDL接口实例,并实现InvocationHandler接口来完成远程服务的启动及方法调用。
最低0.47元/天 解锁文章
1064

被折叠的 条评论
为什么被折叠?



