【Android進階】Android程序與JavaScript之間的簡單調用


本篇將講解一個簡單的Android與JavaScript之間的簡單調用的小程序

效果圖


 

工程結構


 

HTMLActivity.java代碼 

  1. package com.example.javatojs;  
  2.   
  3.   
  4. import android.app.Activity;  
  5. import android.os.Bundle;  
  6. import android.os.Handler;  
  7. import android.webkit.WebView;  
  8.   
  9. public class HTMLActivity extends Activity {  
  10.     private WebView webView = null;  
  11.     public Handler handler = new Handler();  
  12.     @Override  
  13.     public void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         setContentView(R.layout.activity_main);  
  16.           
  17.         webView = (WebView)this.findViewById(R.id.webView);  
  18.         //設置字符集編碼  
  19.         webView.getSettings().setDefaultTextEncodingName("UTF-8");  
  20.         //開啟JavaScript支持  
  21.         webView.getSettings().setJavaScriptEnabled(true);  
  22.         //傳遞一個Java對象,同時給他命名,這個對象可以在js中調用這個對象的方法  
  23.         webView.addJavascriptInterface(new MyObject(this,handler), "myObject");  
  24.         //加載assets目錄下的文件  
  25.         String url = "file:///android_asset/index.html";  
  26.         webView.loadUrl(url);  
  27.     }  
  28. }  



 

MyObject.java 

  1. package com.example.javatojs;  
  2.   
  3. import org.json.JSONArray;  
  4. import org.json.JSONException;  
  5. import org.json.JSONObject;  
  6.   
  7. import android.os.Handler;  
  8. import android.webkit.WebView;  
  9.   
  10. public class MyObject {  
  11.     private Handler handler = null;  
  12.     private WebView webView = null;  
  13.   
  14.     public MyObject(HTMLActivity htmlActivity, Handler handler) {  
  15.         this.webView = (WebView) htmlActivity.findViewById(R.id.webView);  
  16.         this.handler = handler;  
  17.     }  
  18.   
  19.     public void init() {  
  20.         // 通過handler來確保init方法的執行在handler綁定的Activity的主線程中  
  21.         handler.post(new Runnable() {  
  22.   
  23.             public void run() {  
  24.                 // 調用客戶端setContactInfo方法  
  25.                 webView.loadUrl("javascript:setContactInfo('" + getJsonStr()  
  26.                         + "')");  
  27.             }  
  28.         });  
  29.     }  
  30.   
  31.     public static String getJsonStr() {  
  32.         try {  
  33.             JSONObject object1 = new JSONObject();  
  34.             object1.put("id"1);  
  35.             object1.put("name""張三");  
  36.             object1.put("phone""123456");  
  37.   
  38.             JSONObject object2 = new JSONObject();  
  39.             object2.put("id"2);  
  40.             object2.put("name""李四");  
  41.             object2.put("phone""456789");  
  42.   
  43.             JSONArray jsonArray = new JSONArray();  
  44.             jsonArray.put(object1);  
  45.             jsonArray.put(object2);  
  46.             return jsonArray.toString();  
  47.         } catch (JSONException e) {  
  48.             e.printStackTrace();  
  49.         }  
  50.         return null;  
  51.     }  
  52. }  


activity_main.java

 

  

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     android:orientation="vertical" >  
  6.   
  7.     <WebView  
  8.         android:id="@+id/webView"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="fill_parent" />  
  11.   
  12. </LinearLayout>  



 

index.html 

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
  2.         "http://www.w3.org/TR/html4/loose.dtd">  
  3. <html>  
  4. <head>  
  5. <title></title>  
  6. <script type="text/javascript">  
  7.     //data數據類型為字符串,字符串里面是數組,每一個數組元素為一個json對象,例如"[{id:1,name:'張三',phone:'135656461'},{id:2,name:'李四',phone:'1896561'}]"  
  8.     function setContactInfo(data) {  
  9.         var tableObj = document.getElementById("contact");  
  10.         //通過eval方法處理得到json對象數組  
  11.         var jsonObjects = eval(data);  
  12.         for (var i = 0; i < jsonObjects.length; i++) {  
  13.             //獲取json對象  
  14.             var jsonObj = jsonObjects[i];  
  15.             var tr = tableObj.insertRow(tableObj.rows.length); //添加一行  
  16.             //添加三列  
  17.             var td1 = tr.insertCell(0);  
  18.             var td2 = tr.insertCell(1);  
  19.             var td3 = tr.insertCell(2);  
  20.   
  21.             td1.innerHTML = jsonObj.id;  
  22.             td2.innerHTML = jsonObj.name;  
  23.             td3.innerHTML = jsonObj.phone;  
  24.         }  
  25.     }  
  26. </script>  
  27. </head>  
  28. <!--調用服務器端init方法-->  
  29. <body onload="javascript:myObject.init()">  
  30.     <table id="contact">  
  31.         <tr>  
  32.             <td>編號</td>  
  33.             <td>姓名</td>  
  34.             <td>電話</td>  
  35.         </tr>  
  36.     </table>  
  37. </body>  
  38. </html>  


源代碼下載

 

如有疑問,可留言


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM