使用 Xposed 强制 androidwebView 开启 debug 模式

作者:feix760

《远程调试 Android 设备使用入门》 文章中我们可以知道在android 4.4+可以通过在apk中使用下面的代码开启webview的chrome远程调试。

WebView.setWebContentsDebuggingEnabled(true);

但我们开发中接触的apk往往是第三方的,没谁会为我们开启webContentsDebuggingEnabled,而Xposed能强制做到这一点。

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

馋图

拿来主义

1、需要android 4.4+ Root手机

2、安装 Xposed框架

3、已开启QQ WebView的Apk: webviewdebughook.Apk

原文链接:http://ivweb.io/topic/551b9f7057c4fc5a3a6da6bd

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一个会写诗的程序员的博客

Xposed: 勾住(Hook) Android应用程序对象的方法,实现AOPXposed参考文档:

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

755
来自专栏学海无涯

iOS开发之NSURLSessionUploadTask上传数据

苹果在 iOS9 之后已经废弃了NSURLConnection,NSURLSession成为其替代者,其基本知识网上很多,主要可以从NSURLSessionDa...

32310
来自专栏HT

通过HTML5的Drag and Drop生成拓扑图片Base64信息

HTML5 原生的 Drag and Drop是很不错的功能,网上使用例子较多如 http://html5demos.com/drag ,但这些例子大部分没实际...

1878
来自专栏阿炬.NET

【要什么自行车】ASP.NET MVC4笔记01:Asp.net MVC 分页,采用 MvcPager 和CYQ.Data来分页

33410
来自专栏一个会写诗的程序员的博客

第13章 Kotlin 集成 SpringBoot 服务端开发(1)第13章 Kotlin 集成 SpringBoot 服务端开发

本章介绍Kotlin服务端开发的相关内容。首先,我们简单介绍一下Spring Boot服务端开发框架,快速给出一个 Restful Hello World的示例...

1213
来自专栏菩提树下的杨过

ExtJs学习笔记(11)_Absolute布局和Accordion布局

ExtJs其实在某种程度上可以代替div+css来进行页面布局(不过经测试,在最新的Firefox3下,部分功能好象有点问题),今天我们来学习二种最基本的布局 ...

1676
来自专栏zcqshine's blog

ajaxFileUpload+ThinkPHP+jqGrid 图片上传与显示

2964
来自专栏菩提树下的杨过

flash 显示 qq客服状态

前几天看到有园友写了一篇“ flash查看对方qq是否在线 ”,正好今天有一个朋友搞flash全站,想使用这个功能,但是有些小要求,点击图标后,要求弹出QQ对话...

16610
来自专栏Android开发指南

1.ActionBar

2545
来自专栏hightopo

基于HTML5的Drag and Drop生成图片Base64信息

864

扫码关注云+社区