shouldOverrideUrlLoading的URL和onPageFinished的URL是不同的

时间:2014-12-01 13:53:00

标签: android webview

我正在制作自动搜索程序。

请先查看代码。

synchronizedLoadUrl:调用loadurl并等到onpagefinished调用

private String search(AutoClickItem item) throws InterruptedException {
    this.synchronizedLoadUrl("http://m.naver.com");
    this.loadUrl("javascript:" + querySelector("#query") + ".click();");
    this.loadUrl("javascript:void(" + querySelector("#query") + ".value = '" + item.query + "');");
    this.loadUrl("javascript:" + querySelector("button[type=submit]") + ".click();"); // this calls submit() and move to another location.

    return pageFinishedQueue.take();
}

public class AutoClickWebViewClient extends WebViewClient {
BlockingQueue<String> pageFinishedQueue;

public AutoClickWebViewClient(BlockingQueue<String> pageFinishedQueue) {
    this.pageFinishedQueue = pageFinishedQueue;
}

@Override
public void onPageFinished(WebView view, String url) {
    pageFinishedQueue.add(url);
}

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

运行此代码时的过程:

首先,onPageFinished用“m.naver.com”解雇

第二,用“m.search.naver.com/search.naver?query=%EC%95%84%EC%9A%B0&where=m”烧掉了shouldOverrideUrlLoading

因为我致电"this.loadUrl("javascript:" + querySelector("button[type=submit]") + ".click();");

第三,onPageFinished用“http://m.naver.com”&lt;问题

我无法理解为什么第三个onPageFinished用“http://m.naver.com

解雇了

webview显示“m.search.naver.com/search.naver?query=%EC%95%84%EC%9A%B0&where=m”但onPageFinished用“m.naver.com”解雇!!

我想知道它为什么会这样,以及如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

来自shouldOverrideUrlLoading()的文档:

  

返回:如果主机应用程序想要离开当前的WebView并处理url本身,则为True,否则返回false。

听起来你没有离开WebView,所以你应该返回false。