Webview在KITKAT之上并没有按预期工作

时间:2015-07-24 12:53:54

标签: javascript android android-webview

我试图在我的应用中在webview中执行javascript。它在kitkat下工作得很好,但是当在kitkat及以上设备上测试应用程序时,app会表现得很奇怪。 它找不到方法。这是我的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之后的日志记录

Log of after KitKat

这是在kitkat之前

before kitkat

1 个答案:

答案 0 :(得分:1)

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

我认为您的问题来自API的更改,如果您希望您的应用在目标sdk版本17上工作,并在您想要的公共方法(或类)之前添加 @JavascriptInterface 使用webview(以及你的编译器在kitkat上找不到的)。您可以在将JavaScript代码绑定到Android代码部分的以下链接中找到示例:android webview guide。这将在较新版本上运行您的代码,但您将在早期版本中遇到错误。如果您希望您的应用适用于较旧和较新的目标sdk,我会在以下问题中查看“Simon”回答:JavascriptInterface annotation for JELLY_BEAN and below

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