Android和JavaScript相互調用的方法,androidjavascript
轉載地址:http://www.jb51.net/article/77206.htm
這篇文章主要介紹了Android和JavaScript相互調用的方法,執行個體分析了Android的WebView執行JavaScript及JavaScript訪問Android的技巧,需要的朋友可以參考下:
本文執行個體講述了Android和JavaScript相互調用的方法。分享給大家供大家參考,具體如下:
Html頁面和Java代碼結合的方式一般用在介面經常被更改 的情況下,可以講html放在網路中,軟體一開啟就會訪問網路擷取到最新的介面。缺點是會受到網路訊號的影響,從而導致訪問速度慢。
1.用WebView來顯示HTML代碼
2.允許WebView執行JavaScript
webView.getSettings().setJavaScriptEnabled(true);
3.擷取到HTML檔案,也可從網路中擷取
webView.loadUrl("file:///android_asset/index.html"); //HTML檔案存放在assets檔案夾中
4.添加一個對象, 讓JS可以訪問該對象的方法, 該對象中也可以調用JS中的方法
webView.addJavascriptInterface(new Contact(), "contact");
完整範例程式碼如下:
:
MainActivity:
import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.webkit.WebView;public class MainActivity extends Activity { private WebView webView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //載入頁面 webView = (WebView) findViewById(R.id.webView); //允許JavaScript執行 webView.getSettings().setJavaScriptEnabled(true); //找到Html檔案,也可以用網路上的檔案 webView.loadUrl("file:///android_asset/index.html"); // 添加一個對象, 讓JS可以訪問該對象的方法, 該對象中可以調用JS中的方法 webView.addJavascriptInterface(new Contact(), "contact"); } private final class Contact { //JavaScript調用此方法撥打到電話 public void call(String phone) { startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone))); } //Html調用此方法傳遞資料 public void showcontacts() { String json = "[{\"name\":\"zxx\", \"amount\":\"9999999\", \"phone\":\"18600012345\"}]"; // 調用JS中的方法 webView.loadUrl("javascript:show('" + json + "')"); } }}
HTML:
"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript"> function show(jsondata){ var jsonobjs = eval(jsondata); var table = document.getElementById("personTable"); for(var y=0; y<jsonobjs.length; y++){ var tr = table.insertRow(table.rows.length); var td1 = tr.insertCell(0); var td2 = tr.insertCell(1); td2.align = "center"; var td3 = tr.insertCell(2); td3.align = "center"; td1.innerHTML = jsonobjs[y].name; td2.innerHTML = jsonobjs[y].amount; td3.innerHTML = "<a href='javascript:contact.call(\""+ jsonobjs[y].phone+ "\")'>"+ jsonobjs[y].phone+ "</a>"; } } </script> </head> <body onload="javascript:contact.showcontacts()"> <table border="0" width="100%" id="personTable" cellspacing="0"> <tr> <td width="30%">姓名</td> <td width="30%" align="center">存款</td> <td align="center">電話</td> </tr> </table>
撥打到電話需要添加許可權:
<uses-permission android:name="android.permission.CALL_PHONE" />
希望本文所述對大家Android程式設計有所協助。