文章目录
核心代码
bash
package com.xiaokj.xposed;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
public class MyHookModule implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
// 1. 过滤包名(请确保包名与目标 App 一致)
if (!lpparam.packageName.equals("com.example.mlseriesdemonstrator")) {
return;
}
// 2. 开始 Hook MainActivity 中的 onAlgoSelected 方法
XposedHelpers.findAndHookMethod(
"com.example.mlseriesdemonstrator.MainActivity", // 完整类名
lpparam.classLoader, // 使用当前的类加载器
"onAlgoSelected", // 方法名
"com.example.mlseriesdemonstrator.Algo", // 参数类型的完整类名(注意这里是自定义类)
new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
// 方法执行前的逻辑
// param.args[0] 就是传入的 Algo 对象
Object algoObject = param.args[0];
// 获取 Algo 对象中的 algoText 属性
String algoText = (String) XposedHelpers.getObjectField(algoObject, "algoText");
XposedBridge.log("Hook 到了点击事件!点击的项目是: " + algoText);
// --- 关键:如何拦截 ---
// 如果你想让点击失效(不执行原有的逻辑),直接设置 Result 为 null
param.setResult(null);
XposedBridge.log("已成功拦截点击!");
}
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
// 方法执行后的逻辑
XposedBridge.log("onAlgoSelected 执行完毕");
}
}
);
}
}
Hook成功
bash
2026-05-11 19:03:29.814 5320-5320 LSPosed-Bridge pid-5320 I Loading class ru.bluecat.android.xposed.mods.appsettings.hooks.Core
2026-05-11 19:03:29.843 5320-5320 LSPosed-Bridge pid-5320 I Loading class com.xiaokj.xposed.MyHookModule
2026-05-11 19:03:43.182 5320-5320 LSPosed-Bridge com.example.mlseriesdemonstrator I Hook 到了点击事件!点击的项目是: Object detection
2026-05-11 19:03:48.936 5320-5320 LSPosed-Bridge com.example.mlseriesdemonstrator I Hook 到了点击事件!点击的项目是: Face detection
强行拦截
bash
2026-05-11 19:11:21.137 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I Hook 到了点击事件!点击的项目是: Face detection
2026-05-11 19:11:21.138 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I 已成功拦截点击!
2026-05-11 19:11:21.138 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I onAlgoSelected 执行完毕
2026-05-11 19:11:21.329 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I Hook 到了点击事件!点击的项目是: Face detection
2026-05-11 19:11:21.329 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I 已成功拦截点击!
2026-05-11 19:11:21.329 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I onAlgoSelected 执行完毕
2026-05-11 19:11:21.506 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I Hook 到了点击事件!点击的项目是: Face detection
2026-05-11 19:11:21.506 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I 已成功拦截点击!
2026-05-11 19:11:21.506 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I onAlgoSelected 执行完毕
2026-05-11 19:11:21.835 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I Hook 到了点击事件!点击的项目是: Bird Sound Identifier
2026-05-11 19:11:21.835 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I 已成功拦截点击!
2026-05-11 19:11:21.835 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I onAlgoSelected 执行完毕
2026-05-11 19:11:22.238 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I Hook 到了点击事件!点击的项目是: Driver Drowsiness Detector
2026-05-11 19:11:22.238 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I 已成功拦截点击!
2026-05-11 19:11:22.238 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I onAlgoSelected 执行完毕
2026-05-11 19:11:22.667 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I Hook 到了点击事件!点击的项目是: Visitor Analysis
2026-05-11 19:11:22.667 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I 已成功拦截点击!
2026-05-11 19:11:22.667 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I onAlgoSelected 执行完毕
2026-05-11 19:11:22.939 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I Hook 到了点击事件!点击的项目是: Visitor Analysis
2026-05-11 19:11:22.939 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I 已成功拦截点击!
2026-05-11 19:11:22.939 5843-5843 LSPosed-Bridge com.example.mlseriesdemonstrator I onAlgoSelected 执行完毕
运行报错
bash
2026-05-11 18:57:02.462 5764-5764 LSPosed-Bridge pid-5764 I Loading class ru.bluecat.android.xposed.mods.appsettings.hooks.Core
2026-05-11 18:57:02.487 5764-5764 LSPosed-Bridge pid-5764 I Loading legacy module com.xiaokj.xposed from /data/app/~~iILDkfyEgBGo5ynn5p-mmw==/com.xiaokj.xposed-BuM9MNtMJdNCRUWvLlHk5g==/base.apk
2026-05-11 18:57:02.491 5764-5764 LSPosed-Bridge pid-5764 E Cannot load module: com.xiaokj.xposed
2026-05-11 18:57:02.491 5764-5764 LSPosed-Bridge pid-5764 E The Xposed API classes are compiled into the module's APK.
2026-05-11 18:57:02.491 5764-5764 LSPosed-Bridge pid-5764 E For details, see: https://api.xposed.info/using.html
jar包拉取
bash
https://github.com/MALTF/XposedBridgeAPI/releases
重启

安装成功 待激活

PS:直接重启Xposed插件 无需整个magisk重启
快速push到远程
当git remote -v 为空时 即:
删除名为 origin 的远程仓库
git remote remove origin
点击 push Branch vscode 自动生成远程仓库
