【问题标题】:Webview does not working as expected on and above KITKATWebview 在 KITKAT 上及以上无法正常工作
【发布时间】:2015-07-24 12:53:54
【问题描述】:

我正在尝试在我的应用程序的 webview 中执行 javascript。它在 kitkat 下完美运行,但在 kitkat 及以上设备上测试应用程序时,应用程序的行为很奇怪。 它没有找到方法。这是我的 Javascript 代码 sn-p

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

这是我的 android sn-p

     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之前的

【问题讨论】:

    标签: javascript android android-webview


    【解决方案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 中可能遇到的问题以及如何解决这些问题。

    【讨论】:

    • 非常感谢这个东西对我有用。由于 developer.gogole.com 上的解决方案链接之一,我已经尝试了所有可用的解决方案。具体来说,我在从javascript访问metod tat之前添加了注释@JavascriptInterface。再次感谢
    • 没有一次您的解决方案能按预期工作。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多