Android webview中JavaScript与Java方法的相互调用Demo

279 阅读1分钟

阅读博客前,希望大家对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…