JavaScript与Android之间的交互

http://blog.csdn.net/cai1213/article/details/7951370

JavaScript直接调用Android中的方法,例子:webview直接加载html,html中的javascript调用android端的方法。此例子可以有助于android开发者开发图表类的项目,图表不需要原生代码,只需用脚本实现。图表的脚本生成可以参考:http://www.ichartjs.cn

Android端:

RIAExample.class

[java]  view plain  copy
  1. package com.example;  
  2.   
  3. import org.json.JSONArray;  
  4. import org.json.JSONException;  
  5. import org.json.JSONObject;  
  6.   
  7. import android.app.Activity;  
  8. import android.os.Bundle;  
  9. import android.util.Log;  
  10. import android.webkit.WebView;  
  11.   
  12. public class RIAExample extends Activity{  
  13.       
  14.     private WebView web;  
  15.     /** Called when the activity is first created. */  
  16.     @Override  
  17.     public void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.main);  
  20.           
  21.         web = (WebView)this.findViewById(R.id.web);  
  22.           
  23.         web.getSettings().setJavaScriptEnabled(true);  
  24.         web.getSettings().setBuiltInZoomControls(true);  
  25.           
  26.         web.addJavascriptInterface(this,"phone");  //通过“phone”与javascript交互;  
  27.           
  28.         web.loadUrl("file:///android_asset/form.html");  
  29.     }  
  30.       
  31.     public String getData(){  
  32.         return "[{name : 'IE',value : 35.75,color:'#9d4a4a'},{name : 'Chrome',value : 29.84,color:'#5d7f97'},{name : 'Firefox',value : 24.88,color:'#97b3bc'},{name : 'Safari',value : 6.77,color:'#a5aaaa'},{name : 'Opera',value : 2.02,color:'#778088'},{name : 'Other',value : 0.73,color:'#6f83a5'}]";  
  33.     }  
  34.       
  35.     public JSONArray getJsonArray(){  
  36.         try {  
  37.             JSONArray data = new JSONArray();  
  38.             JSONObject temp = new JSONObject();  
  39.             temp.put("name""other");  
  40.             temp.put("value"0.73);  
  41.             temp.put("color""#6f83a5");  
  42.             data.put(temp);  
  43.             JSONObject temp1 = new JSONObject();  
  44.             temp1.put("name""IE");  
  45.             temp1.put("value"35.75);  
  46.             temp1.put("color""#a5c2d5");  
  47.             data.put(temp1);  
  48.             JSONObject temp2 = new JSONObject();  
  49.             temp2.put("name""Chrome");  
  50.             temp2.put("value"29.84);  
  51.             temp2.put("color""#cbab4f");  
  52.             data.put(temp2);  
  53.             JSONObject temp3 = new JSONObject();  
  54.             temp3.put("name""Firefox");  
  55.             temp3.put("value"24.88);  
  56.             temp3.put("color""#76a871");  
  57.             data.put(temp3);  
  58.             JSONObject temp4 = new JSONObject();  
  59.             temp4.put("name""Safari");  
  60.             temp4.put("value"6.77);  
  61.             temp4.put("color""#9f7961");  
  62.             data.put(temp4);  
  63.             JSONObject temp5 = new JSONObject();  
  64.             temp5.put("name""Opera");  
  65.             temp5.put("value"2.02);  
  66.             temp5.put("color""#a55f8f");  
  67.             data.put(temp5);  
  68.             System.out.println(data.toString());  
  69.             return data;  
  70.         } catch (JSONException e) {  
  71.             // TODO: handle exception  
  72.             Log.e("TAG""JSONException!!!");  
  73.             return null;  
  74.         }  
  75.           
  76.     }  
  77.       
  78.     public String getParams(){  
  79.         return "{render : 'canvasDiv',data: data,title : '2012',legend : {enable : true},animation:true,showpercent:true,decimalsnum:2,width : 640,height : 480,radius:140}";  
  80.     }  
  81.       
  82.     public String getType(){  
  83.         return "new iChart.Pie2D(params)";  
  84.     }  
  85.       
  86.       
  87.     public void debugout(String info){  
  88.         Log.i("ss",info);  
  89.         System.out.println(info);  
  90.     }  
  91.     
  92. }  

assets文件夹:


html源码:

[html]  view plain  copy
  1. <!DOCTYPE html>  
  2. <html>  
  3.     <head>  
  4.         <meta charset="UTF-8" />  
  5.         <title>ichartjs例子</title>  
  6.         <script type="text/javascript" src="js/ichart-1.0.min.js"></script>  
  7.       
  8.         <script type="text/javascript">  
  9.             window.onload = function(){  
  10.                 window.phone.debugout("inside js onload");  
  11.                   
  12.                 $(function(){  
  13.                     window.phone.debugout("----------in iChart.Pie2D function-------");  
  14.                     var data_string = window.phone.getData();  
  15.                     eval("var data =" + data_string);  
  16.                       
  17.                     var params_string = window.phone.getParams();  
  18.                     eval("var params =" + params_string);  
  19.                       
  20.                     var type_string = window.phone.getType();  
  21.                     eval("var chart =" + type_string);  
  22.                       
  23.                     chart.draw();  
  24.                     window.phone.debugout("----------in iChart.Pie2D function, after draw()-------");  
  25.                 });  
  26.                   
  27.             };  
  28.         </script>   
  29.           
  30.         </head>  
  31.         <body>  
  32.             <div id='canvasDiv'></div>  
  33.         </body>     
  34. </html>  

效果图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值