Android和javascript相互调用
来源:互联网 发布:北师大网络教育平台 编辑:程序博客网 时间:2024/05/16 10:12
大致的思路如下:
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");
下面是完整的Activity代码:
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 + "')"); } }}注意拨打电话是需要添加权限的:
<uses-permission android:name="android.permission.CALL_PHONE" />
对应的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>
0 0
- Android和javascript相互调用
- JavaScript和Android代码相互调用
- Android Java和JavaScript代码相互调用
- Android和JavaScript相互调用初学
- Android:java和javascript相互调用
- Android:java和javascript相互调用
- Android:java和javascript相互调用
- Android 中 Java 和 JavaScript 相互调用
- Android和javascript相互调用2
- android与javascript相互调用
- android与javascript相互调用
- android与javascript相互调用
- javascript和C#相互调用
- JS和javaScript相互调用
- Qt和JavaScript相互调用
- Android 和 javascript 之间交互(方法相互调用)
- Android Webview 和Javascript交互,实现Android和JavaScript相互调用
- android和js相互调用
- 盒子弧度
- Android——EventBus3.0的使用详解
- js加减乘除丢失精度问题解决方法
- 为什么Linux的音频驱动位于sound目录下而不是driver/sound?
- VR、RTMP播放器SGPlayer原理详解
- Android和javascript相互调用
- 盒子阴影
- JavaScript保留字和关键字
- sessionStorage localStorage 和 cookie 之间的区别
- 后台学习六---ajaxFileupload文件上传下载
- hibernate的setFirstResult(a),setMaxResults(b)后,不按照一定顺序取值
- outline
- 如何将YUV的byte数组转换为bitmap
- leapmotion文档(1):leapmotion概述