我在WebView
中使用Android
时遇到了很多奇怪的行为,我想知道为什么WebView
和Browser
之间存在很多差异安装在每部手机上?
例如,我开发了一些必须显示HTML
内容的应用,其中包含jquery-mobile
,flash
,javascript
,嵌入了YouTube等等。所以我在WebViews
内显示这些页面时遇到了很多问题。要么它们根本不显示,只是空白,视频将无法播放等等。奇怪的是,如果在手机上安装的Browser
中打开,它们可以正常工作。我启用了JavaScript,我尝试了不同的WebSettings
,我设置了WebChromeClient
和WebViewClient
寻找javascript错误......但没有任何效果。
所以我得出的结论是WebView
组件与手机上安装的Browser
应用程序完全不同。我认为每个制造商都会自己制作Browser
来支持尽可能多的页面,而WebView
仍然是标准版,包含在Android SDK
中。
我是对的吗?或者还有其他原因/解释? 感谢。
编辑: @ondoteam建议的所有内容都已启用并暂时设置。我不再有那些网站的引用,无论如何都是内部的。
答案 0 :(得分:13)
本文概述了您对制造商之间库存浏览器差异的猜测,这绝对是正确的: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:
loading flash files (.swf) webview in android
祝你好运,看起来像设备,Android版本等很多变量。并且会在试用/错误时持续存在。
答案 1 :(得分:8)
WebView
受到限制。您应该致电setWebChromeClient
和家人,以获得不错的浏览体验。此外,不要忘记setJavaScriptEnabled()
和其他类似的东西。对不起,我的简洁......我认为你不需要例子。
http://developer.android.com/reference/android/webkit/WebView.html
答案 2 :(得分:8)
股票浏览器和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浏览器上。 最新的Android 4X SDK也会出现此行为。 这意味着android默认浏览器会显着调整webkit / webview代码以显示任何URL
答案 3 :(得分:1)
您有没有检查过这个问题:jquery-mobile loaded into an android WebView
可能是您使用了错误的库。无论如何都要检查。