Android Webview,使网站在不同的浏览器中打开

当我点击我的应用程序中的链接,他们打开在同一个web视图。 我希望他们在外部浏览器中打开。

我做到了这一点:

myWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return false; } }); 

返回false使得它在同一个webview中加载,并且返回“true”当单击链接时不会发生任何事情。

我看了其他问题,但似乎其他人都有完全相反的问题。 (他们希望链接加载在他们的应用程序)

我究竟做错了什么?

Solutions Collecting From Web of "Android Webview,使网站在不同的浏览器中打开"

在你的WebViewClient

 @Override public boolean shouldOverrideUrlLoading(final WebView view, final String url){ if (loadUrlExternally){ Uri uri = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); return true; //the webview will not load the URL } else { return false; //the webview will handle it } } 

这样它就像其他应用程序一样打开一个新的浏览器窗口。

这是一个更完整的答案。 注意:我从一个片段调用,因此在startActivity()之前调用getActivity()

  @Override public boolean shouldOverrideUrlLoading(final WebView view, final String url) { //check if the url matched the url loaded via webview.loadUrl() if (checkMatchedLoadedURL(url)) { return false; } else { getActivity().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); return true; } /** * used to check if the loaded url matches the base url loaded by the fragment(mUrl) * @param loadedUrl * @return true if matches | false if doesn't or either url is null */ private boolean checkMatchedLoadedURL(String loadedUrl) { if (loadedUrl != null && mUrl != null) { // remove the tailing space if exisits int length = loadedUrl.length(); --length; char buff = loadedUrl.charAt(length); if (buff == '/') { loadedUrl = loadedUrl.substring(0, length); } // load the url in browser if not the OTHER_APPS_URL return mUrl.equalsIgnoreCase(loadedUrl); } return false; }