私はJavaとJavascriptの間の通信に使用するJavascriptBridgeというクラスを持っています。ジャバスクリプトにコマンドを送信するwebView.evaluateJavascriptコールバックから値を返す方法は?
、私は単純に、この使用:
public void sendDataToJs(String command) {
webView.loadUrl("javascript:(function() { " + command + "})()");
}
を私の問題は、私はまた、JavaScriptからの応答を返す関数が必要だろうということです。私はwebView.evaluateJavascriptを試していますが、evaluateJavascriptは別のスレッドで行われるため、コールバックはスキップされます。
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を使用して試してみたが、それは同じ結果を与えます。