xposed模块检测自身是否启用(kotlin)

May 29, 2021 · 纯属折腾 · 开发笔记 · 134次阅读

作为一个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 = "模块已启用!"
                    }
                })
            }
        }
    }
}

效果图

  • 未启用时:
    iShot2021-05-29 00.20.31.png
  • 已启用时:
    iShot2021-05-29 00.20.14.png

除声明外inSoraSky博客(http://www.sorasky.in/)所有内容均为本人所原创,转载时请注明来源!

喝杯水

KotlinAndroidxposed

最后编辑于1个月前

添加新评论