android黑名单挂断电话(endCall)反射方法获取
由于保证手机安全性,挂断电话的endcall方法被隐藏了。但是我们可以通过java反射机制获得此方法去拦截电话,下面代码为拦截电话片段代码。请参阅
//获取到系统的电话服务TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);MyPhoneStateListener listener = new MyPhoneStateListener();//设置监听tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
private class MyPhoneStateListener extends PhoneStateListener {//电话状态改变的监听@Overridepublic void onCallStateChanged(int state, String incomingNumber) {super.onCallStateChanged(state, incomingNumber);
// * @see TelephonyManager#CALL_STATE_IDLE 电话闲置
// * @see TelephonyManager#CALL_STATE_RINGING 电话铃响的状态
// * @see TelephonyManager#CALL_STATE_OFFHOOK 电话接通switch (state){//电话铃响的状态case TelephonyManager.CALL_STATE_RINGING:String mode = dao.findNumber(incomingNumber);/*** 黑名单拦截模式* 1 全部拦截 电话拦截 + 短信拦截* 2 电话拦截* 3 短信拦截*/if(mode.equals("1")|| mode.equals("2")){System.out.println("挂断黑名单电话号码");Uri uri = Uri.parse("content://call_log/calls");getContentResolver().registerContentObserver(uri,true,new MyContentObserver(new Handler(),incomingNumber));//挂断电话endCall();}break;}}}
/*** 挂断电话(通过反射机制获得隐藏的endCall方法)*/private void endCall() {try {//通过类加载器加载ServiceManagerClass<?> clazz = getClassLoader().loadClass("android.os.ServiceManager");//通过反射得到当前的方法Method method = clazz.getDeclaredMethod("getService", String.class);IBinder iBinder = (IBinder) method.invoke(null, TELEPHONY_SERVICE);ITelephony iTelephony = ITelephony.Stub.asInterface(iBinder);iTelephony.endCall();} catch (Exception e) {e.printStackTrace();}}
- * 挂断电话(通过反射机制获得隐藏的endCall方法)
- */
- private void endCall() {
- try {
- //通过类加载器加载ServiceManager
- Class<?> clazz = getClassLoader().loadClass("android.os.ServiceManager");
- //通过反射得到当前的方法
- Method method = clazz.getDeclaredMethod("getService", String.class);
- IBinder iBinder = (IBinder) method.invoke(null, TELEPHONY_SERVICE);
- ITelephony iTelephony = ITelephony.Stub.asInterface(iBinder);
- iTelephony.endCall();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
android黑名单挂断电话(endCall)反射方法获取相关推荐
- 黑名单挂断电话及删除电话记录
黑名单挂断电话及删除电话记录 挂断电话 挂断电话需要申请权限android.permission.CALL_PHONE 对于黑名单号码的来电如何挂断,由于监听来电时在TelephonyManager中 ...
- android 自动拨打电话和挂断电话(反射和intent方式)
欢迎来到博主的技术分享博客 今天分享的技术主要内容是自动拨打电话和挂断电话.自动拨打电话分为两种,一种是通过反射ITelephony这个类直接调用call方法,一种是通过intent方法.而挂断电话则 ...
- android 实现挂断电话【四种方式】,亲测可用
网上查到两种挂断电话方式 第一种:通过反射得到隐藏的API,需要aidl文件,但是这种方式测试后,无效.方法写出来吧,也许对你有你有帮助. 首先在main文件下创建报名com.android.inte ...
- Android挂断电话流程
近期在友盟上看到许多关于挂断电话导致崩溃的问题,如下异常 java.lang.NoSuchMethodError: No interface method endCall()Z in class Lc ...
- Android挂断电话代码
监听来电这里就不贴代码了,这是监听到来电后挂断电话 /*** 通过反射的方式挂断电话*/public void endcall() {try {//获取到ServiceManagerClass< ...
- Android自动接听和挂断电话实现原理
转自:http://bbs.51cto.com/thread-1078059-1.html 一 前言 这两天要研究类似白名单黑名单以及手势自动接听的一些功能,所以呢,自然而然的涉及到怎么自动接听/挂 ...
- Android挂断电话以及Java Class Loader
Android中,要自己实现一个挂断电话方法时,很久之前可以endCall().不过现在已经不行了,要应用反射机制,获取到 "android.os.ServiceManager" ...
- Android拨打、接听、挂断电话操作
Android2.3之前的系统可以通过反射机制调用ITelephone的方法来挂断电话,因为Android2.3以后增加了对permission android.permission.MODIFY_ ...
- 挂断电话的实现(即类似于电话号码黑名单)
在文章的开头先列出以下需要注意的地方: 1.需要用到的权限如下: <uses-permission android:name="android.permission.READ_PHON ...
- Android通过AIDL实现接听电话、挂断电话操作 | 拨打电话
Android中拨打电话功能是很轻松的只需要几行代码即可,如下: 首先还是得加上权限这个东西(或者动态申请) <!--拨打电话--> <uses-permission android ...
最新文章
- capitalism 2 3892303_2021年2月5日财神方位查询,今天哪个方位财运好
- Proe5.0导出PDF至配置文件的相关方法,VC++
- 接下来学习计划2020.11.9
- 深入理解 Java 垃圾回收机制
- 前端学习(2937):vue对象之间的实例属性
- java集合进行排序的两种方式
- matlab图像处理模板,求助,数字图像处理模板匹配
- MyBatis3源码解析(7)TypeHandler注册与获取
- JSK-396 平均值【入门】
- maven的安装配置超详细教程【含nexus】
- (一)如何实现一个单进程阻塞的网络服务器
- asp.net 页面引入外部JS 在IE6下延迟加载报错,IE7+均没问题
- 微信小程序商城源码,带前后端,基于node
- html如何隐藏input,html如何让input隐藏
- Ubuntu 机箱前置耳机没声音的问题(彻底解决)
- 关系代数题目小汇总——数据库
- C++ Eigen 库中旋转向量、旋转矩阵、欧拉角、四元数的定义及互相转换
- 统筹规划题:“服装店4个小组15天最多做多少套衣服裤子”的思路
- 去掉最高分最低分求平均分
- Kubernetes更优雅的监控工具Prometheus Operator