【发布时间】:2014-05-23 11:01:40
【问题描述】:
使用webview.loadUrl(url) 方法我打开一个网址。如果我单击视图上的任何Button,它会指向另一个页面。现在我想获取定向页面的 url。我怎样才能得到它?
我还想要在 webview 上显示的内容。如何获取WebView的内容?
【问题讨论】:
使用webview.loadUrl(url) 方法我打开一个网址。如果我单击视图上的任何Button,它会指向另一个页面。现在我想获取定向页面的 url。我怎样才能得到它?
我还想要在 webview 上显示的内容。如何获取WebView的内容?
【问题讨论】:
String webUrl = webView.getUrl();
【讨论】:
请看我的回答 能不能帮到你……!!!!
WebView webview = new WebView(context);
webview.setWebViewClient(new WebViewClient()
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.d("WebView", "your current url when webpage loading.." + url);
}
@Override
public void onPageFinished(WebView view, String url) {
Log.d("WebView", "your current url when webpage loading.. finish" + url);
super.onPageFinished(view, url);
}
@Override
public void onLoadResource(WebView view, String url) {
// TODO Auto-generated method stub
super.onLoadResource(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
System.out.println("when you click on any interlink on webview that time you got url :-" + url);
return super.shouldOverrideUrlLoading(view, url);
}
});
【讨论】:
我假设你已经设置了WebViewClient。如果没有,那么你可以像下面这样,
webView.setWebViewClient(new MyWebViewClient());
String currentUrl;
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
currentUrl=url;
return true;
}
}
在这里,当您单击WebView 上的任何链接时,它将调用shouldOverrideUrlLoading(),您可以在currentUrl 中获取当前网址。
【讨论】:
currentUrl 在返回时不会更新。另一种方法是覆盖onPageStarted。
这是处理 API > 20 的最简单的方法:显然还有其他方法可以使用 HTMLCleaner 等解析器进行更多控制。但是,这对于获取 URL 来说既好又简单。每次 Webview 中的 URL 发生变化,请求对象中的 URL 也会发生变化。
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
String temp = request.getUrl().toString();
if(temp.isEmpty()){
Log.i(ActivityName, "No url returned!");
}else{
Log.i(ActivityName, temp);
}
return false;
}
您也可以通过覆盖 webviewclient 的 onpagefinished 方法来拨打电话。我想注意这一点,因为这是在页面完成加载时调用的。
【讨论】: