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的本机代码。
提前致谢!
答案 0 :(得分:2)
我希望并且我相信没有办法调用本机代码期望addJavascriptInterface()
,因为这将是Android中的大安全漏洞。没有人能够从浏览器调用本机代码 - 这可能会导致许多不同的滥用。
答案 1 :(得分:1)
您可以尝试使用WebChromeClient.onConsoleMessage
和console.log
作为JavaScript和Java代码之间异步通信的粗略形式。您需要将所需的任何信息“序列化”到字符串中,并让Java代码解析该字符串并执行您需要的任何功能。
与addJavaScriptInterface
类似,任何其他JavaScript都可以调用console.log
,因此您的Java代码仍然无法完全“信任”调用者,但这种方法没有你提到的安全漏洞。