本文实例讲述了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总结之WebView与Javascript交互(互相调用),包括了Android总结之WebView与Javascript交互(互相调用)的使用技巧和注意事项,需要的朋友参考一下 前言: 最近公司的App为了加快开发效率选择了一部分功能采用H5开发,从目前市面的大部分App来讲,大致分成Native App、Web App、Hybrid App三种方式,个人觉得目前以H
本文向大家介绍Android WebView的使用方法及与JS 相互调用,包括了Android WebView的使用方法及与JS 相互调用的使用技巧和注意事项,需要的朋友参考一下 Android WebView的使用方法及与JS 相互调用 1、添加网络权限 2、WebSettings 对访问页面进行设置。 3、页面加载方式 4、WebView 的两个重要方法 WebViewClient 和 Web
本文向大家介绍详解Android JS相互调用,包括了详解Android JS相互调用的使用技巧和注意事项,需要的朋友参考一下 最近在研究Android、JS相互调用,之前没怎么接触过,只知道loadUrl()就可以加载一个网页了,研究过之后发现Android可以调JS,JS也可以调Android原生控件,很开心啊。下面小编就开始喽: 原理就是Java和JS调用,在Android中是通过WebVi
本文向大家介绍Android AIDL实现与服务相互调用方式,包括了Android AIDL实现与服务相互调用方式的使用技巧和注意事项,需要的朋友参考一下 通过AIDL接口在进程间传递数据,记录在开发中遇到的一写问题 AIDL支持数据类型如下: 1. Java 的原生类型 2. String 和CharSequence 3. List 和 Map ,List和Map 对象的元素必须是AIDL支持的
本文向大家介绍对vue中methods互相调用的方法详解,包括了对vue中methods互相调用的方法详解的使用技巧和注意事项,需要的朋友参考一下 如下所示: 最近在学习vue,并用vue+vue-router+axios+elementUI做了一个pos收银系统的前端页面,但是中间遇到methods里的方法调用问题。本身源码是没有调用的,但是我想直接调用多方便,结果出错了……然后百度了一波,终于
本文向大家介绍浅谈PHP中静态方法和非静态方法的相互调用,包括了浅谈PHP中静态方法和非静态方法的相互调用的使用技巧和注意事项,需要的朋友参考一下 在PHP的非静态方法中可以调用静态方法 上面的代码会输出: this is strPrint static function. 而下面的代码会直接挂掉,php直接给出fatal error: Fatal error: Using $this when