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

 更新时间:2013年06月20日 15:19:50   作者:  
js主动调用android的对象方式,android也无法返回给js一个jsonobject,需要js做一下转换,具体代码如下,感兴趣的朋友可以参考下哈
最近几个项目的测试结果,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函数,结果如下:

相关文章

  • Android异步更新UI的四种方式

    Android异步更新UI的四种方式

    这篇文章主要为大家详细介绍了Android异步更新UI的四种方式,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Android中使用ZXing生成二维码(支持添加Logo图案)

    Android中使用ZXing生成二维码(支持添加Logo图案)

    ZXing是谷歌的一个开源库,可以用来生成二维码、扫描二维码。接下来通过本文给大家介绍Android中使用ZXing生成二维码(支持添加Logo图案),需要的朋友参考下
    2017-01-01
  • Android自定义View实现弹性小球效果

    Android自定义View实现弹性小球效果

    前段时间看到一个功能,是一个小球沿着固定轨迹弹动的效果,那么这篇文章小编给大家分享在Android中如何自定义View来实现弹性小球的效果,有需要的可以参考借鉴。
    2016-09-09
  • Android app启动时黑屏或者白屏的原因及解决办法

    Android app启动时黑屏或者白屏的原因及解决办法

    这篇文章主要介绍了Android app启动时黑屏或者白屏的原因及解决办法的相关资料,需要的朋友可以参考下
    2016-09-09
  • Android双向选择控件DoubleSeekBar使用详解

    Android双向选择控件DoubleSeekBar使用详解

    这篇文章主要为大家详细介绍了Android双向选择控件DoubleSeekBar的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • Android Studio 利用Splash制作APP启动界面的方法

    Android Studio 利用Splash制作APP启动界面的方法

    这篇文章主要介绍了Android Studio 利用Splash制作APP启动界面,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • RxJava2配置及使用详解

    RxJava2配置及使用详解

    这篇文章主要介绍了RxJava2配置及使用详解,RxJava2.0是一个非常棒的流式编程,有兴趣的可以了解一下
    2017-06-06
  • android studio 3.6.0 绑定视图新特性的方法

    android studio 3.6.0 绑定视图新特性的方法

    这篇文章主要介绍了android studio 3.6.0 绑定视图新特性的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Android基础知识之tween动画效果

    Android基础知识之tween动画效果

    Android基础知识之tween动画效果,Android一共提供了两种动画,这篇文章主要介绍了Android动画效果之tween动画,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • android使用intent传递参数实现乘法计算

    android使用intent传递参数实现乘法计算

    这篇文章主要为大家详细介绍了android使用intent传递参数实现乘法计算,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04

最新评论