【问题标题】:WebView 2.2 vs 3.1WebView 2.2 与 3.1
【发布时间】:2012-06-11 18:52:03
【问题描述】:

Android 2.2 和 3.1 上的 WebView 类有什么不同的行为吗?

这里有一些信息,我在两台不同的设备上测试同一个应用程序,第一个是 Android 2.2,另一个是 3.1

  • 应用的目标是 2.1
  • 我要访问的页面是一个 ASP.net 页面

在 2.2 上运行

  • shouldOverrideUrlLoading 正常调用
  • onPageStarted 和 onPageFinished 被多次调用
  • 当页面结束加载时,来自 webview 的 onNewPicture 被调用一次

在 3.1 上运行

  • shouldOverrideUrlLoading 没有被调用,只有 webView.load(url) 就足以完成同样的工作
  • onPageStarted 和 onPageFinished 被调用一次
  • 没有调用来自 webview 的 onNewPicture

我的问题是。我需要在页面加载时显示一个对话框,但我不知道如何处理这些差异。

如果我在 onPageStarted 上创建对话框并在 onPageFinished 上关闭它,它将在 2.2 上显示和关闭不止一次,但在 3.1 上它会正常工作

否则,如果我在 shouldOverrideUrlLoading 上创建对话框并在 onNewPicture 上关闭它,它将在 2.2 上正常工作,但在 3.1 上它甚至不会出现。

【问题讨论】:

    标签: android webview


    【解决方案1】:

    我使用了以下内容:

    Android WebView progress bar

    要在加载时在 webview 上放置进度条,您可以实现相同的方法,当加载的百分比小于 100% 时显示视图,当加载百分比为 100% 时将其关闭。我为 Android >= 3.0 类型的设备实现了这个。

    【讨论】:

    • 我无法使用 WebChromeClient,因为我需要显示页面并且用户将无法通过其他链接导航。 WebChromeClient 在屏幕顶部为您提供一个栏,用户可以更改链接。使用默认的 WebViewClient 我有我上面提到的不同行为。
    • 不正确,我的应用程序中运行着标准的 WebView 对象,顶部没有链接栏!!!我已经实现了自己的进度计量。现在的问题是我的应用程序是 3.0 及更高版本!
    • 重点是:我需要将 WebChromeClient 和 WebViewClient 设置为具有我想要的类似方法。我试图使用一个或另一个,而不是两者。所以,我在 WebChromeClient 的 onProgressChange 上使用 activity.setprogress 做了一个进度条。我真正的尝试是显示一个带有进度条的对话框,但我可以使用这种方法。非常感谢!
    猜你喜欢
    • 2012-07-03
    • 1970-01-01
    • 2020-06-18
    • 2020-05-27
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    相关资源
    最近更新 更多