您的位置:首页 > 移动开发 > Android开发

android webview用法小结2 java与javascript的交互

2015-06-04 11:09 330 查看
先提下两种方式

 方式一:

//先加载html文件,然后调用html文件中的javascript函数

webView.loadUrl("file:///android_asset/show.html");

webView.loadUrl("javascript:pushNewsData('"+strHtml+"')");   

  方式二:

//在Java代码中添加javascript的接口,然后在html文件中调用java中的对象

webView.addJavascriptInterface(strHtml, "MyContent");

先让浏览器支持javascript

[java] view
plaincopy

webView.getSettings().setJavaScriptEnabled(true);//打开就可以用js的功能

Js代码,放在asset文件夹下,也可以在服务器端,这样改变内容,只需改服务器端,客户端不用修改

[html] view
plaincopy

<!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 btn_test() {

/* 打印,logcat里的tag是Web Console */

console.log("btn_test");

}



function call_java() {

/* js调用java代码,需要接口 */

Window.interface_test.showToastFromWeb("hello i am javascript!");

}



function test_alert() {

/* 弹出对话框 */

alert("hello i am javascript!");

}



function test_confirm() {

/* 弹出带确定和取消按钮的对话框 */

var v = confirm("hello i am javascript!");

console.log("onfirm " + v);

}



function test_prompt() {

/* 弹出带输入框的对话框 */

var v = prompt("input you name!", "tom");

console.log("prompt " + v);

}



</script>

</head>

<body>

<button onclick="btn_test()">test</button>

<button onclick="call_java()">call_java</button>

<button onclick="test_alert()">test_alert</button>

<button onclick="test_confirm()">test_confirm</button>

<button onclick="test_prompt()">test_prompt</button>

<label tel:800800284>tel:8008233</label>



</body>

</html>

Java代码里

对应call_java()方法

[java] view
plaincopy

webView.addJavascriptInterface(new Object(){

public void showToastFromWeb(String msg){

showToast(msg);

}

}, "interface_test");

对应alert等方法

[java] view
plaincopy

webView.setWebChromeClient(new WebChromeClient(){



@Override

public void onProgressChanged(WebView view, int newProgress) {

//这里上一博文已提过

}



@Override

public boolean onJsAlert(WebView view, String url, String message,

JsResult result) {

// TODO Auto-generated method stub

return super.onJsAlert(view, url, message, result);

}



@Override

public boolean onJsConfirm(WebView view, String url,

String message, JsResult result) {

// TODO Auto-generated method stub

return super.onJsConfirm(view, url, message, result);

}



@Override

public boolean onJsPrompt(WebView view, String url, String message,

String defaultValue, JsPromptResult result) {

// TODO Auto-generated method stub

return super.onJsPrompt(view, url, message, defaultValue, result);

}



});

加载html

[java] view
plaincopy

// webView.loadUrl("javascript:btn_test()");

webView.loadUrl("file:///android_asset/test.html");

效果图







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: