首先 需要知道  关于电话的操作 都在 TelephonyManager这个 类中

//初始化 TelephonyManager 
TelephonyManager mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

如果想监听 电话事件   需要给 TelephonyManager 设置 一个监听  即  listen方法

MyPhoneListener myPhoneListener = new MyPhoneListener();mTelephonyManager.listen(myPhoneListener,PhoneStateListener.LISTEN_CALL_STATE);

需要实现PhoneStateListener  这个监听方法:

class MyPhoneListener extends PhoneStateListener {@Overridepublic void onCallStateChanged(int state, String incomingNumber) {switch (state) {case TelephonyManager.CALL_STATE_IDLE:break;case TelephonyManager.CALL_STATE_OFFHOOK:break;case TelephonyManager.CALL_STATE_RINGING:if (incomingNumber.equals(et.getText().toString().trim())) {Toast.makeText(getApplicationContext(), "adfadg", 0).show();System.out.println("被哥拦截了");// 下面 执行挂断操作endCall();}break;default:break;}}}

挂断操作  需要调用 endCall()方法 但是 这个方法只在android1.5 之前 可以使用  之后 被隐藏了  所以 若想 使用这个方法 可以使用反射的方法使用

所谓反射 就是可以调用或者修改 方法的权限  属性 等。。。。

public void endCall() {try {Class<?> clazz = getClassLoader().loadClass(   //调用类加载器  参数是 要调用的类的  完整包名"android.os.ServiceManager");Method method = clazz.getDeclaredMethod("getService", String.class); //  参数是  方法的名字 和方法的参数类型 IBinder iBinder = (IBinder) method.invoke(null,     Context.TELEPHONY_SERVICE);     ITelephony iTelephony = ITelephony.Stub.asInterface(iBinder);  //  此处关系到ALDT  还没深究  日后探寻iTelephony.endCall();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}

这样 就可以调用系统隐藏的函数了   endCall()

拦截电话--- 关于利用反射 调用系统 hiden的 方法相关推荐

  1. C# 利用反射调用类下的方法

    //1.Load(命名空间名称,即程序集),GetType(命名空间.类名) Type type = Assembly.Load("DapperNet").GetType(&quo ...

  2. Android 反射、代理调用系统隐藏API方法与接口类连接Wi-Fi

    本文转载自:http://www.xwdoor.net/android-reflection-proxy-call-system-hidden-api-method-and-interface-cla ...

  3. Android P+通过反射调用系统API实现高级功能

    Android P+通过反射调用系统API实现高级功能 1. 打开隐藏API 1.1 导入FreeReflection包 1.2 打开隐藏API 2. 反射系统服务并调用相应方法 通过反射调用系统AP ...

  4. Android开发中调用系统窗口的方法

    //直接拨号 Intent callIntent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:12345678")); start ...

  5. 【Java】Java反射调用可变参数的方法

    文章目录 1.概述 1.概述 因为要Java反射调用可变参数的方法,所以参考了这篇文章:https://www.cnblogs.com/huqingchen/p/5979936.html 但是测试过程 ...

  6. ios 调用系统应用的方法 应用间跳转的方法

    声明一个私有方法: #pragma mark - 私有方法 -(void)openUrl:(NSString *)urlStr{//注意url中包含协议名称,iOS根据协议确定调用哪个应用,例如发送邮 ...

  7. 利用反射动态实例化类执行方法并传值

    /// <summary>         /// 利用反射动态实例化类执行方法并传值         /// </summary>         /// <param ...

  8. java 反射调用get方法_Java通过PropertyDescriptor反射调用set和get方法

    本文实例为大家分享了PropertyDescriptor反射调用set和get方法,供大家参考,具体内容如下 第一段: package com.zhoushun; import java.lang.r ...

  9. android利用反射调用截屏api,Android利用反射机制调用截屏方法和获取屏幕宽高的方法...

    想要在应用中进行截屏,可以直接调用 View 的 getDrawingCache 方法,但是这个方法截图的话是没有状态栏的,想要整屏截图就要自己来实现了. 还有一个方法可以调用系统隐藏的 screen ...

最新文章

  1. clion pycharm 报错 bash: line 0: cd: /xxx: No such file or directory
  2. 1.单一职责原则(Single Responsibility Principle)
  3. python—高阶函数
  4. Git远端库(GitHub)及Git流
  5. 【SpringCloud】 failed to req API:/nacos/v1/ns/instance after all servers code:500 msg Read timed out
  6. 基于JAVA+Servlet+JSP+MYSQL的学生卡消费统计管理系统
  7. 计算机组成原理实验:静态随机存储器实验
  8. Docker网桥模式ping不通宿主机
  9. Linux下父进程子进程先后终止的不同处理
  10. 微信小程序里面的标签和html标签的对比、微信小程序基础之常用控件
  11. 10公斤无人机动力测试台测试-拉力、扭矩、转速
  12. Docker容器——重命名镜像的TAG
  13. 北京市中 高英语听说计算机考,北京市教育委员会关于听力及言语障碍考生参加2019年中考英语听说计算机考试有关事项的通知...
  14. 01章 象数易理篇之一
  15. socket简介及java实例
  16. linux shell 笔记
  17. android 9.0 Launcher3 去掉抽屉式,显示所有 app
  18. CBMI 2022 | 蒸馏细粒度对齐分数以实现高效的图文匹配和检索
  19. RK3588芯片支持8K视频的硬编解码
  20. 微信小程序授权登录获取用户名和昵称

热门文章

  1. html5条件筛选jquery,jQuery实现多条件筛选
  2. Mybatis多条件筛选
  3. Noise2Noise的一些学习总结
  4. 怎么给网页加动态背景
  5. C++容器 vector(附代码实例讲解)
  6. 深入理解工具链-自己搭建STM32编程IDE
  7. js 跳转到指定位置 高德地图_第三方高德地图Javascript API
  8. 记一次小白调参baseline——NLP中文预训练模型泛化能力比赛
  9. stm32复位引脚NRST
  10. 十大数据挖掘领域的经典算法