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文档, 最后才是群里问问
--- 牙叔教程


声明


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

相关文章
|
小程序 JavaScript
小程序绑定事件跳转的三种方法
小程序绑定事件跳转的三种方法
198 0
Xcode12在storyboard添加组件和事件,添加新页面及跳转
Xcode12界面有所改变,导致一些按钮位置变动。比如为storyboard添加组件的按钮移至如下位置:
2102 0
|
Android开发
autojs修改悬浮窗按钮点击事件
牙叔教程 简单易懂
1310 0
|
7月前
4.Electron之自定义菜单(绑定快捷键、点击事件)
4.Electron之自定义菜单(绑定快捷键、点击事件)
656 1
|
前端开发
前端hook项目pc总结笔记-hook项目文件自定义扎号onchange事件
前端hook项目pc总结笔记-hook项目文件自定义扎号onchange事件
91 0
|
前端开发
autojs自定义控件Switch
牙叔教程 简单易懂
499 0
|
Java Android开发 iOS开发
Flutter 跳转页面并传值
Flutter 跳转页面并传值
380 0
Flutter 跳转页面并传值
|
测试技术 Android开发
|
数据可视化
autojs全局事件监听
autojs全局事件监听
659 0