그래서 Java와 Javascript 사이에서 통신하는 데 사용하는 JavascriptBridge이라는 클래스가 있습니다. webView.evaluateJavascript 콜백에서 값을 반환하는 방법은 무엇입니까?
는 단순히 이것을 사용, 자바 스크립트에 명령을 보내려면public void sendDataToJs(String command) {
webView.loadUrl("javascript:(function() { " + command + "})()");
}
내 문제는 내가 또한 자바 스크립트에서 응답을 반환하는 기능을해야한다는 것입니다. 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를 사용하여 시도했지만,이 같은 결과를 제공합니다.
public void getDataFromJs(String command, WebView webView) {
webView.evaluateJavascript("(function() { return " + command + "; })();", new ValueCallback<String>() {
@Override
public void onReceiveValue(String s) {
returnDataFromJs(s);
}
});
}
public returnDataFromJs(String data) {
// Do something with the result.
}
방법이 없습니다 :