我相信它是同步的,但是,正如你正確地指出,沒有辦法從通話中返回一個值。丹暗示了一個解決方案...
首先,創建一個簡單的類像這樣(假設你的返回類型是一個String):
public class MyCallback {
private String returnValue;
public void setReturnValue(String s) {
returnValue = s;
}
public String getReturnValue() {
return returnValue;
}
}
它保持這一類的簡單是重要的,封裝,因爲如果你」從可能不可靠的來源重新載入HTML可能會給您的應用程序帶來安全漏洞。也就是說,不要試圖簡單地傳入你的Activity並直接使用Javascript調用方法。
然後執行JavaScript,你想給它回調的一個實例存儲結果:
WebView webView = // ... get this from somewhere
MyCallback callback = new MyCallback();
webView.addJavaScriptInterface(callback, "callback");
webView.loadURL("javascript:callback.setReturnValue(someFunction())");
System.out.println("return value is " + callback.getReturnValue());
「我試圖從Java運行一些JavaScript代碼...」在技術上是說法是不正確。 – Shahzeb
我改變措辭更加精確。 – pho0