Android webView 实现与JS

来源:互联网 发布:hadoop windows 编译 编辑:程序博客网 时间:2024/06/10 03:48


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 onclick="javascript:window.objectName.AndroidMethod1()">b.c</a></div>
在页面加载立即带用
<body onload="javascript:window.objectName.AndroidMethod1()">
// 调用方法二,需要传递参数
<div id='b'><a onclick="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);
}

}

0 0
原创粉丝点击