1、Android中webView调用网页上的Js代码
需要将webView控件的js属性设置为true;
mWebView.getSettings().setJavaScriptEnabled(true);
// 调用网页上的js函数方法test(), 不传递参数
mWebView.loadUrl("javascript:test()");
// 调用网页js函数方法test(String str),需要传递参数
mWebView.loadUrl("javascript:test('"+sss+"')";
//调用本地assets目录下的html文件,也可以直接调用网上的html文件。
mWebView.loadUrl("file:///android_asset/index.html");
2、网页调用android端的java方法:
//在Android的Java代码中需要设置webView空间的属性addJavascriptInterface,
//第一参代表用调用的类对象, 第二参数代表对象名可以自定义
mWebView.addJavascriptInterface( new Object(),"objectName");
// 其中Obejct类如下,定义了一个类
class Object(){
//类方法一
public void AndroidMethod1(){ ... }
//类方法二
public void AndroidMedthod2( int i){ ...}
...
}
例如:在网页中调用Android的方法1,只需要像调用Js方法一样,进行调用就可以了
//调用方法一,不需要传递参数
<div id='b'><a οnclick="javascript:window.objectName.AndroidMethod1()">b.c</a></div>
在页面加载立即带用<body οnlοad="javascript:window.objectName.AndroidMethod1()">// 调用方法二,需要传递参数
<div id='b'><a οnclick="javascript:window.objectName.AndroidMethod2( 8 )">b.c</a></div>
3、WebViewClient和 WebChromeClient的简单介绍
(1) WebViewClient主要用于处理WebView的各种通知、请求事件
(2) WebChromeClient主要用于处理JavaScript的弹出对话框、网站图标、网站titile、加载进度等
4、DownloadListener的使用,用于支持WebView文件下载
eg:mWebView.setDownloadListener(new MyWebViewDownLoadListener());
private class MyWebViewDownLoadListener implements DownloadListener{
@Override
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype, long contentLength) {
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
public void onDownloadStart(String url, String userAgent,
String contentDisposition, String mimetype, long contentLength) {
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
}
}