使用WebView加载网页时,获取网页数据

来源:互联网 发布:aes加密java代码 编辑:程序博客网 时间:2024/06/11 08:47

一、在使用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方法。

原创粉丝点击