2016-03-18 77 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瀏覽器? –