一、在使用WebView的过程中,遇到这样的需求,需要获取加载WebVeiw中的某些数据,然后自行处理。
1、先写好webview的加载过程:
webView = new WebView(this); //创建webview
setContentView(webView); //设置给contentview
webView.loadUrl(“ http://www.baidu.com “); //尝试的加载网页
webView.getSettings().setJavaScriptEnabled(true); //让网页支持javaScript
//在网页的javaScript中添加方法接口;
webView.addJavascriptInterface(new Handler(), “handler”);
//添加“客户端”
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
Toast.makeText(WebViewActivity.this, “网页加载完成”, 0).show();
//运行上面在JavaScript中添加的hangder方法接口;
view.loadUrl(“javascript:window.handler.show(document.body.innerHTML);”);
super.onPageFinished(view, url);
}
});
二、在代码中实现的JavaScript中添加的接口:
//添加内部类
class Handler {
//实现一添加进JavaScript中回调接口的方法
public void show(String data) {
Toast.makeText(WebViewActivity.this, “执行了handler.show方法”, 0).show();
new AlertDialog.Builder(WebViewActivity.this).setMessage(data).create().show();
}
}
三、一些关于webview中查看数据的说明
1. webView.getSettings().setJavaScriptEnabled(true);
设置webView支持js.
2.webView.addJavascriptInterface(new Handler(), “handler”);
使用了这段代码后就相当于在网页的js中增加了一个叫handler的类,而这个handler就是后面写的内部类。可以 直接在网页中这样使用:onClick=”javascript:handler.show(‘hello’)”
也就是说直接通过网页中的js来执行java代码。
3.webView.setWebViewClient(new WebViewClient()
为webView设置一个处理器(暂且这样叫吧),在webView加载完成后执行下面的方法
view.loadUrl(“javascript:window.handler.show(document.body.innerHTML);”);
document.body.innerHTML是一段js,会获取到网页中body标签里的内容,然后把这个值传递给Handler类的show方法。