当页面完成加载时,您可以使用 WebView 的 Javascript 接口返回整个 HTML 源代码。为此,您需要将自己的 WebViewClient 分配给 WebView。
为此,请在您的 Activity 类中使用类似于以下内容的内容——确保您的 Activity 实现了 Observer:
public void onCreate(Bundle savedInstanceState) {
    // ...
    webView.setWebViewClient(new MyWebViewClient());
    HtmlJSInterface htmlJSInterface = new HtmlJSInterface();
    webView.addJavascriptInterface(htmlJSInterface, "HTMLOUT");
    htmlJSInterface.addObserver(this);
    // ...
}
// Called when our JavaScript Interface Observables are updated.
@Override
public void update(Observable observable, Object observation) {
    // Got full page source.
    if (observable instanceof HtmlJSInterface) {
        html = (String) observation;
        onHtmlChanged();
    }
}
private void onHtmlChanged() {
    // Do stuff here...
}
private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
    @Override
    public void onPageFinished(WebView view, String url) {
        // When each page is finished we're going to inject our custom
        // JavaScript which allows us to
        // communicate to the JS Interfaces. Responsible for sending full
        // HTML over to the
        // HtmlJSInterface...
        isStarted = false;
        isLoaded = true;
        timeoutTimer.cancel();
        view.loadUrl("javascript:(function() { "
                + "window.HTMLOUT.setHtml('<html>'+"
                + "document.getElementsByTagName('html')[0].innerHTML+'</html>');})();");
        }
    }
}
然后,您将要创建 HtmlJSInterface 类,如下所示:
   public class HtmlJSInterface extends Observable {
  private String html;
  /**
   * @return The most recent HTML received by the interface
   */
  public String getHtml() {
    return this.html;
  }
  /**
   * Sets most recent HTML and notifies observers.
   * 
   * @param html
   *          The full HTML of a page
   */
  public void setHtml(String html) {
    this.html = html;
    setChanged();
    notifyObservers(html);
  }
}