android js交互可以传递json对象吗?

从最近几个项目的测试结果来看,Android是无法主动调用的。

webview . loadurl(" JavaScript:"+callback function+"(' "+data+" ')")";这样jsonobject数据就传递给了JSON,因为JSON得到的是一个string对象。

同时,js主动调用android的对象模式,android无法向JSON返回一个jsON对象,所以JS需要做一些转换,比如:

Android代码:

【java】查看plaincopyprint?

WebView mWebView =(WebView)this . findviewbyid(r . id . WebView);

web settings settings = mwebview . get settings();

settings . setjavascript enabled(true);

settings . setpluginsenabled(true);

settings . setallowfileaccess(true);

settings . setcache mode(web settings。LOAD _ NO _ CACHE);

mWebView.setScrollBarStyle(视图。滚动条_内部_覆盖);//不加的话会显示白边。

string URL = " file:///Android _ asset/t . html ";//js代码在t.html卸载。

navigation instance navigation = new navigation instance(this);

mwebview . addjavascriptinterface(导航,“导航”);

NavigationInstance中的代码:

【java】查看plaincopyprint?

@覆盖

公共JSONObject机动信息(){

尝试{

JSON object test = new JSON object();

test.put("毛毛","值");

返回测试;

//返回新的JSONObject(bean。机动信息);

}catch(异常e){

Log.e(标签,“”,e);

}

返回null

}

t.html中的代码:

[javascript]查看plaincopyprint?

函数testAPI(el){

console . log("-testAPI-");

eval("var obj = "+Navigation。get机动信息());

alert(' type of:'+type of(obj));

alert('毛毛:'+obj .毛毛);

alert(' obj:'+obj);

}

如果直接写成导航。getmaneverinfo .毛毛,会提示未定义,因为js得到的只是一个string对象,它不知道毛毛是一个key。

通过eval转换成表达式,就可以调用obj.maomao得到值。

这里看ios,好像人家很支持webview,json对象可以直接通过JSON获取。