在Android webview中加载两次loadUrl

时间:2016-04-20 09:59:22

标签: android webview

我正在尝试在webview中加载2个URL,一个接一个地抓取他们的html。我的代码如下:

final WebView webview = (WebView) findViewById(R.id.showInfo_webView);
webview.getSettings().setJavaScriptEnabled(true);
webview.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");

webview.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return false;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        webview.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
        }
    });

    webview.loadUrl(response);
    webview.loadUrl(response2); <--

class MyJavaScriptInterface {
    @JavascriptInterface
    public void showHTML(String html) {
    ...
    }
}

showHTML我有一个计数器,所以我可以区分第一个和第二个呼叫。但是,showHTML只被调用一次。这是为什么?我是否需要完全重新创建webview?

我尝试在第二个webview.reload()之后调用loadUrl但是看起来第二页加载了两次?

编辑:我需要处理第一个URL html以获取第二个URL。

2 个答案:

答案 0 :(得分:0)

     String[] urls =  {"http://www.demo.com", "http://www.fb.com"};

            int delay = 50 * 1000;
            Handler handler = new Handler();
            for(int i = 0; i < urls.length; i++) {

                webview.setWebViewClient(new WebViewClient());
                webview.getSettings().setJavaScriptEnabled(true);
                MyRunnable runnable = new MyRunnable(urls[i], webview);
                handler.postDelayed(runnable, delay);
                delay = delay + 50 * 1000;
            }

private class MyRunnable implements Runnable {

        private String url;
        private WebView wv;

        public MyRunnable(String url, WebView wv) {
            this.url = url;
            this.wv = wv;
        }

        public void run() {
           webview.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");

webview.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return false;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        webview.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
        }
    });
        }
    }

答案 1 :(得分:0)

我通过创建一个基本上只有webview的活动来解决这个问题。我arrayList<Stop> 连续两次,这就是它。它当然不优雅但它有效。