【问题标题】:Android WebView rendered incorrectly on LG G2Android WebView 在 LG G2 上呈现不正确
【发布时间】:2015-05-08 10:39:15
【问题描述】:

我正在为我们的客户端编写一个应用程序,其中我必须向用户显示一个 WebView,这是一个由客户端提供的网站,我在其中注入 JS 以隐藏某些仅限桌面的元素。

我最初在尝试包含照片时遇到了 KitKat 的问题,因为对 KitKat 中 WebChromeClient 的更改未更新以正确处理组件。我能够通过实现位于此处的 AdvnacedWebView 并对我的项目的输入字段进行硬编码来解决该问题:https://github.com/delight-im/Android-AdvancedWebView

我现在遇到的问题是在我的 Sprint LG G2 上查看时网页呈现不正确,但在我测试过的所有其他设备(AT&T LG G3、Nexus 7 2013、Nexus 7 2012、Nexus 9 , HTC One V, 三星 Galaxy S3 Mini)

根据我基于 LogCat 的假设,WebView 似乎正在尝试调用 LG G2 的 Android KitKat 版本中未包含的方法。看起来它正在尝试调用 Android L。

LogCat:http://pastebin.com/h6mGdNsh

所以我的问题是:网页在 LG G2 上呈现不正确是否有原因,我将如何解决这个问题?

谢谢 亚当

【问题讨论】:

    标签: android android-webview


    【解决方案1】:

    AdvancedWebView 正在执行与 build 相关的检查,如下所示:

    if (Build.VERSION.SDK_INT >= 21) {
         webSettings.setMixedContentMode(allowed ? WebSettings.MIXED_CONTENT_ALWAYS_ALLOW : WebSettings.MIXED_CONTENT_NEVER_ALLOW);
    }
    

    确保您的目标 API 已为此设置适当 - 可能所有其他设备也在尝试使用 5.0+ API,但它们的回退行为不同。

    【讨论】:

    • 我的 minSdkVersion 是 14,我的 targetSdkVersion 是 22。有问题的 LG G2 在 API 19 上,尽管当我在运行 API 19 的 G3 上运行相同版本的应用程序时,它很好。我还在运行 API 17 Jelly Bean 的设备上运行它,没有问题。
    【解决方案2】:

    我意识到 WebView 将网页呈现为其桌面版本,而不是移动版本。一旦我将 WebView 的用户代理设置为已知良好的用户代理,它就会按预期工作。

    webView.getSettings().setUserAgentString("Mozilla/5.0 (Linux; Android 4.4.2) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36");

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多