編輯:關於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:
<!DOCTYPE html PUBLIC "-//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> </body> </html>
撥打電話需要添加權限:
復制代碼 代碼如下:<uses-permission android:name="android.permission.CALL_PHONE" />
希望本文所述對大家Android程序設計有所幫助。
Android資源文件分類:Android資源文件大致可以分為兩種:第一種是res目錄下存放的可編譯的資源文件:這種資源文件系統會在R.java裡面自動生成該資源文件的I
Heap Viewer,Memory Monitor和Allocation Tracker是用來可視化你的app使用內存的補充工具。使用Memory Monitor To
相信大家對MVC,MVP和MVVM都不陌生,作為三個最耳熟能詳的Android框架,它們的應用可以是非常廣泛的,但是對於一些新手來說,可能對於區分它們三個都有困難,更別說
前言Android自定義控件經常會用到Canvas繪制2D圖形,在優化自己自定義控件技能之前,必須熟練掌握Canvas繪圖機制。本文從以下三個方面對Canvas繪圖機制進