移动端native和js的交互模式

一,安卓端nativejs交互


继承自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版本开始nativejs交互的方法和之前有所不同。

首先是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之前的方法,大于等于19android4.4之后的方法。

 

特别注明:android4.2之后版本因为安全性的问题需要在用到nativejs交互的java方法上加上@JavascriptInterface,引入包:android.webkit.JavascriptInterface。加上这个不会对之前版本的有影响,所以在此建议直接加上就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值