一,安卓端native和js交互
继承自Activity的界面文件通过重写onCreate()方法设定展示某个含WebView控件的xml布局文件。
①js调用本地java方法:
webview.addJavaScriptInterface(this,”wst”);
首先对webview绑定javaScriptInterface,将Object传递给webview并指定别名,这样js脚本就可以通过我们指定的这个别名来调用本地的java方法。上述代码中this是实例化对象,wst是这个对象在js中的别名。
以此为例,我们在js的方法中调用java方法格式为window.wst.java方法名();。如果有参数,直接在括号里添加即可。
②java代码调用js方法:
注:因为google公司android部门负责人的变动,导致从android4.4版本开始native和js交互的方法和之前有所不同。
首先是android4.4版本之前:
Java代码要调用js中一个叫test()的无参数方法,格式为:
webview.loadurl(“javascript:test()”);
如果是一个带参数的方法,格式为:
String msg = “Hello World!”;
Webview.loadurl(“javascript:test(‘”+msg+”’)”);
Android4.4以及之后版本:
Java代码调用js中无参数方法test(),格式为:
webview.evaluateJavascript(“test()”,new ValueCallBack<String>(){
@Override
public void onReceiveValue(String arg0) {
// TODO Auto-generated method stub
}
});
如果是带参数的方法,格式为:
String msg = “Hello World!”;
webview.evaluateJavascript(“test(‘”+msg+”’)”,new ValueCallBack<String>(){
@Override
public void onReceiveValue(String arg0) {
// TODO Auto-generated method stub
}
});
所以在开发的过程中需要通过对设备SDK Verison进行判断,小于19的用android4.4之前的方法,大于等于19用android4.4之后的方法。
特别注明:android4.2之后版本因为安全性的问题需要在用到native和js交互的java方法上加上@JavascriptInterface,引入包:android.webkit.JavascriptInterface。加上这个不会对之前版本的有影响,所以在此建议直接加上就可以了。