文章内容来自https://www.jianshu.com/p/4f6d20076922

博客主要起到学习和记录的作用

直接贴代码了

   private void hookOnClickListener(View view) {try {// 得到 View 的 ListenerInfo 对象//得到getListenerInfo方法Method getListenerInfo = View.class.getDeclaredMethod("getListenerInfo");getListenerInfo.setAccessible(true);//得到ListenerInfo变量Object listenerInfo = getListenerInfo.invoke(view);// 得到 原始的 OnClickListener 对象//获取指定类Class<?> listenerInfoClz = Class.forName("android.view.View$ListenerInfo");//获取类中的变量Field mOnClickListener = listenerInfoClz.getDeclaredField("mOnClickListener");mOnClickListener.setAccessible(true);View.OnClickListener originOnClickListener = (View.OnClickListener) mOnClickListener.get(listenerInfo);// 用自定义的 OnClickListener 替换原始的 OnClickListenerView.OnClickListener hookedOnClickListener = new HookedOnClickListener(originOnClickListener);mOnClickListener.set(listenerInfo, hookedOnClickListener);} catch (Exception e) {KLog.w("hook clickListener failed!", e);}}class HookedOnClickListener implements View.OnClickListener {private View.OnClickListener origin;HookedOnClickListener(View.OnClickListener origin) {this.origin = origin;}@Overridepublic void onClick(View v) {Toast.makeText(FeedbackActivity.this, "hook click", Toast.LENGTH_SHORT).show();KLog.i("Before click, do what you want to to.");if (origin != null) {origin.onClick(v);}KLog.i("After click, do what you want to to.");}}

使用

 mTvQQ.setOnClickListener(this);hookOnClickListener(mTvQQ);

Android使用 Java 反射实现 API Hook相关推荐

  1. Java反射机制API

    实现 Java 反射机制的类都位于 java.lang.reflect 包中,java.lang.Class 类是 Java 反射机制 API 中的核心类. java.lang.Class 类 jav ...

  2. Android利用Java反射获取用户手机的rom定制系统及版本,EMUI,MIUI,ColorOS,FunthouchOS等

    Android利用Java反射获取用户手机的rom定制系统版本及版本号,EMUI,MIUI,ColorOS,FunthouchOS等 前言 正文 结语 前言 现在手机厂商都推出了自己的基于Androi ...

  3. java反射机制(三)---java的反射和代理实现IOC模式 模拟spring

    IOC(Inverse of Control)可翻译为"控制反转",但大多数人都习惯将它称为"依赖注入".在Spring中,通过IOC可以将实现类.参数信息等配 ...

  4. Java反射示例教程

    Java反射示例教程 Java Reflection提供检查和修改应用程序的运行时行为的能力.Java中的反射是核心java的一个先进主题.使用java反射我们可以检查一个类,在运行时接口,枚举,获取 ...

  5. 安卓逆向-new-sec6-4 Java反射相关知识以及平头哥框架hook构造函数 | App发布测试版本感染

    反射机制 app加上这个属性,也能发布测试版本,被成功感染,无需签名和发布那个release版本 APP是E:\1A_androidstudio_project\course4 插件是E:\1A_an ...

  6. Java、Android基础之—反射

    前言 写这篇文章原因之一,是因为之后会对一些Android第三方框架进行分析.虽不能达到完全清晰,但大体的涉及知识需明白. 反射概述 反射是框架设计的灵魂.(使用的前提条件:必须先得到代表的字节码的C ...

  7. Java反射机制及API使用

    原文地址 反射简单来说,就是动态加载对象,并对对象进行剖析.在Java中的反射机制是指在运行状态中,对于任意一个类,都能够知道并获取这个类的所有属性和方法. Java反射机制的作用: 在运行时判断任意 ...

  8. java 反射api_反射是最重要的Java API

    java 反射api 前几天我在想-这是最重要的Java API. 哪种SE和EE API可以使大多数Java生态系统成为可能,而哪些API不能重新创建为第三方库. 正如您可能已经猜到标题一样,我认为 ...

  9. java反射api研究_深入研究Java 8中的可选类API

    java反射api研究 作为Java程序员,我们所有人都经历了以下情况:我们调用一个方法来获取某个值,然后代替直接对返回值调用某些方法,我们首先必须检查返回值是否不为null,然后在返回值. 这是像G ...

最新文章

  1. finished with exit code -1073740791 (0xC0000409)
  2. 【01】网页中清除历史浏览记录能不能彻底删除浏览记录?
  3. 对php的感受100字_最新2020个人年终工作总结开头范文100字
  4. python t t_Python ttable包_程序模块 - PyPI - Python中文网
  5. Transformer10个重要问题
  6. 如何看待EMNLP2021 best paper? 邱锡鹏教授:以为走错会场了
  7. java设计模式(八) 适配器模式
  8. pache tomcat慢速HTTP拒绝服务攻击安全问题解决办法
  9. 机器学习基础(十五)—— blending
  10. Ubuntu安装Tensorflow及anaconda环境下使用TensorFlow
  11. WCF系列教程之WCF服务宿主与WCF服务部署
  12. matlab中牛顿迭代程序,牛顿迭代法的MATLAB程序
  13. 用JavaSocket编程开发聊天室,附超详细注释
  14. VMware Workstation12安装win 7企业版激活
  15. speedoffice(Excel)如何隐藏编辑栏
  16. CTO、技术总监、首席架构师的区别
  17. 数字电路(4)门电路(三)
  18. Google云存储服务GDrive再度浮出水面
  19. 2022当代科学技术前沿知识 课后测试
  20. python spacy 安装超时_安装spacy失败

热门文章

  1. 利用蜘蛛盘问qushi链接
  2. 跨境电商:外贸新风口?亚马逊测评大揭秘,深度解析!
  3. 使用linux系统别名配置git别名
  4. 最新云核泛目录自带MIP模板开源站群系统源码
  5. 企业使用CRM客户关系管理系统的四大理由
  6. 分布式架构--两阶段提交和三阶段提交
  7. 【ML06】Learning Rate 学习率
  8. jvm crash 的原因以及解决办法
  9. 湖北师范学院计算机考研清华,博士生考试_实属罕见:一个学院竟有11人考取清华大学硕士_沪江英语...
  10. 计算机二级会计电算word,计算机二级考试真题-Word-小刘-会计电算化节节高升