魅蓝note3无法开机2,应用间无法AIDL通信,被拦截了,请问如何解决

3.AIDL&&&Android
Interface Definition Language:接口描述语言
-----------------------------------------------
跨进程调用Service实例
&&&&& & 1.在客户端创建接口,比如名字叫 IPlayController
&&&&& & & & & 安卓系统会自动生成类 & Stub&extends&Binder&implements&IPlayController。
&&&&& &&&&&& &类型转换的方法 & & & & & & &IPlayController&asInterface&&(IBinder obj)
&&&&& &2.在客户端编写MyService类
&&&&&&&&&&&&& &
MyService的内部类MyBinder继承自Stub类。
其中特别需要注意的是:onBind方法需要返回MyBinder实例。
& & & &3.在服务端,同样将接口拷贝过来,IPlayController
&&&&&&&&&&&&&&&&
&&&&& 4.在服务端的Activity中绑定MyService,并创建获取ServiceConnection的实例,当绑定成功的时候
&&&&& & 会回调其onServiceConnection,将传入的参数IBinder实例转换为IPlayController实例。就可以远程调用service的服务方法了
private IPlayCoServiceConnection conn=new ServiceConnection() {
public void onServiceDisconnected(ComponentName name) {
public void onServiceConnected(ComponentName name, IBinder binder) {
//获取到controller对象
icontroller=IPlayController.Stub.asInterface(binder);
bindService(intent, conn, BIND_AUTO_CREATE);
protected void onDestroy() {
super.onDestroy();
unbindService(conn);
4.AIDL应用:电话,ITelephony
& & 接口:ITelephony.aidl
& & 基本逻辑:参考6.ServiceManager
& & 监听电话应用-拦截电话:
&&&&&&&&& & 1.拷贝iTelephony.aidl接口
&&&&&&&&& & 2.获得ITelephony:TelePhonyManager类中有一个私有方法。private&ITelephony&getITelephony() {
& & & & return ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE));
& & },利用java 的反射机制
&&&&& & 如果能或取到ServiceManager类,可以使用正常做法。但是Android的设计将ServiceManager隐藏了,所以只能使用反射机制。
& & 正常做法:
&&&&&&&&&&&&&&&&&&&&& & IBinder &binder=ServiceManager.getService(TELEPHONY_SERVICE);
&&&&&&&&&&&&&&&&&&&&& & ITelephony tel=ITelephony.Stub.asInterface(binder);
&&&&&&&&&&&&&&&&&&&&& & tel.endCall();
& & 反射代码:
&&&&&&&&& && //获得ServiceManager的类对象,然后获得其方法对象
Method method=Class.forName(&android.os.ServiceManager&).getDeclaredMethod(&getService&, String.class);
IBinder binder=(IBinder)method.invoke(null, TELEPHONY_SERVICE)//对于静态方法,第一个参数可以被忽略,即可以将它设置为null
ITelephony tel=ITelephony.Stub.asInterface(binder);//IBinder类型转换为ITelephony类型实例
&&&&&&&&&&&&&&&&&&&&& &&tel.endCall();
详细介绍参考:
本文已收录于以下专栏:
相关文章推荐
aidl工具快速方便实现binder进程间通信
前言最近出去面试找工作,被人问到AIDL,我就回答这个东西我用过,也大概理解,Android的进程间通信语言嘛,人家不置可否,那我能咋着呢,毕竟没深入研究过,也没办法,咱只能回来奋发图强了写在前面我以...
AIDL接口可以实现进程间通信,现在这个项目中也使用到了,activity通过AIDL接口调用下层MainService的方法。现在自己又研究了一把,今天把用法和其中的原理记录下来。
使用AIDL接口...
Android中夸进程间通信方式有很多种方式,比如:aidl,Messenger,文件共享,广播(BroadCast),ContentProvider,Socket(网络通信)。每种方式都有自...
他的最新文章
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 魅蓝note黑屏无法开机 的文章

 

随机推荐