我正在为我们的客户编写一个应用程序,我必须向用户显示一个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上错误地呈现网页,我将如何解决此问题?
由于 亚当
答案 0 :(得分:0)
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,但其回退行为不同。
答案 1 :(得分:0)
我意识到WebView将网页呈现为桌面版,而不是移动版。一旦我将WebView的用户代理设置为已知良好的用户代理,它就按预期工作。
webView.getSettings()。setUserAgentString(“Mozilla / 5.0(Linux; Android 4.4.2)AppleWebKit / 537.36(KHTML,类似Gecko)版本/ 4.0 Chrome / 30.0.0.0 Mobile Safari / 537.36”);