【问题标题】:WebView.getUrl() returns null because page not done loadingWebView.getUrl() 返回 null 因为页面未完成加载
【发布时间】:2012-12-08 00:12:42
【问题描述】:

我想获取 webview 的 url。但是,该方法在页面加载完成之前调用,因此它总是返回 null。有什么办法吗?谢谢。

WebView webView = new WebView(this);
setContentView(webView);

webView.loadUrl(myURL);

//page is not done loading yet
String url = webView.getUrl(); //returns null

【问题讨论】:

标签: android webview geturl


【解决方案1】:

尝试添加WebViewClient 并覆盖onPageFinished(...) 方法。我从来没有这样做过,但这样的事情可能会奏效......

String theUrl;
WebView webView = new WebView(this);
setContentView(webView);

webview.setWebViewClient(new WebViewClient() {

    public void onPageFinished(WebView view, String url) {
        theUrl = url;
    }

});

webView.loadUrl(myURL);

【讨论】:

  • 有没有办法不断检查网址? (例如:当 url 改变时前进到另一个活动)。
  • 根据文档,每次在WebView 对象中完成任何网页的主框架加载时都会调用onPageFinished(...)。该代码只是一个示例,正如我所说,不是我以前使用过的东西。尝试在onPageFinished(...) 方法中调用startActivity(...),而不是我的theUrl = url 示例。
  • 你在 startActivity 里面放了什么?
  • 我不知道,您想从哪种Activity 开始?您的操作方式与启动任何Activity 相同。创建一个Intent 并将其传递给startActivity(...)
【解决方案2】:

创建一个覆盖onPageStarted(webView, url, favicon)WebViewClient 子类并将其设置为您的WebView(使用setWebViewClient())。
您将获得正在加载或显示的页面的网址。

【讨论】:

  • 所以我会让一个类 CustomWebViewClient 扩展 WebViewClient,然后覆盖 onPageStarted?我将在该方法中放入什么,以及如何使用 setWebViewClient()?谢谢。
  • 我建议您执行与 Squonk 帖子相同的操作,但您覆盖 onPageStarted 而不是 onPageFinished。这样做,您的属性 theUrl 将始终包含 WebView 的当前 url
猜你喜欢
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-10
  • 1970-01-01
  • 2014-03-25
  • 2014-01-17
相关资源
最近更新 更多