【问题标题】:Not able to open url in webview无法在 webview 中打开 url
【发布时间】:2015-04-16 20:04:07
【问题描述】:

当我加载 url 时,它会显示一个选择浏览器的窗口。例如。 - 如果我想打开“http://www.facebook.com/”,那么它会显示选择 Chrome 或默认浏览器的窗口。我无法理解为什么会这样。

实际上在下面的代码中,如果我成功地从服务器获取了 url,那么我会隐藏一个抱歉的图像并显示 webview。否则我会显示 webview 并隐藏抱歉的图片。

webView = (WebView) findViewById(R.id.webView);
            webView.setVisibility(View.VISIBLE);
            ImageView img = (ImageView) findViewById(R.id.image);
            img.setVisibility(View.GONE);
            webView.setInitialScale(1);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.getSettings().setLoadWithOverviewMode(true);
            webView.getSettings().setUseWideViewPort(true);
            webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
            webView.setScrollbarFadingEnabled(false);
            webView.loadUrl("http://www.facebook.com/");

【问题讨论】:

    标签: android webview


    【解决方案1】:

    尝试添加这一行

    webView.setWebViewClient(new WebViewClient());

    【讨论】:

    • 谢谢它的工作。但是为什么我们要添加这一行。其实我想知道如果我们添加这一行会发生什么..
    • 这是一个版本问题。如果您在 3.0 以上运行应用程序,则无需编写此行,但是当您在旧版本中运行应用程序时,此行会起到作用,因为如果您未指定 webview 客户端,则浏览器将被视为旧版本中的默认 webclient。如果您真的喜欢解决方案,您也可以投票以感谢答案。
    • 将此问题作为已回答;)
    【解决方案2】:

    像这样添加WebViewClient

    public class myWebClient extends WebViewClient
    {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }
    
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub
    
            view.loadUrl(url);
            return true;
    
        }
    }
    

    您应该覆盖您的shouldOverrideUrlLoading() 方法。

    在您的 UI 活动中添加此行

     web.setWebViewClient(new myWebClient());
    

    它会解决你的问题。希望对您有所帮助!

    【讨论】:

      【解决方案3】:

      首先,将http 替换为https,然后为了做到这一点,您需要首先创建一个扩展WebViewClient 类并覆盖onPageFinished 方法的新java 类,如下所示:

       public class CustomWebViewClient extends WebViewClient
      {      
           @Override
          public void onPageFinished(WebView view, String url) {
      
              //https://www.facebook.com/dialog/permissions.request  
              //actually  works for me, but I put the URL you say is coming up    
              //blank in there instead, whatever works for you:
              if(url.startsWith("https://www.facebook.com/dialog/oauth")){
                 String redirectUrl = "http://www.yourdomain.com/MyApp/";
                  view.loadUrl(redirectUrl);
                 return;
             }
              super.onPageFinished(view, url);
          }
      }
      

      其次,只需将其添加到您的 WebView:

      webview.setWebViewClient(new CustomWebViewClient());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-23
        • 2022-09-23
        • 1970-01-01
        • 2016-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多