如何从webView.evaluateJavascript回调返回值?
2022-09-03 06:43:58
所以我有一个名为JavascriptBridge的类,我用它来在Java和Javascript之间进行通信。
要将命令发送到javascript,我只需使用以下命令:
public void sendDataToJs(String command) {
webView.loadUrl("javascript:(function() { " + command + "})()");
}
我的问题是,我还需要一个从Javascript返回响应的函数。我尝试使用webView.evaluateJavascript,但它跳过了回调,因为valueJavascript是在另一个线程上完成的。
public String getDataFromJs(String command, WebView webView) {
String data = null;
webView.evaluateJavascript("(function() { return " + command + "; })();", new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
Log.d("LogName", s); // Print "test"
// data = s; // The value that I would like to return
}
});
return data; // Return null, not "test"
}
对方法的调用:
String result = getDataFromJs("test", webView); // Should return "test" from the webView
我也尝试过使用@JavascriptInterface,但它给出了相同的结果。