我正在尝试在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。
答案 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>
连续两次,这就是它。它当然不优雅但它有效。