欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android和JavaScript相互调用的方法

程序员文章站 2023-12-17 15:19:22
本文实例讲述了android和javascript相互调用的方法。分享给大家供大家参考,具体如下: html页面和java代码结合的方式一般用在界面经常被更改 的情况下,...

本文实例讲述了android和javascript相互调用的方法。分享给大家供大家参考,具体如下:

html页面和java代码结合的方式一般用在界面经常被更改 的情况下,可以讲html放在网络中,软件一打开就会访问网络获取到最新的界面。缺点是会受到网络信号的影响,从而导致访问速度慢。

1.用webview来显示html代码

2.允许webview执行javascript

复制代码 代码如下:
webview.getsettings().setjavascriptenabled(true);

3.获取到html文件,也可从网络中获取

复制代码 代码如下:
webview.loadurl(""); //html文件存放在assets文件夹中

4.添加一个对象, 让js可以访问该对象的方法, 该对象中也可以调用js中的方法

复制代码 代码如下:
webview.addjavascriptinterface(new contact(), "contact");

完整示例代码如下:

效果图:

Android和JavaScript相互调用的方法

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程序设计有所帮助。

上一篇:

下一篇: