Android WebView 在 LG G2 上呈现不正确

Android WebView rendered incorrectly on LG G2

我正在为我们的客户端编写一个应用程序,我必须在其中向用户显示一个 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 上错误呈现的原因,我该如何解决这个问题?

谢谢 亚当

AdvancedWebView is doing a build-依赖检查是这样的:

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

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

我意识到 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");