有没有办法从Android中的webview调用本机java代码,而不是使用addJavascriptInterface?

时间:2014-06-20 16:05:40

标签: android android-webview

Gingerbread发行版和addJavascriptInterface方法存在错误 这里描述: http://code.google.com/p/android/issues/detail?id=12987

虽然这个问题有一些解决方法:

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

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

所有这些都是部分修复,其中有一些洞。

所以我想知道是否有另一种方法可以避免调用addJavascriptInterface方法 来自webview内部html的本机代码。

提前致谢!

2 个答案:

答案 0 :(得分:2)

我希望并且我相信没有办法调用本机代码期望addJavascriptInterface(),因为这将是Android中的大安全漏洞。没有人能够从浏览器调用本机代码 - 这可能会导致许多不同的滥用。

答案 1 :(得分:1)

您可以尝试使用WebChromeClient.onConsoleMessageconsole.log作为JavaScript和Java代码之间异步通信的粗略形式。您需要将所需的任何信息“序列化”到字符串中,并让Java代码解析该字符串并执行您需要的任何功能。

addJavaScriptInterface类似,任何其他JavaScript都可以调用console.log,因此您的Java代码仍然无法完全“信任”调用者,但这种方法没有你提到的安全漏洞。