Android和JavaScript相互调用的方法

时间:2022-09-20 12:14:24

本文实例讲述了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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!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程序设计有所帮助。