2014-06-20 77 views
1

沒有與薑餅分佈和 這裏所描述的addJavascriptInterface方法的錯誤: http://code.google.com/p/android/issues/detail?id=12987有沒有一種方法可以從Android的webview中調用原生java代碼,而不是使用addJavascriptInterface?

雖然有一些變通辦法像這樣的問題:

http://www.jasonshah.com/handling-android-2-3-webviews-broken-addjavascriptinterface/

或本: http://twigstechtips.blogspot.com/2013/09/android-webviewaddjavascriptinterface.html

所有這些都是部分修復,其中有一些洞。

所以我想知道是否有另一種方法來避免addJavascriptInterface方法從webview中的html調用 本地代碼。

在此先感謝!

+0

請注意,您引用的錯誤隻影響薑餅模擬器,而不是真正的設備。 – ksasq

回答

2

我希望和我相信沒有辦法調用本地代碼,期望addJavascriptInterface(),因爲這將是Android中的一大安全漏洞。沒有人應該能夠從瀏覽器調用本地代碼 - 這可能會導致許多不同的濫用行爲。

1

您可以嘗試使用WebChromeClient.onConsoleMessageconsole.log作爲原始格式的異步您的JavaScript和Java代碼之間的通信。您需要將所需的任何信息「序列化」到字符串中,並讓Java代碼解析該字符串並執行所需的任何功能。

addJavaScriptInterface類似,任何其他JavaScript代碼都可能調用console.log,因此您的Java代碼仍然不能完全「信任」調用者,但是這種方法沒有您提到的安全漏洞。

相關問題