Android和JavaScript相互調(diào)用的方法
本文實(shí)例講述了Android和JavaScript相互調(diào)用的方法。分享給大家供大家參考,具體如下:
Html頁面和Java代碼結(jié)合的方式一般用在界面經(jīng)常被更改 的情況下,可以講html放在網(wǎng)絡(luò)中,軟件一打開就會(huì)訪問網(wǎng)絡(luò)獲取到最新的界面。缺點(diǎn)是會(huì)受到網(wǎng)絡(luò)信號(hào)的影響,從而導(dǎo)致訪問速度慢。
1.用WebView來顯示HTML代碼
2.允許WebView執(zhí)行JavaScript
3.獲取到HTML文件,也可從網(wǎng)絡(luò)中獲取
4.添加一個(gè)對(duì)象, 讓JS可以訪問該對(duì)象的方法, 該對(duì)象中也可以調(diào)用JS中的方法
完整示例代碼如下:
效果圖:

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執(zhí)行
webView.getSettings().setJavaScriptEnabled(true);
//找到Html文件,也可以用網(wǎng)絡(luò)上的文件
webView.loadUrl("file:///android_asset/index.html");
// 添加一個(gè)對(duì)象, 讓JS可以訪問該對(duì)象的方法, 該對(duì)象中可以調(diào)用JS中的方法
webView.addJavascriptInterface(new Contact(), "contact");
}
private final class Contact {
//JavaScript調(diào)用此方法撥打電話
public void call(String phone) {
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone)));
}
//Html調(diào)用此方法傳遞數(shù)據(jù)
public void showcontacts() {
String json = "[{\"name\":\"zxx\", \"amount\":\"9999999\", \"phone\":\"18600012345\"}]";
// 調(diào)用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>
撥打電話需要添加權(quán)限:
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
- html中使用javascript調(diào)用本地程序(exe、doc等)實(shí)現(xiàn)代碼
- JavaScript調(diào)用客戶端Java程序的方法
- 在JavaScript中調(diào)用php程序
- JavaScript通過代碼調(diào)用Flash顯示的方法
- JS+JSP通過img標(biāo)簽調(diào)用實(shí)現(xiàn)靜態(tài)頁面訪問次數(shù)統(tǒng)計(jì)的方法
- JavaScript實(shí)現(xiàn)同時(shí)調(diào)用多個(gè)函數(shù)的方法
- JSP+jquery使用ajax方式調(diào)用json的實(shí)現(xiàn)方法
- javascript實(shí)現(xiàn)在網(wǎng)頁中運(yùn)行本地程序的方法
相關(guān)文章
Templates實(shí)戰(zhàn)之更優(yōu)雅實(shí)現(xiàn)自定義View構(gòu)造方法詳解
本篇文章介紹如何利用Android Studio提供的Live Templates更優(yōu)雅實(shí)現(xiàn)自定義View的構(gòu)造方法,說句人話就是:簡(jiǎn)化自定義View構(gòu)造參數(shù)模板代碼的編寫,實(shí)現(xiàn)自動(dòng)生成,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Android視頻/音頻緩存框架AndroidVideoCache(Okhttp)詳解
這篇文章主要為大家詳細(xì)介紹了Android視頻、音頻緩存框架AndroidVideoCache,實(shí)現(xiàn)邊下邊播功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Android入門之實(shí)現(xiàn)手工發(fā)送一個(gè)BroadCast
這篇文章主要通過手工來發(fā)送一條BroadCast進(jìn)一步來帶大家深入了解BroadCast,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Android有一定幫助,感興趣的可以收藏一下2022-12-12
Android ListView自定義Adapter實(shí)現(xiàn)仿QQ界面
這篇文章主要為大家詳細(xì)介紹了ListView自定義Adapter實(shí)現(xiàn)仿QQ界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
詳解Android開啟OTG功能/USB?Host?API功能
這篇文章主要介紹了Android開啟OTG功能/USB?Host?API功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
Android開發(fā)實(shí)現(xiàn)消除屏幕鎖的方法
這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)消除屏幕鎖的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android鎖屏的原理及消除屏幕鎖的相關(guān)操作技巧,需要的朋友可以參考下2017-09-09

