Android WenView中JS代码与JAVA本地代码之间交互 并传递参数
2013-07-03 18:46
447 查看
今天做项目用到了JS与本地JAVA代码交互的方法,写到这里以备后用。
先贴上代码,JAVA代码:
public void initWebView() {//初始化WebView
//初始化一个JavaScriptInterface 此接口用于 HTML中JS代码调用本地代码时使用 必须传入Context
final JavaScriptInterface myJavaScriptInterface = new JavaScriptInterface(MaxAtExamActivity.this);
v_Web = (WebView) findViewById(R.id.webview);
v_Web.getSettings().setJavaScriptEnabled(true);// 允许JS执行
//加入JavaScriptInterface接口对象 AndroidFunction 为myJavaScriptInterface 对象名称
v_Web.addJavascriptInterface(myJavaScriptInterface, "AndroidFunction");
v_Web.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);// 点击超链接的时候重新在原来进程上加载URL
return true;
}
});
}
public void loadWebUrl(String url) {
v_Web.loadUrl(url);
}
class JavaScriptInterface {
Context mContext;
JavaScriptInterface(Context c) {
mContext = c;
}
public void doWork(String webMessage) {//JS代码中调用该方法 webMessage为传入参数
final String msge = webMessage;
runOnUiThread(new Runnable() {
@Override
public void run() {
//得到参数需执行的操作
isAuthAnswer(msge);
}
});
}
}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=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
function toJavaCord()
{
var asnwerText = document.getElementById('asnwerText').value;
AndroidFunction.doWork(asnwerText);
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<label>答 案:
<input type="text" name="textfield" id="asnwerText"/>
</label>
<label>
<input name="Submit" type="submit" value="确定" onclick="javascript:return toJavaCord();" />
</label>
</form>
</body>
</html>
其中
红色框中“AndroidFunction”为java代码中的myJavaScriptInterface接口对象的索引名称,doWork()就不用说啦。asnwerText即为JS向JAVA代码所传递的参数。
先贴上代码,JAVA代码:
public void initWebView() {//初始化WebView
//初始化一个JavaScriptInterface 此接口用于 HTML中JS代码调用本地代码时使用 必须传入Context
final JavaScriptInterface myJavaScriptInterface = new JavaScriptInterface(MaxAtExamActivity.this);
v_Web = (WebView) findViewById(R.id.webview);
v_Web.getSettings().setJavaScriptEnabled(true);// 允许JS执行
//加入JavaScriptInterface接口对象 AndroidFunction 为myJavaScriptInterface 对象名称
v_Web.addJavascriptInterface(myJavaScriptInterface, "AndroidFunction");
v_Web.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);// 点击超链接的时候重新在原来进程上加载URL
return true;
}
});
}
public void loadWebUrl(String url) {
v_Web.loadUrl(url);
}
class JavaScriptInterface {
Context mContext;
JavaScriptInterface(Context c) {
mContext = c;
}
public void doWork(String webMessage) {//JS代码中调用该方法 webMessage为传入参数
final String msge = webMessage;
runOnUiThread(new Runnable() {
@Override
public void run() {
//得到参数需执行的操作
isAuthAnswer(msge);
}
});
}
}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=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
function toJavaCord()
{
var asnwerText = document.getElementById('asnwerText').value;
AndroidFunction.doWork(asnwerText);
}
</script>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<label>答 案:
<input type="text" name="textfield" id="asnwerText"/>
</label>
<label>
<input name="Submit" type="submit" value="确定" onclick="javascript:return toJavaCord();" />
</label>
</form>
</body>
</html>
其中
红色框中“AndroidFunction”为java代码中的myJavaScriptInterface接口对象的索引名称,doWork()就不用说啦。asnwerText即为JS向JAVA代码所传递的参数。
相关文章推荐
- 【unity】与Android Activity交互并调用JAVA代码传递参数
- 最最基层的ajax交互代码jquery+java之间的json跨域传递以及java的json代码返回
- Unity3D研究院之打开Activity与调用JAVA代码传递参数
- JNA支持的JAVA和本地代码之间的映射关系
- Unity3D研究院之打开Activity与调用JAVA代码传递参数
- JAVA本地方法调用(2)数组参数传递
- Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)
- Java与React Native之间传递参数
- Native层与java层之间的数据传递代码实例
- java中两个界面之间传递参数的示例+
- 代码总结:Fragment之间传递参数和Fragment返回上一个Fragment传回数据
- Unity3D研究院之打开Activity与调用JAVA代码传递参数
- android中利用webview调用网页上的js代码 Java代码调用js并传递参数
- Android中WebView载入本地HTML代码并实现Java与JavaScript交互的例子
- JAVA本地方法调用(3)对象参数传递
- [编写高质量代码:改善java程序的151个建议]建议53 注意方法中传递的参数要求
- java web中jsp与servlet之间的跳转和传递参数
- Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)
- Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)
- 两段交换代码轻松理解Java参数传递机制