Android和JavaScript互相调用

本文详细介绍了如何将HTML与JavaScript结合用于Android应用界面的动态更新,包括使用WebView展示HTML代码、允许JavaScript执行、从网络获取HTML文件及在JavaScript与Android对象间建立交互的方法。同时提供了完整示例代码及HTML文件示例,演示了如何通过添加对象让JS访问该对象的方法,并在Android应用中调用JS中的方法。此外,文章还强调了拨打电话需要添加的权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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">
<</span>html>
    <</span>head>
        <</span>meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <</span>title>Insert title here</</span>title>
        <</span>script type="text/javascript">
            function show(jsondata){            
                    var jsonobjs eval_r(jsondata);
                    var table document.getElementByIdx_x("personTable");
                    for(var y=0; 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 ""+ jsonobjs[y].phone+ ""; 
                    }
            }
        </</span>script>
    </</span>head>
    <</span>body onload="javascript:contact.showcontacts()">
       <</span>table border="0" width="100%" id="personTable" cellspacing="0">
            <</span>tr>
                <</span>td width="30%">姓名</</span>td>
                <</span>td width="30%" align="center">存款</</span>td>
                <</span>td align="center">电话</</span>td>
            </</span>tr>
        </</span>table>
    </</span>body>
</</span>html>
复制代码

拨打电话需要添加权限:

url: http://greatverve.cnblogs.com/archive/2012/01/18/android-javascript.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值