【问题标题】:How to open a link in a browser that was clicked in a WebView in Android [duplicate]如何在浏览器中打开在 Android 的 WebView 中单击的链接 [重复]
【发布时间】:2014-01-04 06:50:12
【问题描述】:

我有一个加载到 Android 片段中的 web 视图。当用户点击 webview 中加载的网页上的链接时,我希望在我的应用程序之外的 Android 上的默认浏览器中加载新页面。任何想法如何做到这一点?谢谢!

到目前为止我所拥有的:

FrameLayout layout = new FrameLayout(context);

WebView webView = new WebView(getActivity());
webView.setBackgroundColor(Color.TRANSPARENT);
webView.loadUrl(InvestBetterURL);
webView.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url){
      return false;
    }
    @Override
    public void onPageStarted (WebView view, String url, Bitmap favicon)
    {
        view.setVisibility(View.GONE);
    }

    @Override
    public void onPageFinished (WebView view, String url)
    {
        view.setVisibility(View.VISIBLE);
    }

});

layout.addView(webView);

【问题讨论】:

    标签: java android eclipse android-webview


    【解决方案1】:

    shoudlOverrideUrlLoading 更改为true。检查链接: http://developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading(android.webkit.WebView, java.lang.String)

    更新:

    private class CustomWebViewClient extends WebViewClient {
            @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                  if(url.contains("google.com")) {
                    view.loadUrl(url);
                  } else {
                    Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    startActivity(i);
                  }
                  return true;
                }
            }
    

    【讨论】:

    • 感谢您的回复!我不希望它从外部加载,除非用户尝试离开已在 WebView 中打开的 URL。这不是让它总是在外部加载 URL 吗?
    • 是的。我误解了这个问题。您将需要根据 url 发送一个意图。我会更新我的答案
    • 如果对您有帮助,请接受并关闭问题。谢谢
    猜你喜欢
    • 1970-01-01
    • 2014-03-12
    • 2011-07-26
    • 2015-12-09
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    相关资源
    最近更新 更多