Android:得到WebView当前页的html源码

 

WebView没有提供直接的API,需要用JavaScript变通处理一下。
本文试图总结一个最简单、优雅的代码。

有两步:

1、先创建一个JavaScript接口类:

复制代码
class MyJavaScriptInterface {
    @JavascriptInterface
    @SuppressWarnings("unused")
    public void processHTML(String html) {
        // 在这里处理html源码
    }
}
复制代码

注意粗体的函数名processHTML,在第2步里还要用到。
关于@JavascriptInterface的详细说明,见:http://blog.csdn.net/z82367825/article/details/52187921

2、注册刚才的JavaScript接口:

复制代码
        WebSettings settings = webView.getSettings();
        // 此方法需要启用JavaScript
        settings.setJavaScriptEnabled(true);

        // 把刚才的接口类注册到名为HTMLOUT的JavaScript接口
        webView.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");

        // 必须在loadUrl之前设置WebViewClient
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageFinished(WebView view, String url) {
                // 这里可以过滤一下url
                webView.loadUrl("javascript:HTMLOUT.processHTML(document.documentElement.outerHTML);");
            }
        });

        // 开始加载网址
        webView.loadUrl(url);
复制代码


出处:

posted @ 2018-07-25 15:59  Alter  阅读(417)  评论(0编辑  收藏  举报