Android-webview和js脚本语言交互的时候怎么获取js方法的返回值

如题所述

方法:

1、通过webview访问js脚本

2、js脚本再调用webview中的java函数把结果返回

示例代码:

通过本地的webview打开脚本页面。

调用步骤

1、设置webview支持脚本

webSettings.setJavaScriptEnabled(true);

2、打开脚本页面

mWebView.loadUrl("file:///android_asset/demo.html");//这里打开该app的asset目录下的demo.html,里面含有wave函数脚本

3、调用脚本

mWebView.loadUrl("javascript:wave()");//调用打开页面中的wave函数

4、webview中建立js能够访问

 mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");//js可以通过demo访问到DemoJavaScriptInterface 类中的方法。
 final class DemoJavaScriptInterface {
        DemoJavaScriptInterface() {
        }
        public void clickOnAndroid(String result) {
             System.out.prinltn("返回的结果"+result);           
        }
    }

5、js访问webview方法

<script language="javascript">
        function wave() {
            alert("1");
            window.demo.clickOnAndroid('结果1');//返回结果,调用java方法
        }
    </script>

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-01-07
您好,很高兴能帮助您
Android中webview和js之间的交互
1.android中利用webview调用网页上的js代码。
Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示:
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("javascript:test()");
2. 网页上调用android中java代码的方法
在网页中调用java代码,需要在webview控件中添加javascriptInterface。如下所示:
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
Toast.makeText(Test.this, "测试调用java", Toast.LENGTH_LONG).show();
}
});
}
}, "demo");
在网页中,只需要像调用js方法一样,进行调用就可以
<div id='b'><a onclick="window.demo.clickOnAndroid()">b.c</a></div>
3. Java代码调用js并传参
首先需要带参数的js函数,如function test(str),然后只需在调用js时传入参数即可,如下所示:
mWebView.loadUrl("javascript:test('aa')");
4.Js中调用java函数并传参
首先一样需要带参数的函数形式,但需注意此处的参数需要final类型,即得到以后不可修改,如果需要修改其中的值,可以先设置中间变量,然后进行修改。如下所示:
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid(final int i) {
mHandler.post(new Runnable() {
public void run() {
int j = i;
j++;
Toast.makeText(Test.this, "测试调用java" + String.valueOf(j), Toast.LENGTH_LONG).show();
}
});
}
}, "demo");
然后在html页面中,利用如下代码<div id='b'><a onclick="window.demo.clickOnAndroid(2)">b.c</a></div>,
即可实现调用

你的采纳是我前进的动力,
记得好评和采纳,答题不易,互相帮助,本回答被提问者和网友采纳