android webview 加载本地html 实现 与 java 之间的相互响应

来源:互联网 发布:最强淘宝系统txt下载 编辑:程序博客网 时间:2024/06/10 08:09


xml

[html] view plain copy
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="fill_parent"  
  4.     android:layout_height="fill_parent"  
  5.     tools:context=".MainActivity" >  
  6.   
  7.     <TextView  
  8.         android:id="@+id/tv"  
  9.         android:layout_width="fill_parent"  
  10.         android:layout_height="wrap_content"  
  11.         android:text="@string/hello_world" />  
  12.     <WebView  
  13.         android:layout_below="@+id/tv"  
  14.         android:id="@+id/webview"  
  15.         android:layout_width="fill_parent"  
  16.         android:layout_height="fill_parent"  
  17.     />  
  18.   
  19. </RelativeLayout>  

java

[ruby] view plain copy
  1. package com.example.webview_workflowy;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Intent;  
  5. import android.net.Uri;  
  6. import android.os.Bundle;  
  7. import android.webkit.WebView;  
  8. import android.widget.Toast;  
  9.   
  10. public class MainActivity extends Activity {  
  11.   
  12.     private WebView webView;  
  13.   
  14.     public void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.activity_main);  
  17.         //加载页面  
  18.         webView = (WebView) findViewById(R.id.webview);  
  19.         //允许JavaScript执行  
  20.         webView.getSettings().setJavaScriptEnabled(true);  
  21.         //找到Html文件,也可以用网络上的文件  
  22.         webView.loadUrl("file:///android_asset/index.html");  
  23.         // 添加一个对象, 让JS可以访问该对象的方法, 该对象中可以调用JS中的方法  
  24.         webView.addJavascriptInterface(new Contact(), "contact");  
  25.     }  
  26.   
  27.     private final class Contact {  
  28.         //JavaScript调用此方法拨打电话  
  29.         public void call(String phone) {  
  30. //            startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phone)));  
  31.             Toast.makeText(MainActivity.this, phone, Toast.LENGTH_LONG).show();  
  32.         }  
  33.   
  34.         //Html调用此方法传递数据  
  35.         public void showcontacts() {  
  36.             String json = "[{\"name\":\"zxx\", \"amount\":\"9999999\", \"phone\":\"18600012345\"}]";   
  37.             // 调用JS中的方法  
  38.             webView.loadUrl("javascript:show('" + json + "')");  
  39.         }  
  40.           
  41.         public void toast(String str){  
  42.             Toast.makeText(MainActivity.this, "aaaaaaaaaaaa  --- " + str, Toast.LENGTH_LONG).show();  
  43.         }  
  44.     }  
  45.   
  46. }  

html

[html] view plain copy
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2. <html>  
  3.     <head>  
  4.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  5.         <title>Insert title here</title>  
  6.         <script type="text/javascript">  
  7.             function show(jsondata){              
  8.                     var jsonobjs = eval(jsondata);  
  9.                     var table = document.getElementById("personTable");  
  10.                     for(var y=0; y<jsonobjs.length; y++){  
  11.                         var tr = table.insertRow(table.rows.length);   
  12.                         var td1 = tr.insertCell(0);  
  13.                         var td2 = tr.insertCell(1);  
  14.                         td2.align = "center";  
  15.                         var td3 = tr.insertCell(2);  
  16.                         td3.align = "center";  
  17.                         td1.innerHTML = jsonobjs[y].name;   
  18.                         td2.innerHTML = jsonobjs[y].amount;   
  19.                         td3.innerHTML = "<a href='javascript:contact.call(\""+ jsonobjs[y].phone+ "\")'>"+ jsonobjs[y].phone+ "</a>";   
  20.                     }  
  21.             }  
  22.         </script>  
  23.     </head>  
  24.     <body onload="javascript:contact.showcontacts()">  
  25.        <button id="button" onclick = "javascript:contact.toast('123')">haha</button>  
  26.        <table border="0" width="100%" id="personTable" cellspacing="0">  
  27.             <tr>  
  28.                 <td width="30%">姓名</td>  
  29.                 <td width="30%" align="center">存款</td>  
  30.                 <td align="center">电话</td>  
  31.             </tr>  
  32.         </table>  
  33.     </body>  
  34. </html>  


代码:http://download.csdn.net/my

0 0
原创粉丝点击