阅读博客前,希望大家对webview有一定了解,此博客只解决JavaScript和Java之间的相互调用。 意义:JavaScript和java语言彼此可以利用对方的方法,彼此可以互传数据
test.html代码:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
function writeHello(){
document.write("<h1>Hello World!</h1>");
}
</script>
<h1>头部</h1>
</head>
<body >
<h2 id="h2">体部</h2>
</body>
</html>
1、webview调用html中的JavaScript代码
(1) 首先保证webview支持JavaScript
webView.getSettings().setJavaScriptEnabled(true);
(2)加载静态本地页面地址或网页地址
webView.loadUrl("file:///android_asset/test.html");
(3)调用test.html中writeHello方法 webView对象直接调用loadUrl("javascript:js方法名");
webView.loadUrl("javascript: writeHello()");
好,保证以上三步就可以实现在webview中调用JavaScript中的方法
2、html调用java中的方法
(1) 首先创建一个类JsToJava.java,并实现JS需要的逻辑test(), test()作为js要调用的方法需用@JavascriptInterface标注
(2)通过webView.addJavascriptInterface(new JsToJava(), "jsToJava") 注意这个方法是向html映射JsToJava类的对象jsToJava,使js的window内置对象中产生对象jsToJava对象
(3)在html的script中通过window.jsToJava.test() 完成调用,
<head> <meta charset="utf-8">
<script type="text/javascript">
function writeHello(){
<--调用jsToJava对象的test()方法!-->
window.jsToJava.test();
}
</script>
<h1>头部</h1>
</head>
3、完整示例
(1)webview给js传参:webView.loadUrl("javascript: writeHello('111')";
(2)js调用java方法并传参:window.jsToJava.test("abc");
在java调用的js方法中再调用java对象的方法可完成数据的java运算处理-->js运算处理-->java的运算过程
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
function writeHello(ms){
window.jsToJava.test("abc"+ms);//调用java的方法 “window + java对象 + java对象方法”
document.write("<h1>Hello World!</h1>");
}
</script>
<h1>头部</h1>
</head>
<body >
<h2 id="h2">体部</h2>
</body>
</html>
案例Demo下载地址:download.csdn.net/detail/nmya…