一、Android原生方法返回值给JavaScript
1、定义Java接口类:在Android中,首先需要创建一个Java类,并使用@JavascriptInterface
注解来标识可以被JavaScript调用的方法,这个类通常包含一个或多个方法,这些方法将在WebView中被JavaScript调用。
2、添加接口到WebView:通过webView.addJavascriptInterface(Object obj, String interfaceName)
方法,将定义好的Java接口类添加到WebView中,这样,JavaScript就可以通过指定的接口名称来调用Java方法。
3、在JavaScript中调用Java方法:在JavaScript代码中,通过window.interfaceName.methodName()
的方式调用Java方法,并获取返回值,这个返回值可以是任何Java支持的数据类型,如整数、字符串等。
4、示例代码:
Java代码:
import android.webkit.JavascriptInterface; public class MyJavaScriptInterface { @JavascriptInterface public String getAndroidVersion() { return Build.VERSION.RELEASE; } }
webView.addJavascriptInterface(new MyJavaScriptInterface(), "Android");
JavaScript代码:
var androidVersion = Android.getAndroidVersion(); console.log(androidVersion);
二、JavaScript函数返回值给Android
1、定义JavaScript函数:在HTML页面中定义一个JavaScript函数,该函数将返回一个值(可以是任何数据类型)。
2、在Android中调用JavaScript函数:在Android代码中,使用webView.evaluateJavascript(String script, ValueCallback<String> resultCallback)
方法来调用JavaScript函数,这个方法接受两个参数:要执行的JavaScript代码和一个回调接口,用于处理JavaScript函数的返回值。
3、处理返回值:在回调接口的onReceiveValue
方法中处理JavaScript函数的返回值,这个返回值将是JavaScript函数执行的结果。
4、示例代码:
HTML代码:
<script type="text/javascript"> function greet(name) { return "Hello, " + name + "!"; } </script>
Android代码:
webView.evaluateJavascript("greet('World')", new ValueCallback<String>() { @Override public void onReceiveValue(String value) { System.out.println("JavaScript 返回值: " + value); } });
步骤 | 描述 | Java代码 | JavaScript代码 |
定义Java接口类 | 创建一个带有@JavascriptInterface 注解的Java类,定义可被JS调用的方法 |
public class MyJavaScriptInterface { @JavascriptInterface public String getAndroidVersion() { return Build.VERSION.RELEASE; } } |
无 |
添加接口到WebView | 使用webView.addJavascriptInterface 方法将Java接口类添加到WebView中 |
webView.addJavascriptInterface(new MyJavaScriptInterface(), "Android"); |
无 |
在JS中调用Java方法 | 在JavaScript中使用window.interfaceName.methodName() 格式调用Java方法 |
var androidVersion = Android.getAndroidVersion(); |
无 |
定义JS函数 | 在HTML中定义一个返回值的JavaScript函数 | function greet(name) { return "Hello, " + name + "!"; } |
无 |
在Android中调用JS函数 | 使用webView.evaluateJavascript 方法调用JS函数,并处理返回值 |
webView.evaluateJavascript("greet('World')", new ValueCallback
|
无 |
1、问:如何在Android中调用JavaScript函数并获取其返回值?
答:在Android中,可以通过webView.evaluateJavascript
方法来调用JavaScript函数,并通过回调接口ValueCallback<String>
来获取返回值,具体实现时,需要将JavaScript函数的调用语句作为第一个参数传递给evaluateJavascript
方法,并将回调接口作为第二个参数,在回调接口的onReceiveValue
方法中,可以处理JavaScript函数的返回值。
2、问:如何将JavaScript函数的返回值传递给Android中的多个方法或变量?
答:在Android中,如果需要将JavaScript函数的返回值传递给多个方法或变量,可以在回调接口ValueCallback<String>
的onReceiveValue
方法中进行相应的处理,可以将返回值存储在一个全局变量中,或者将其作为参数传递给其他方法,需要注意的是,由于onReceiveValue
方法是在非UI线程中执行的,因此如果需要在UI线程中更新界面或进行其他操作,需要使用runOnUiThread
方法来切换到UI线程。