【问题标题】:WebView calling Java code in Android (inner workings of Javascript bridges)WebView 在 Android 中调用 Java 代码(Javascript 桥的内部工作原理)
【发布时间】:2016-03-18 15:37:36
【问题描述】:

我试图弄清楚 WebView 如何能够通过 addJavascriptInterface 让 javascript 代码访问 Java 代码,以及将提示和警报 javascript 函数重定向到事件处理程序(onJsPrompt、onJsAlert)。目前我所理解的是,有一种叫做JNI的机制,我们可以通过使用JNI,让JVM外部的代码可以调用某些Java功能。还有一种叫做 NPAPI 的东西,它允许在 Web 应用程序中使用插件。这两者的组合将用于允许在 WebView 中运行的 javascript 代码调用导出的 Java 类的方法(通过 addJavascriptInterface)。

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

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

非常感谢您的所有帮助!

【问题讨论】:

  • NPAPI 与移动设备上的浏览器无关

标签: android java-native-interface android-webview npapi


【解决方案1】:

它曾经像你描述的那样工作。 Web 浏览器加载了带有本机代码的 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

【讨论】:

  • 谢谢!这些是 webview 本身的实现还是 Android 上的 chrome 浏览器的实现?
猜你喜欢
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2013-11-01
  • 1970-01-01
  • 2011-08-29
相关资源
最近更新 更多