0
点赞
收藏
分享

微信扫一扫

Android和JavaScript互相调用


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

1.用WebView来显示HTML代码

2.允许WebView执行JavaScript

  

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

  webView.loadUrl("file:///android_asset/index.html");  

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

 


完整示例代码如下:

效果图:



MainActivity

Android和JavaScript互相调用_html

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 
       + 
       "')");
       
  
        
        
        
        
        
        
        
       }
       
  
        
        
        
       }
       
 }
       
      

       


Android和JavaScript互相调用_json_02



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>

Android和JavaScript互相调用_json_02



拨打电话需要添加权限:


举报

相关推荐

0 条评论