【问题标题】:Android WebView VS Phone BrowserAndroid WebView VS 手机浏览器
【发布时间】: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 建议的所有内容均已启用并在当时设置。我不再有对那些网站的引用,反正这些都是内部的。

【问题讨论】:

    标签: android android-webview android-browser


    【解决方案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 中使用本地资源。
        猜你喜欢
        • 1970-01-01
        • 2011-12-08
        • 1970-01-01
        • 1970-01-01
        • 2015-03-17
        • 1970-01-01
        • 2017-03-27
        • 1970-01-01
        • 2011-11-15
        相关资源
        最近更新 更多