登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

查看: 199|回复: 6

Android WebView交互传递json字符串并解析的方法,android webview交互

[复制链接]

393

主题

757

帖子

865

安币

手工艺人

发表于 2018-5-16 14:21:04 | 显示全部楼层 |阅读模式

            

        前言

        我们大家都知道webview交互中可以传递基本数据类型的数据值,比如常用的int,string.

        但是webview也可以传递一种很重要很常用的数据格式-json数据.

        传递json和传递string数据是一样的,关键就是html5端对json数据通过eval()函数进行解析

        传递过程中android端调用的最重要的一个函数就是:

        addjavascriptinterface(new myobject(this,”dd”),”my”); 这个函数有两个参数,第一个参数传入的是含有实现了javascript中的方法,并且使用@javascriptinterface注解标识这个方法是被js代码调用的,第二个参数是一个桥接字符串,这个桥接字符串可以随意定义,只要android端和javascript端保持一致就可以.

        下面附上传递json数据的完整demo

        index.html

[Java] 查看源文件 复制代码
<!doctype html>
<html lang="en">
<head>
 <meta charset="utf-8">
 <title>测试android json传值</title>
 <script src="http://cdn.hcharts.cn/jquery/jquery-1.8.3.min.js"></script>
 <script src="http://cdn.hcharts.cn/highcharts/highcharts.js"></script>

 <script type="text/javascript">
$(function(){
 //通过暴露的my对象来获取数据
 var data = my.getdata();
 //将json字符串转换为数组
 var f = eval(data);
 //向表格填充数据
 for(var i = 0;i<f.length;i++){
 var en = f[i];
 $("table").append("<tr><td>"+en.age+"</td><td>"+en.name+"</td><td>"+en.uint+"</td></tr>");
 }
 });
 </script>
</head>
<body>
人员表
<div>
 <table id="table" border="1" bgcolor="#ffddff"></table>
</div>
</body>
</html>

        mainactivity.java

[Java] 查看源文件 复制代码
package com.geocompass.testdeliverjson;
import android.support.v7.app.appcompatactivity;
import android.os.bundle;
import android.webkit.websettings;
import android.webkit.webview;
public class mainactivity extends appcompatactivity {
 @override
 protected void oncreate(bundle savedinstancestate) {
 super.oncreate(savedinstancestate);
 setcontentview(r.layout.activity_main);
 webview wv = (webview) findviewbyid(r.id.wv);
 websettings settings = wv.getsettings();
 //调用webview关联的websettings中setjavascriptenable(true)方法。
 settings.setjavascriptenabled(true);
 wv.loadurl("file:///android_asset/index.html");
 //调用webview关联的websettings中addjavascriptinterface
 wv.addjavascriptinterface(new myobject(this,"dd"),"my");
 }
}

        activity_main.xml

[Java] 查看源文件 复制代码
<

        myobject.java

[Java] 查看源文件 复制代码
package com.geocompass.testdeliverjson;
import android.content.context;
import android.util.log;
import android.webkit.javascriptinterface;
import com.google.gson.gson;
import java.util.arraylist;
import java.util.list;

/**
 * created by liuxu on 2017/2/13.
 */

public class myobject {
 public static final string tag = myobject.class.getsimplename() ;
 private context mcontext;
 private string data;
 public myobject(context c,string data){
 this.data = data;
 mcontext = c;
 }

 /**
 * 获取person字符串传html
 * @return
 */
 @javascriptinterface
 public string getdata(){

 list<person> mlist = new arraylist<>();
 for (int i = 0; i <10 ; i++) {
  mlist.add(new person("姓名"+i,i+"","工作单位"+i));
 }
 gson gson = new gson();
 string d = gson.tojson(mlist);
 log.d(tag, "getdata: dddd"+d);
 return d;
 }
}

        person.java

[Java] 查看源文件 复制代码
package com.geocompass.testdeliverjson;
/**
 * created by liuxu on 2017/2/13.
 */
public class person {
 public string name;
 public string age;
 public string uint;
 public person(string name, string age, string uint) {
 this.name = name;
 this.age = age;
 this.uint = uint;
 }
}

        运行效果截图如下

        

        总结






        

0

主题

9590

帖子

1619

安币

Android大神

IT

Rank: 6Rank: 6

发表于 2018-5-16 14:55:58 | 显示全部楼层
帮帮顶顶!!

449

主题

888

帖子

1977

安币

手工艺人

发表于 2018-5-16 18:02:03 | 显示全部楼层
感谢大神~

21

主题

9245

帖子

2063

安币

Android大神

Rank: 6Rank: 6

发表于 2018-5-16 22:38:08 | 显示全部楼层
楼主是好人,回个帖会有安币吗?

0

主题

9241

帖子

2485

安币

Android大神

Rank: 6Rank: 6

发表于 2018-5-17 03:06:44 | 显示全部楼层
帮帮顶顶!!

400

主题

844

帖子

352

安币

手工艺人

发表于 2018-5-17 08:30:58 | 显示全部楼层
支持,感谢,祝巴士越来越好~

0

主题

9087

帖子

2903

安币

Android大神

Rank: 6Rank: 6

发表于 2018-5-17 15:39:01 | 显示全部楼层
感谢分享,安卓巴士有你更精彩:lol
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区
联系我们
关闭
合作电话:
15618560077
Email:
805941275@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表