3
我有一個本機應用程序,它有一個WebView。 我一個類添加到網頁視圖,以便能夠從JavaScript調用它像這樣:將JavaScript匿名函數作爲參數傳遞給WebView
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);
這工作,但如果用戶希望在一個匿名函數來傳遞我有點憋屈而不是一個正常的命名函數。 I.E.
<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是不確定的。
正確的方式做任何想法,因爲我覺得我迷路了錯誤的方式嗎?
不知道我得到它。回調已經是sleepAlert中的變量了嗎? – 2012-01-09 20:48:46
更新後給你舉例 – kabuko 2012-01-09 21:10:45
工作得很好。萬分感謝! – 2012-01-09 21:42:17