Android WebView VS 手机浏览器
Posted
技术标签:
【中文标题】Android WebView VS 手机浏览器【英文标题】:Android WebView VS Phone Browser 【发布时间】:2011-11-14 11:21:31 【问题描述】:我在android
中使用WebView
时遇到了很多奇怪的行为,我想知道为什么每部手机上安装的WebView
和Browser
之间存在如此多的差异?
例如,我开发了一些必须显示html
内容的应用程序,其中包含jquery-mobile
、flash
、javascript
、YouTube 嵌入等。所以我在WebViews
中显示这个页面时遇到了很多问题。要么他们根本不会显示,只是空白,要么视频不会播放等等。而奇怪的是,如果在手机上安装的Browser
中打开它们,它们可以正常工作。我启用了 JavaScript,我尝试了不同的 WebSettings
,我设置了 WebChromeClient
和 WebViewClient
以查找 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)中无法正常使用