【问题标题】:Android WebView sometimes shows the browser choice screenAndroid WebView 有时会显示浏览器选择屏幕
【发布时间】:2012-07-30 16:43:59
【问题描述】:

在创建我的活动时,我正在触发一个加载处理程序(同时显示一个微调器),除此之外,在该处理程序代码中,我在三个私有 WebView 对象上调用 loadURL。

这样做的目的是预先缓存这些网页,然后根据按钮触摸事件显示每个网页。实际加载和显示工作正常,除了有时(还看不到模式)我(或我的测试人员)无缘无故地获得浏览器选择屏幕(例如 Chrome / Firefox)。

所以我的第一个问题是什么会导致这种情况,以及如何防止它发生?

否则您将如何执行以下操作:

  1. 预缓存三个网页的结果(简单的 HTML、没有图像的表格等)。
  2. 依赖于按钮触摸显示网页在屏幕布局中的结果(每次布局相同,因此当按钮 2 被触摸时,其对应的网页将替换前一个)。

【问题讨论】:

    标签: android webview android-webview


    【解决方案1】:

    从不喜欢回答我自己的问题,但因为唯一的答案与问题无关。

    问题似乎是由重定向引起的,正在加载的网页实际上并没有重定向它,但服务器正在执行来自子域的内部重定向。我用下面的代码解决了这个问题。

    this.wvBasic.setWebViewClient(new WebViewClient() {
        private String pendingUrl;
    
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            if (pendingUrl == null) {
                pendingUrl = url;
            }
        }
    
        @Override
        public void onPageFinished(WebView view, String url) {
            if (!url.equals(pendingUrl)) {
                Log.d(TAG, "Detected HTTP redirect " + pendingUrl + "->" + url);
                pendingUrl = null;
            }
        }
    });
    this.wvBasic.getSettings().setJavaScriptEnabled(false);
    

    【讨论】:

      【解决方案2】:

      一个简单的解决方案是:

      // Force links and redirects to open in the WebView instead of in a browser
      mWebView.setWebViewClient(new WebViewClient());
      

      来源:https://developer.chrome.com/multidevice/webview/gettingstarted

      【讨论】:

        【解决方案3】:

        这是完全正常的行为。您创建了一个intent,操作系统正在搜索具有正确intent-filter 的活动来处理该startActivity(intent)。由于有更多应用程序可以处理您的意图(在您的情况下是更多浏览器),因此操作系统为您提供了从这些活动中进行选择的可能性。

        现在,我检查了this 线程,它似乎是您正在寻找的信息。根据documentation,可以retrieve a set of activities that should be presented to the user as similar options。如果您能够过滤这些活动,以便您的应用使用内置浏览器(保证安装在所有设备上),那么您就可以开始了。

        【讨论】:

        • 我实际上并没有使用 webview 触发意图。它们作为现有 LinearLayout 视图的子视图动态添加。在触摸按钮时,相关的 WebView 作为子项添加到 LinearLayout(首先删除了现有的子项)。添加 WebView 的行为似乎有时会触发选择屏幕。
        • 有时是什么意思?
        • 这是一个我发现很难复制的错误。您可以使用该应用程序一次选择三个按钮中的每一个(并查看相关的网络视图)。但下一次它会告诉你浏览器的选择。这发生在几部手机上,尽管所有手机都在运行 ICS>
        • 启动浏览器选择的 URL 是否重定向到另一个 URL?
        • 很可能是这种情况。
        猜你喜欢
        • 1970-01-01
        • 2013-08-25
        • 1970-01-01
        • 1970-01-01
        • 2017-03-27
        • 1970-01-01
        • 1970-01-01
        • 2013-12-13
        • 2016-12-24
        相关资源
        最近更新 更多