使用
我还想要显示在WebView中的内容。如何获取
webview.loadUrl(url)
方法打开一个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()
方法,您可以在其中获取当前url:currentUrl
。
currentUrl
不会在返回时更新。替代方法是覆盖onPageStarted
。 - AnT处理API > 20的最简单方法是:每次WebView中的URL更改时,请求对象中的URL也会更改。当然,还有其他使用像HTMLCleaner这样的解析器来控制更多的方法。但是,这种方法获取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方法来进行调用。我想要指出这一点,因为在页面加载完成时会被调用。
String js = "(function() { " +
"return document.getElementById('my_element').innerHTML;" +
"})()";
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.evaluateJavascript(js, new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
// 'value' contains the result of the JavaScript code
Log.d("WebView", "Data: " + value);
}
});
}
});
var js = "(function() { " +
"return document.getElementById('my_element').innerHTML;" +
"})()"
webView.webViewClient = object : WebViewClient() {
override fun onPageFinished(view: WebView, url: String) {
super.onPageFinished(view, url)
view.evaluateJavascript(jso) { value ->
// 'value' contains the result of the JavaScript code
Log.d("WebView", "Data: $value")
}
}
}