Webview 在 KITKAT 及更高版本上无法按预期工作

Webview does not working as expected on and above KITKAT

我正在尝试在我的应用程序的网络视图中执行 javascript。它在 kitkat 以下完美运行,但在 kitkat 和以上设备上测试应用程序时,应用程序表现得很奇怪。 它没有找到方法。这是我的 Javascript

代码片段
function callTojavaFn(verse) {
    var msg = "Calling from Java Script";
    JsHandler.forwardSelectedVerses(verse);
}

这是我的 android 片段

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                WebView.setWebContentsDebuggingEnabled(true);
                CookieManager cookies = CookieManager.getInstance();
                cookies.setAcceptThirdPartyCookies(wvVerses, true);
            }

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

        webView.evaluateJavascript(webUrl,new ValueCallback<String>() {

        @Override
        public void onReceiveValue(String value) {
               Log.d("javascript:getSelectedVerse",value);
          }
   });

这是我在 KitKat 之后的日志

这个是kitkat之前的

由于我对 webView 的经验有限;从你的代码片段中我无法确切地说出你的代码有什么问题,但我对可能发生的事情有一些想法。

我认为您的问题来自 API 中的更改,如果您希望您的应用在目标 sdk 版本 17 及更高版本上运行,请在 @JavascriptInterface 之前添加 public 方法(或 class),您希望它可用于 webview(并且您的编译器无法在 kitkat 上找到)。您可以在将 JavaScript 代码绑定到 Android 代码部分找到有关以下 link 的示例:android webview guide. This will run your code on newer versions, but you will get errors for earlier versions. If you want your app work for older and newer target sdk I would look into "Simon" answer on the following question: JavascriptInterface annotation for JELLY_BEAN and below

如果我之前的建议不起作用,我会建议 post 更多代码或查看有关新版本 Webview(从 19-kitkat 开始)更改的教程 link:migrating to target sdk 19 and higher。它描述了您在较新的 webView 中可能遇到的问题以及如何解决这些问题。