当前位置: 移动技术网 > IT编程>移动开发>Android > Android webview与js交换JSON对象数据示例

Android webview与js交换JSON对象数据示例

2019年07月24日  | 移动技术网IT编程  | 我要评论

优衣库下载,故宫纪录片下载,毕业生答辩ppt模板

最近几个项目的测试结果,android无法主动通过调用
webview.loadurl("javascript:"+callbackfunction+"('"+data+"')"); 这种方式将jsonobject类型的data传给js,因为js那边得到就是一个string的对象。

与此同时,js主动调用android的对象方式,android也无法返回给js一个jsonobject,需要js做一下转换,例如:

android 代码:
复制代码 代码如下:

webview mwebview = (webview) this.findviewbyid(r.id.webview);
websettings settings = mwebview.getsettings();
settings.setjavascriptenabled(true);
settings.setpluginsenabled(true);
settings.setallowfileaccess(true);
settings.setcachemode(websettings.load_no_cache);
mwebview.setscrollbarstyle(view.scrollbars_inside_overlay);//不加上,会显示白边
string url="file:///android_asset/t.html"; //js代码卸载t.html里
navigationinstance navigation =new navigationinstance(this);
mwebview.addjavascriptinterface(navigation, "navigation");

navigationinstance里的代码:
复制代码 代码如下:

@override
public jsonobject getmaneuverinfo() {
try{
jsonobject test=new jsonobject();
test.put("maomao", "value");
return test;
//return new jsonobject(bean.maneuverinfo);
}catch(exception e){
log.e(tag, "",e);
}
return null;
}

t.html里的代码:
复制代码 代码如下:

function testapi(el){
console.log("---------testapi---------");
eval("var obj = "+navigation.getmaneuverinfo());
alert('typeof:'+typeof(obj));
alert('maomao:'+obj.maomao);
alert('obj:'+obj);
}

如果直接写成 navigation.getmaneuverinfo.maomao是会提示undefined,因为js那边只得到了一个string对象而已,它不知道maomao是个key。

通过eval将其转化成表达式就可以调用obj.maomao得到value。
在此ps一下ios,貌似人家支持webview很好,js可以直接获取到json对象.
默认t.html加载会自动执行testapi函数,结果如下:

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网