当前位置:编程学习 > JAVA >>

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

 
 
xml
 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    tools:context=".MainActivity" >  
  
    <TextView  
        android:id="@+id/tv"  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:text="@string/hello_world" />  
    <WebView  
        android:layout_below="@+id/tv"  
        android:id="@+id/webview"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
    />  

 

  
</RelativeLayout>  
 
 
package com.example.webview_workflowy;  
  
import android.app.Activity;  
import android.content.Intent;  
import android.net.Uri;  
import android.os.Bundle;  
import android.webkit.WebView;  
import android.widget.Toast;  
  
public class MainActivity extends Activity {  
  
    private WebView webView;  
  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_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)));  
            Toast.makeText(MainActivity.this, phone, Toast.LENGTH_LONG).show();  
        }  
  
        //Html调用此方法传递数据  
        public void showcontacts() {  
            String json = "[{\"name\":\"zxx\", \"amount\":\"9999999\", \"phone\":\"18600012345\"}]";   
            // 调用JS中的方法  
            webView.loadUrl("javascript:show('" + json + "')");  
        }  
          
        public void toast(String str){  
            Toast.makeText(MainActivity.this, "aaaaaaaaaaaa  --- " + str, Toast.LENGTH_LONG).show();  
        }  
    }  
  
}  

 

 
 
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()">  
       <button id="button" onclick = "javascript:contact.toast('123')">haha</button>  
       <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>  

 

 
补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,