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基础知识之frame动画效果

    Android基础知识之frame动画效果

    Android基础知识之tween动画效果,Android一共提供了两种动画,这篇文章主要介绍了Android动画效果之frame动画,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 详解adb工具的基本使用

    详解adb工具的基本使用

    adb全称Android Debug Bridge,是Android SDK中的一个工具, 使用adb可以直接操作管理Android模拟器或者真实的Andriod设备,就是起到调试桥的作用,这篇文章主要介绍了adb工具的基本使用,需要的朋友可以参考下
    2022-08-08
  • Android仿QQ长按删除弹出框功能示例

    Android仿QQ长按删除弹出框功能示例

    对于列表来说,如果想操作某个列表项,一般会采用长按弹出菜单的形式,默认的上下文菜单比较难看,而QQ的上下文菜单就人性化多了,整个菜单给用户一种气泡弹出的感觉,而且会显示在手指按下的位置,接下来通过本文给大家分享Android仿QQ长按删除弹出框功能,一起看看吧
    2017-03-03
  • Android Room数据库容易遇到的问题以及解决方法

    Android Room数据库容易遇到的问题以及解决方法

    这篇文章给大家介绍了我们在Android Room数据库容易遇到的坑以及解决方法,文中有详细的代码示例供我们参考,具有一定的参考价值,需要的朋友可以参考下
    2023-09-09
  • Android自定义指示器时间轴效果实例代码详解

    Android自定义指示器时间轴效果实例代码详解

    指示器时间轴在外卖、购物类的APP里会经常用到,效果大家都知道的差不多吧,下面小编通过实例代码给大家分享Android自定义指示器时间轴效果,需要的朋友参考下吧
    2017-12-12
  • Android 自定义弹出框实现代码

    Android 自定义弹出框实现代码

    这篇文章主要介绍了Android 自定义弹出框实现代码的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • Android 13新功能及适配工作详解

    Android 13新功能及适配工作详解

    这篇文章主要为大家介绍了Android 13的新功能及需要哪些适配工作详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Android 弹出软键盘所遇到的坑及解决方法

    Android 弹出软键盘所遇到的坑及解决方法

    这篇文章主要介绍了Android 弹出软键盘所遇到的坑及解决方法,非常不错,具有参考借鉴价值,需要的朋友参考下
    2017-01-01
  • Android 如何修改APK的默认名称

    Android 如何修改APK的默认名称

    这篇文章主要介绍了Android 如何修改APK的默认名称的相关资料,需要的朋友可以参考下
    2017-02-02
  • Android如何遍历特定目录下所有文件

    Android如何遍历特定目录下所有文件

    这篇文章主要为大家详细介绍了Android如何遍历特定目录下所有文件的代码,供大家参考,感兴趣的小伙伴们可以参考一下
    2016-07-07

最新评论