【发布时间】:2012-01-09 19:52:20
【问题描述】:
我有一个本机应用程序,其中有一个 WebView。 我向 WebView 添加了一个类,以便能够像这样从 JavaScript 调用它:
webView.addJavascriptInterface(new JavascriptInterface(webView, handler), "Android.JSI");
然后我从 JavaScript 调用 JavaScriptInterface 类。我的 HTML/JavaScript 看起来像:
<input type="button" value="Sleep Alert" onclick="sleepAlert(sleepAlertCallbackSuccess, sleepAlertCallbackFail, 'Hi Sleep Alert');" />
function sleepAlert(callBackSuccess, callBackFailure, message)
{
window.Android.JSI.sleepAlert(callBackSuccess.name, callBackFailure.name, message);
}
function sleepAlertCallbackSuccess(message)
{
alert("success: " + message);
}
function sleepAlertCallbackFail(message)
{
alert("fail: " + message);
}
然后我像这样回调到 JavaScript:
js = "javascript:" + callbackSuccess + "('" + message + "')";
webView.loadUrl(js);
这行得通,但是如果用户想要传入匿名函数而不是普通的命名函数,我就会坚持下去。即。
<input type="button" value="Anonymous call back" onclick="sleepAlert(function(message) { alert(message); }, sleepAlertCallbackFail, 'anonymous sleep alert');" />
当我将它传递给我的 Java 类时
public void sleepAlert(final String callbackSuccess, String callbackFail, final String message)
它说 callbackSuccess 未定义。
当我觉得我走错了路时,有什么正确的方法吗?
【问题讨论】:
标签: javascript android android-webview