通过AIDL实现挂断电话功能
来源:互联网 发布:网络屏蔽器软件下载 编辑:程序博客网 时间:2024/05/01 21:03
1.通过查看TelephonyManager可以看到很多隐藏的方法,这些隐藏的方法大部分都是通过调用getITelephony得到一个ITelephony对象来实现这些功能的,可以看出TelephonyManager相当于一个包装类,主要功能都是在ITelephony对象中,想要实现挂断电话功能可以通过得到Itelephony实现,分析如下代码:
ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE));
可以看出Itelephony是通过aidl文件得到的,所以从安卓源码中找到
E:\2.3 source\JB\frameworks\base\telephony\java\com\android\internal\telephony\ITelephony.aidl
文件,并且查看它所在的包,在自己工程的src下创建同样的包,拷入ITelephony.aidl
2.拷入后通过查看ITelephony.aidl 文件源码,发现缺少一个aidl文件,查找NeighboringCellInfo.aidl 以同样方式复制进工程下.
3.调用 ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE));发现ServiceManager是一个隐藏类,无法直接使用.那么只能通过反射得到类的getService方法.如:
//通过反射得到隐藏类
Class
//通过AIDL得到的对象,调用挂断电话的方法 asInterface.endCall();
实现代码:
//通过反射得到隐藏类 Class<?> serviceManager = MyTelephonyListener.class.getClassLoader().loadClass("android.os.ServiceManager"); Method method = serviceManager.getMethod("getService", String.class); Object invoke = method.invoke(null,Context.TELEPHONY_SERVICE); //使用AIDL得到接口对象 ITelephony asInterface = ITelephony.Stub.asInterface((IBinder) invoke); //通过AIDL得到的对象,调用挂断电话的方法 asInterface.endCall();
- 通过AIDL实现挂断电话功能
- 通过aidl实现挂断电话
- AIDL实现挂断电话
- 采用aidl技术实现电话的挂断
- Android--通过AIDL+反射,调用android内部隐藏的服务实现挂断电话
- 使用AIDL挂断电话
- 采用aidl挂断电话
- AIDL自动挂断电话
- 通过AIDL及反射机制,使用隐藏API挂断电话
- 通过AIDL及反射机制,使用隐藏API挂断电话
- 通过AIDL及反射机制,使用隐藏API挂断电话
- 通过AIDL及反射机制,使用隐藏API挂断电话
- Android黑名单电话挂断(AIDL)
- Android-实现电话自动接听/电话自动挂断功能
- 文章标题android来电通过广播实现电话自动挂断
- Android 实现自动接听和挂断电话功能
- Android的AIDL以及挂断电话
- Android studio 挂断电话 使用ITelephony.aidl
- oracle数据库管理之表空间
- FastDFS之合并存储缺陷导致数据丢失或错误
- Android和Java的关系和区别
- iOS开发UI篇 -- 0401团购案例-使用xib自定义控件
- 黑马程序员------面向对象02
- 通过AIDL实现挂断电话功能
- 亚马逊资源名称 (ARN) 和 AWS 服务命名空间
- java,下划线与驼峰命名转换
- Android设计模式(十二)--抽象工厂模式
- 设置Linux交换分区
- FastDFS之Tracker-Leader选择和tracker server间通信
- C语言宏定义总结
- AspNet MVC4 教学-29:Asp.Net MVC4 jQuery计时器读取服务器时间的Ajax技术快速Demo
- android代码混淆之不同ADT版本和不同IDE之间混淆配置文件的区别