Android WebView VS 手机浏览器

Posted

技术标签:

【中文标题】Android WebView VS 手机浏览器【英文标题】:Android WebView VS Phone Browser 【发布时间】:2011-11-14 11:21:31 【问题描述】:

我在android 中使用WebView 时遇到了很多奇怪的行为,我想知道为什么每部手机上安装的WebViewBrowser 之间存在如此多的差异?

例如,我开发了一些必须显示html 内容的应用程序,其中包含jquery-mobileflashjavascript、YouTube 嵌入等。所以我在WebViews 中显示这个页面时遇到了很多问题。要么他们根本不会显示,只是空白,要么视频不会播放等等。而奇怪的是,如果在手机上安装的Browser 中打开它们,它们可以正常工作。我启用了 JavaScript,我尝试了不同的 WebSettings,我设置了 WebChromeClientWebViewClient 以查找 javascript 错误......但没有任何效果。

所以我得出结论,WebView 组件与手机上安装的Browser 应用程序完全不同。我认为每个制造商都会制作自己的Browser 以支持尽可能多的页面,而WebView 仍然是标准的,包含在Android SDK 中。

我说的对吗?或者还有其他原因/解释? 谢谢。

编辑:@ondoteam 建议的所有内容均已启用并在当时设置。我不再有对那些网站的引用,反正这些都是内部的。

【问题讨论】:

【参考方案1】:

股票浏览器和 WebView 不同。使用所有调整,如

    WebView browser;

    browser.clearFormData();
    browser.clearHistory();
    browser.clearCache(true);

    browser.getSettings().setAppCacheEnabled(true);
    browser.getSettings().setDatabaseEnabled(true);
    browser.getSettings().setDomStorageEnabled(true);
    browser.setWebChromeClient(new WebChromeClient());

它仍然无法正确加载高分辨率图像,Android 浏览器可以很好地加载这些图像。 在普通安卓浏览器上完全显示的 webview 屏幕上只能看到部分图像。 使用最新的 Android 4X SDK 也可以观察到这种行为。 这意味着 android 默认浏览器会显着调整 webkit/webview 代码以显示任何 url

【讨论】:

【参考方案2】:

本文概述了您对制造商之间库存浏览器差异的猜测,这绝对是正确的:5 reality checks every team needs before working on Android webkit

...确实会引起麻烦和神秘/难以诊断/解决问题。

就您的WebView 实施问题而言:

jquery-mobile 的版本可能是一个问题jquery-mobile loaded into an android WebView 如果您使用的是jquery.mobile-1.0.1.min.js,您可能想尝试未压缩的jquery.mobile-1.0.1.js

还有 Flash :-/ 祝你好运: Screen blinking when using a webview with flash

Flash in WebView not working on Android 3.2

Flash video not displaying in WebView for Android 3.0.1

用于加载 SWF:

Load an SWF into a WebView

loading flash files (.swf) webview in android

祝你好运,设备、Android 版本等似乎有很多变数。并且需要通过试验/错误来持久化。

【讨论】:

很棒的文章。非常感谢:D 文章链接失效。 @Raanan 感谢您指出这一点!似乎该博客的所有内容都被炸毁了。我已经添加了它的 archive.org 副本,现在可以使用。再次感谢。 @TryTryAgain 很抱歉,但还是坏了 @ItaiHanski 我假设您说的是唯一不是 Stack Overflow 链接的链接?而且,它没有损坏,它是一个网络存档链接...按预期工作:web.archive.org/web/20120311012317/http://www.erikyuzwa.com/…【参考方案3】:

你检查过这个问题吗:jquery-mobile loaded into an android WebView

可能是您使用了错误的库。无论如何都要检查一下。

【讨论】:

【参考方案4】:

WebView 默认是受限的。您应该致电setWebChromeClient 和家人,以获得良好的浏览体验。另外,不要忘记setJavaScriptEnabled() 和其他类似的东西。对不起,我的简短...我认为您不需要示例。

http://developer.android.com/reference/android/webkit/WebView.html

【讨论】:

网页浏览受限?设置WebChromeClient如何改善浏览体验?它仅用于处理 JavaScript 对话框、网站图标、标题、进度等。我认为这不会影响 WebView 中是否加载网页。 你好。我可以使用示例 URL 吗?我的英语不是很好,也许“restricted”不是最好的词。我的意思是默认情况下 WebView 旨在显示基本 HTML 并与您的应用程序交互,但是,例如,您可以调整它以使用 setPluginsEnabled() 显示 FLASH。顺便说一句,我总是在 WebView 中使用本地资源。

以上是关于Android WebView VS 手机浏览器的主要内容,如果未能解决你的问题,请参考以下文章