Android和JavaScript相互调用的方法

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • JavaScript实现同时调用多个函数的方法

    本文实例讲述了JavaScript实现同时调用多个函数的方法.分享给大家供大家参考,具体如下: 这里分析JavaScript 同时调用同一网页内的多个函数的实现方法,点击按钮后执行多次函数,比如连续弹出多次窗口. 具体代码如下: <html> <head> <title>同时调用多个函数</title> <script language="javascript"> <!-- function fun1(){ alert(

  • html中使用javascript调用本地程序(exe、doc等)实现代码

    第一次用到这个,做个记录,在html页面中调用本地程序: 复制代码 代码如下: <html> <head> <script language="javascript"> function Run(strPath) { var objShell = new ActiveXObject("wscript.shell"); objShell.exec(strPath); objShell = null; } </script>

  • JavaScript调用客户端Java程序的方法

    本文实例讲述了JavaScript调用客户端Java程序的方法.分享给大家供大家参考.具体如下: 一般说来,JavaScript是没有权限调用客户端可执行程序的.但有时有些特殊需要,又不得不调用.例如有时涉及客户端文件的操作此时,当然我们可以用 FileSystemObject对象来完成.又例如我们前些时做的项目中,需求是点击页面一个链接不弹出IE的那个文件下载的对话框 (有三个选项:打开.保存.取消的那个),直接把文件下载到指定目录 .此时就不得不绕过浏览器的这个对话框,自己写一个客户端的ja

  • JSP+jquery使用ajax方式调用json的实现方法

    本文实例讲述了JSP+jquery使用ajax方式调用json的实现方法.分享给大家供大家参考,具体如下: 前台: <script type="text/javascript" src="jquery-1.5.1.min.js"></script> <script type="text/javascript"> //test function test(uid) { if(confirm("确定该用户

  • javascript实现在网页中运行本地程序的方法

    本文实例讲述了javascript实现在网页中运行本地程序的方法.分享给大家供大家参考,具体如下: <input onclick="exec('notepad.exe')" value="执行noteppad.exe" type="button"> <input onclick="exec('cmd.exe')" value="执行cmd.exe" type="button&qu

  • 在JavaScript中调用php程序

    复制代码 代码如下: <SCRIPT Language = "JavaScript"> function func() { if(confirm("Are you OK with this?")) { this.location = "ok.php?action=ok"; } else { this.location = "ok.php?action=cancel"; } } </SCRIPT> <

  • JS+JSP通过img标签调用实现静态页面访问次数统计的方法

    本文实例讲述了JS+JSP通过img标签调用实现静态页面访问次数统计的方法.分享给大家供大家参考,具体如下: 测试页面: test.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>test</title> <meta http-equiv="pragma" content

  • JavaScript通过代码调用Flash显示的方法

    本文实例讲述了JavaScript通过代码调用Flash显示的方法.分享给大家供大家参考,具体如下: <script type="text/javascript" language="javascript" src="Scripts/swfobject.js"></script> <script language="javascript"> function load(){ var swfV

  • Android和JavaScript相互调用的方法

    本文实例讲述了Android和JavaScript相互调用的方法.分享给大家供大家参考,具体如下: Html页面和Java代码结合的方式一般用在界面经常被更改 的情况下,可以讲html放在网络中,软件一打开就会访问网络获取到最新的界面.缺点是会受到网络信号的影响,从而导致访问速度慢. 1.用WebView来显示HTML代码 2.允许WebView执行JavaScript 复制代码 代码如下: webView.getSettings().setJavaScriptEnabled(true); 3.

  • Android与JS相互调用的方法

    目录 Android调用js的方法实现是引入一个webview用webview打开一个页面调取的JS函数. 下面是JS同Android的通信,JS调用Android的函数方法. Android调用js的方法实现是引入一个webview用webview打开一个页面调取的JS函数. private void InitWebView() { mWebView = (WebView) findViewById(R.id.webview); WebSettings webSettings = mWebVi

  • js与applet相互调用的方法

    本文实例讲述了js与applet相互调用的方法.分享给大家供大家参考,具体如下: js调用java 可以在网页里使用 <script language=javascript> document.applets[0].java中的方法名 </script> 可以对applet进行控制,也可以从applet返回值. 返回值无需关心值得类型,js会隐式的转换. 传值到applet中应考虑类型匹配. java调用js 需要导入netscape.javascript.jsobject这个类

  • JavaScript 中调用 Kotlin 方法实例详解

    JavaScript 中调用 Kotlin 方法实例详解 Kotlin 编译器生成正常的 JavaScript 类,可以在 JavaScript 代码中自由地使用的函数和属性 .不过,你应该记住一些微妙的事情. 用独立的 JavaScript 隔离声明 为了防止损坏全局对象,Kotlin 创建一个包含当前模块中所有 Kotlin 声明的对象 .所以如果你把模块命名为 myModule,那么所有的声明都可以通过 myModule 对象在 JavaScript 中可用.例如: fun foo() =

  • ThinkPHP控制器间实现相互调用的方法

    本文实例讲述了ThinkPHP控制器间实现相互调用的方法.分享给大家供大家参考.具体实现方法如下: ThinkPHP同一个项目里,两个控制器的方法如何相互调用呢?ThinkPHP提供了一个A(),通过它可以使控制器之间的方法相互调用,使得代码可以重复利用. 官方似乎对A()方法没有相关使用文档,现在通过一个例子来说一下如使用A()方法. 有两个控制器,ColumnsAction和NewsAction.ncatlist()是ColumnsAction的分类列表方法,现在我要在控制器NewsActi

  • Android Activity之间相互调用与传递参数的原理与用法分析

    本文实例讲述了Android Activity之间的相互调用与传递参数.分享给大家供大家参考,具体如下: Activity之间是如何调用的 在javaWeb程序中,jsp与jsp之间的调用是通过重定向完成的,而在Android中,Activity与Activity之间的切换是通过Intent来完成的. 所谓Intent,它是Android中非常重要的内置组件,他可以理解为"我要干一件什么事情".在Android中有3大组件:Activity,Service.Broadcast,他们之间

  • C#和lua相互调用的方法教程

    前言 自从ulua在官网上出来后,lua 就被u3d开发人员喜爱.国内有几个高手把lua拿过来 接着进行了封装.很多都是新手转过来.lua语法一看遍知,但是大多数人还是不明白两个语言之间的互相调用是怎么一回事,这也是难点和重点.所以今天想跟大家分享一下这方面的知识,让大家少走弯路吧. Lua是一种很好的扩展性语言,Lua解释器被设计成一个很容易嵌入到宿主程序的库.LuaInterface则用于实现Lua和CLR的混合编程. C与lua交互面临以下几个问题: 1.由于lua里面的数据都是动态加载的

  • PowerShell入门教程之Cmd命令与PowerShell命令相互调用的方法

    单独使用一种脚本来完成一项任务是理想的状态,而现实的情况往往是,因为历史原因.或者团队组成,你不得不将多种脚本或者程序组合在一起,来完成某项任务.本文的讨论范围是Cmd命令与PowerShell命令之间的组合与调用. 毋庸置疑,Cmd命令与PowerShell命令之间的调用有两个方向.即在Cmd命令中调用PowerShell的命令,以及在PowerShell脚本中调用Cmd命令.需要说明的是,这里的调用分两个层次:一.简单的在其中一个的环境中执行另外一个命令,完成部分工作:二.在其中一个的执行上

  • JavaScript异步调用定时方法并停止该方法实现代码

    复制代码 代码如下: (function() { var t = window.setInterval(function() { $('#ajaxGame').load('RefreshCurrentPlayerServlet #ajaxGame', function() { youWin(); youlose(); }); }, 10000); function youWin() { if ($('#status:contains("YOU ARE THE WINNER!")').l

  • 详解Android JS相互调用

    最近在研究Android.JS相互调用,之前没怎么接触过,只知道loadUrl()就可以加载一个网页了,研究过之后发现Android可以调JS,JS也可以调Android原生控件,很开心啊.下面小编就开始喽: 原理就是Java和JS调用,在Android中是通过WebView来实现的. 下面先说一下简单的Android和JS相互调用 首先通过loadurl()来加载网页 WebView开启JS脚本执行 Android端提供JS调用的交互接口 简单的看一下代码: mWebView=(MyWebVi

随机推荐