开发者

How to retrieve HTML content from WebView (as a string) [duplicate]

This question already has answers here: How do I get the web page contents from a WebView? (7 answers) Closed 3 months ago.

How do I retrieve all HTML content currently displayed in a WebView?

I found WebView.loadData() but I couldn't find the opposite equivalent (e.g. WebView.getData())

Please note that I am interested in retrievi开发者_运维技巧ng that data for web pages that I have no control over (i.e. I cannot inject a Javascript function into those pages, so that that it would call a Javascript interface in WebView).


webView.evaluateJavascript("(function(){return window.document.body.outerHTML})();", 
      new ValueCallback<String>() {
          @Override
          public void onReceiveValue(String html) {

          }
      });


Add this to your code:

private String getUrlSource(String site) throws IOException {
    //GNU Public, from ZunoZap Web Browser
    URL url = new URL(site);
    URLConnection urlc = url.openConnection();
    BufferedReader in = new BufferedReader(new InputStreamReader(
    urlc.getInputStream(), "UTF-8"));
    String inputLine;
    StringBuilder a = new StringBuilder();
    while ((inputLine = in.readLine()) != null)
    a.append(inputLine);
    in.close();

    return a.toString();
}

then lets say you what to get Google's source you would do:

getURLSource("http://google.com");


You can intercept the HTTP requests made by the WebView, and then modify the HTML to include whatever JavaScript functions you need to communicate with the HTML page. You intercept HTTP requests via the WebViewClient shouldInterceptRequest() method.

Using this mechanism you can get access to the loaded page by loading it yourself, modify it before passing it on to the WebView, and even cache it locally if you want.


you can pass data via JavaScriptInterface from webview.. i've done this. save the data to an static variable then process under android applcation

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜