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 手机浏览器的主要内容,如果未能解决你的问题,请参考以下文章

如何在WebView Android中过滤手机和其他Web链接

使用VS2017开发APP中使用VUE.js开发遇到打包出来的android文件 在低版本的android(4.3)中无法正常使用

android webview如何去除网页边缘白边?想其他浏览器一样?

iOS调试Webview

【调试】Android WebView调试

android webview