Activity代碼
public class JSandJavaActivity extends Activity {
WebView webView= null;
Handler handler = new Handler();//進行異步通訊
@Override
public void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView = (WebView) this.findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);//隻有設為true才能與javascript進行通訊
webView.addJavascriptInterface(new
Object(){//讓javascript能調用java中的方法
public
void show(){
handler.post(new
Runnable(){
@Override
public
void run() {
//webView.loadUrl("javascript:pageini()");
webView.loadUrl("javascript:personlist('"+query()+"')");//調用javascript函數
}
});
}
}, "caller");
webView.loadUrl(path);//載入頁面
}
public
static String query(){//構造json對象
JSONArray array = null;
try {
JSONObject
object = new JSONObject();
object.put("id",
1);
object.put("name","lybeen");
object.put("age",
23);
object.put("address",
"HZ");
object2 = new JSONObject();
object2.put("id",
2);
object2.put("name","lybeen2");
object2.put("age",
24);
object2.put("address",
"SH");
array = new
JSONArray();
array.put(object);
array.put(object2);
} catch (JSONException e)
{
// TODO
Auto-generated catch block
e.printStackTrace();
}
return array.toString();
}
HTML代碼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<title>無标題文檔</title>
<script
language="javascript">
function
personlist(jsons){ //傳json對象
var
table=document.getElementByIdx_x("person");
arr=eval_r(jsons);
for(var
i=0;i<arr.length;i++){
var
jsonobj = arr[i];
tr = table.insertRow(table.rows.length);
td1 = tr.insertCell(0);
td2 = tr.insertCell(1);
td3 = tr.insertCell(2);
td4 = tr.insertCell(3);
td1.innerHTML
= jsonobj.id;
td2.innerHTML
= jsonobj.name;
td3.innerHTML
= jsonobj.age;
td4.innerHTML
= jsonobj.address;
</script>
</head>
<body onload="caller.show()">
//調用java中的函數
<table width="100%"
id="person">
<tr
bgcolor="#33FFFF">
<td>id</td>
<td>name</td>
<td>age</td>
<td>address</td>
</tr>
<!-- <a onclick="window.caller.show()">click
me</a> -->
</table>
</body>
</html>