autojs-Hook按钮点击事件

简介: 牙叔教程 简单易懂

牙叔教程 简单易懂


"ui";
importClass(android.view.View);
importClass(java.lang.Class);
ui.layout(
  <vertical margin="100">
    <button id="btn">按钮</button>
  </vertical>
);
ui.btn.click(function () {
  toastLog("你点击了按钮");
});
hookOnClickListener(ui.btn);
function hookOnClickListener(view) {
  // 第一步:反射得到 ListenerInfo 对象
  // getListenerInfo = View.class.getDeclaredMethod("getListenerInfo");
  getListenerInfo = Class.forName("android.view.View").getDeclaredMethod("getListenerInfo");
  getListenerInfo.setAccessible(true);
  listenerInfo = getListenerInfo.invoke(view);
  // 第二步:得到原始的 OnClickListener事件方法
  listenerInfoClz = Class.forName("android.view.View$ListenerInfo");
  mOnClickListener = listenerInfoClz.getDeclaredField("mOnClickListener");
  mOnClickListener.setAccessible(true);
  // 第三步:用 Hook代理类 替换原始的 OnClickListener
  hookedOnClickListener = JavaAdapter(View.OnClickListener, {
    onClick: function (v) {
      toastLog("Hook Click Listener");
      log(v);
    },
  });
  mOnClickListener.set(listenerInfo, hookedOnClickListener);
}


参考

Android Hook 机制之简单实战

环境

手机: Mi 11 Pro

Android版本: 11

Autojs版本: 9.0.13


名人名言


思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问
--- 牙叔教程


声明


部分内容来自网络
本教程仅用于学习, 禁止用于其他用途

相关文章
|
9月前
uniapp组件库uview1的u-button的问题,u-button多次点击只触发事件一次
uniapp组件库uview1的u-button的问题,u-button多次点击只触发事件一次
216 0
|
Android开发
autojs修改悬浮窗按钮点击事件
牙叔教程 简单易懂
1067 0
|
8天前
|
移动开发 小程序 API
uniapp组件库Popup 弹出层 的使用方法
uniapp组件库Popup 弹出层 的使用方法
13 1
|
8天前
|
移动开发 小程序 API
uniapp组件库Modal 模态框 的使用方法
uniapp组件库Modal 模态框 的使用方法
14 1
|
11月前
Taro + Taro UI实现列表下拉刷新,无限滚动 #106
Taro + Taro UI实现列表下拉刷新,无限滚动 #106
780 0
|
前端开发
前端hook项目pc总结笔记-hook项目文件自定义扎号onchange事件
前端hook项目pc总结笔记-hook项目文件自定义扎号onchange事件
61 0
|
JavaScript 前端开发
浅谈Vue中的this.$nextTick()方法(利用QRCode.js在dialog弹窗中生成二维码)
浅谈Vue中的this.$nextTick()方法(利用QRCode.js在dialog弹窗中生成二维码)
461 0
浅谈Vue中的this.$nextTick()方法(利用QRCode.js在dialog弹窗中生成二维码)
|
测试技术 Android开发
|
数据可视化
autojs全局事件监听
autojs全局事件监听
531 0
|
Java Android开发 C语言
autojs调用C
autojs调用C
280 0