Xposed: 勾住(Hook) Android应用程序对象的方法,实现AOP

Xposed

Xposed能够勾住(Hook) Android应用程序对象的方法,实现AOP,一个简单的例子:


public class WebViewHook implements IXposedHookLoadPackage {
    // handleLoadPackage 会在android加载每一个apk后执行
    public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
           // 可以从lpparam中获取当前apk的名字
        if (! lpparam.packageName.equals("com.tencent.mobileqq")) {
            return;
        }
        XposedBridge.log("WebViewHook handleLoadPackage: " + lpparam.packageName);
        // 勾住 WebView 所有的构造器
        XposedBridge.hookAllConstructors(WebView.class, new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                // 打开webContentsDebuggingEnabled
                XposedHelpers.callStaticMethod(WebView.class, "setWebContentsDebuggingEnabled", true);
                XposedBridge.log("WebViewHook new WebView(): " + packageName);
            }
        });
    }
}

上面的代码可以为QQ打开WebView的webContentsDebuggingEnabled

参考文档:

Xposed工作原理可以

https://github.com/rovo89/XposedBridge/wiki/Development-tutorial
没有详细的API页面, 因为API也就几个,可以查看源代码: https://github.com/rovo89/XposedBridge/tree/master/src/de/robv/android/xposed

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,267评论 25 709
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    wgl0419阅读 11,519评论 1 9
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,758评论 2 45
  • 生活对于每个人而言,都有独特的意义。属于自己的每一天,或匆忙或闲适,或充满新奇,亦或单调无趣。生活自当不只...
    逯岩阅读 3,935评论 0 0
  • CMD是国内玉伯大神在开发SeaJS的时候提出来的,属于CommonJS的一种规范,此外还有AMD,其对于的框架是...
    ac91d930a038阅读 3,437评论 0 0

友情链接更多精彩内容