2016-03-18 110 views
0

我想弄清楚WebView如何通过addJavascriptInterface将JavaScript代码访问给Java代码,以及将提示和警告JavaScript函数重定向到事件处理程序(onJsPrompt,onJsAlert)。到目前为止我所了解的是,有一种称为JNI的机制,我们可以通过使用JNI使JVM之外的代码可以调用某些Java功能。还有一种称为NPAPI的功能,允许在Web应用程序中使用插件。这两者的组合将用于允许在WebView中运行的JavaScript代码调用导出的Java类的方法(通过addJavascriptInterface)。WebView在Android中调用Java代码(Javascript桥梁的内部工作)

但是,我无法看到提示和警报功能如何重定向。它与我上面描述的类似吗?如果是这样的话?

此外,它看起来像NPAPI在Chromium中已弃用。这是否意味着它不再在WebView中使用,如果是这样,它现在使用什么?

非常感谢所有的帮助!

+0

NPAPI是不相关的浏览器上 –

回答

0

它用来像你描述的那样工作。网络浏览器使用本地代码加载NPAPI插件。然后该插件通过JNI调用Java。

您可以了解更多有关在这里: https://code.google.com/p/chromium/codesearch#search/&q=addJavascriptInterface&sq=package:chromium&type=cs 然后再深入到addPossiblyUnsafeJavascriptInterface(),

https://code.google.com/p/chromium/codesearch#chromium/src/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java&q=addPossiblyUnsafeJavascriptInterface&sq=package:chromium&type=cs

+0

谢谢你的移动设备!这些是webview本身的实现还是Android上的chrome浏览器? –