xposed模块检测自身是否启用(kotlin)
作为一个xposed模块,检测自身是否启用显然是最基础的功能了。本教程使用kotlin,Java应该差不多。
原理是Hook自身,修改状态语以提示用户。
- 1.在准备显示启用状态的Activity中定义函数
isEnabled:fun isEnabled(): String{ return "模块未启用!" } - 2.创建窗口时将状态文本控件的值设为
isEnabled函数的返回值:// 假设已经定义名为status的TextView控件并创建ViewBinding binding.status.text = isEnabled() - 3.在hook函数中篡改isEnabled函数的返回值
public class Hook: IXposedHookLoadPackage{ override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?){ when(lpparam?.packageName){ "com.example.xposed.module" -> { // 将这里的包名更改为自己的xposed模块 val clazz = lpparam.classLoader?.loadClass("com.example.xposed.module.MainActivity") // 将这里的Activity名称更改为显示状态的Activity名称 XposedHelpers.findAndHookMethod(clazz, "isEnabled", object : XC_MethodHook() { override fun beforeHookedMethod(param: MethodHookParam?) { super.beforeHookedMethod(param) } override fun afterHookedMethod(param: MethodHookParam?) { param?.result = "模块已启用!" } }) } } } }
效果图
未启用时:

已启用时:
