Android与JavaScript方法相互调用

本文介绍如何在Android应用中通过Java代码调用JavaScript函数,并利用WebView组件实现页面的动态加载,包括页面初始化、数据展示及JSON数据的解析与传递。

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

Activity代码

public class JSandJavaActivity extends Activity {
<wbr><wbr><wbr><br><wbr>WebView <span style="CoLor: #ff0000">webView</span>= null;<br><wbr>Handler handler = new Handler();//<span style="CoLor: #ff0000">进行异步通讯</span><br><wbr><wbr><wbr> @Override<br><wbr><wbr><wbr> public void onCreate(Bundle savedInstanceState) {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> super.onCreate(savedInstanceState);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> setContentView(R.layout.main);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> webView = (WebView) this.findViewById(R.id.webview);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> webView.getSettings<span style="CoLor: #ff0000">().setJavaScriptEnabled(true);//只有设为true才能与javascript进行通讯</span><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> webView.<span style="CoLor: #ff0000">addJavascriptInterface</span>(new Object(){//<span style="CoLor: #ff0000">让javascript能调用java中的方法</span><br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>public void <span style="CoLor: #ff0000">show</span>(){<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>handler.post(new Runnable(){<br><wbr><wbr><wbr><wbr><wbr>@Override<br><wbr><wbr><wbr><wbr><wbr>public void run() {<br><wbr><wbr><wbr><wbr><wbr><wbr>//webView.loadUrl("javascript:pageini()");<br><wbr><wbr><wbr><wbr><wbr><wbr>webView<span style="CoLor: #ff0000">.loadUrl</span>("javascript:personlist('"+query()+"')");/<span style="CoLor: #ff0000">/调用javascript函数</span><br><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>});<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> }, "<span style="CoLor: #ff0000">caller</span>");<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> String path="<a>file:///android_asset/test.html</a>";<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> webView.loadUrl(path<span style="CoLor: #ff0000">);//载入页面</span><br><wbr><wbr><wbr> }<br><wbr><wbr><wbr><br><wbr><wbr><wbr> public static String query<span style="CoLor: #ff0000">(){//构造json对象</span><br><wbr><wbr><wbr><wbr>JSONArray array = null;<br><wbr><wbr>try {<br><wbr><wbr><wbr>JSONObject object = new JSONObject();<br><wbr><wbr><wbr>object.put("id", 1);<br><wbr><wbr><wbr>object.put("name","lybeen");<br><wbr><wbr><wbr>object.put("age", 23);<br><wbr><wbr><wbr>object.put("address", "HZ");<br><wbr><wbr><wbr><br><wbr><wbr><wbr>JSONObject object2 = new JSONObject();<br><wbr><wbr><wbr>object2.put("id", 2);<br><wbr><wbr><wbr>object2.put("name","lybeen2");<br><wbr><wbr><wbr>object2.put("age", 24);<br><wbr><wbr><wbr>object2.put("address", "SH");<br><wbr><wbr><wbr><br><wbr><wbr><wbr>array = new JSONArray();<br><wbr><wbr><wbr>array.put(object);<br><wbr><wbr><wbr>array.put(object2);<br><wbr><wbr>} catch (JSONException e) {<br><wbr><wbr><wbr>// TODO Auto-generated catch block<br><wbr><wbr><wbr>e.printStackTrace();<br><wbr><wbr>}<br><wbr><wbr><wbr><wbr>return array.toString();<br><wbr><wbr><wbr> }<br> }</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

HTML代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script language="javascript">
<wbr>function personlist(jsons){<wbr><wbr><wbr><wbr><wbr><wbr>//传json对象</wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><wbr>var table=document.getElementByIdx_x("person");</wbr></wbr>
<wbr><wbr>var arr=eval_r(jsons);</wbr></wbr>
<wbr><wbr>for(var i=0;i&lt;arr.length;i++){</wbr></wbr>
<wbr><wbr><wbr>var jsonobj = arr[i];</wbr></wbr></wbr>
<wbr><wbr><wbr>var tr = table.insertRow(table.rows.length);</wbr></wbr></wbr>
<wbr><wbr><wbr>var td1 = tr.insertCell(0);</wbr></wbr></wbr>
<wbr><wbr><wbr>var td2 = tr.insertCell(1);</wbr></wbr></wbr>
<wbr><wbr><wbr>var td3 = tr.insertCell(2);</wbr></wbr></wbr>
<wbr><wbr><wbr>var td4 = tr.insertCell(3);</wbr></wbr></wbr>
<wbr><wbr><wbr>td1.innerHTML = jsonobj.id;</wbr></wbr></wbr>
<wbr><wbr><wbr>td2.innerHTML = jsonobj.name;</wbr></wbr></wbr>
<wbr><wbr><wbr>td3.innerHTML = jsonobj.age;</wbr></wbr></wbr>
<wbr><wbr><wbr>td4.innerHTML = jsonobj.address;</wbr></wbr></wbr>
<wbr><wbr>}</wbr></wbr>
<wbr>}</wbr>
</script>
</head>
<body onload="caller.show()"><wbr> //调用java中的函数</wbr>
<table width="100%" id="person">
<wbr>&lt;tr bgcolor="#33FFFF"&gt;<br><wbr><wbr><wbr><wbr>&lt;td&gt;id&lt;/td&gt;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> &lt;td&gt;name&lt;/td&gt;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> &lt;td&gt;age&lt;/td&gt;<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> &lt;td&gt;address&lt;/td&gt;<br><wbr><wbr><wbr> &lt;/tr&gt;<br><wbr><wbr><wbr> &lt;!-- &lt;a onclick="<span style="CoLor: #ff0000">window.caller.show()"&gt;</span>click me&lt;/a&gt; --&gt;<br> &lt;/table&gt;<br> &lt;/body&gt;<br> &lt;/html&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值