如何在loadurl之后获取webview内容android

时间:2012-06-06 07:00:09

标签: webview android-webview

这是我的代码。

我只是想在加载URL后从Webview获取页面内容。

在Android上,我有一个显示页面的WebView。

如何在不再请求页面的情况下获取页面源?

似乎WebView在Android 3.0中应该有某种WebResourceResponse()方法,但不知道如何使用它。

 public class WebActivity extends Activity {
WebView mWebView;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mWebView = (WebView) findViewById(R.id.webView);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadUrl("https://xyz.com");
    mWebView.setWebViewClient(new HelloWebViewClient());



 }



       private class HelloWebViewClient extends WebViewClient  {

      public WebResourceResponse shouldInterceptRequest (WebView view, String url)
      {
        return null;


      }

      @Override
        public void onPageFinished(WebView view, String url)
        {
           /* This call inject JavaScript into the page which just finished loading. */
           mWebView.loadUrl("javascript:window.HTMLOUT.processHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");

        }
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
}


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
        mWebView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}}

1 个答案:

答案 0 :(得分:0)

我知道这是旧的,但对于未来的访问者,以下内容应该有效。

首先,您需要定义一个接口,例如:

final class LoadingInterface {
    @JavascriptInterface 
    public void outputHTML(final String html){
        //do what ever you want with html
    }
}

然后在你的WebView上调用
webView.addJavascriptInterface(new LoadingInterface(), "INTERFACE");

onPageFinished put:

String js = "javascript:"
        +"var html = document.getElementsByTagName('html')[0].innerHTML;"
        +"window.INTERFACE.outputSchedule(html);";
        webView.loadUrl(js);

如果您只需要部分网页,则可以使用getElementsByTagName('html')[0]

等替换getElementById('partOfPage')