Webview:如何在EXTERN浏览器中打开特殊URL?

时间:2017-10-18 20:44:40

标签: android webview

我正在使用Android Studio处理我的WebVeew。它的工作正常,但我正在寻找一种不在我的浏览器中打开特殊URL的方法。

例如,当我的用户点击webview中的注册链接时,我想用外部浏览器而不是我的应用程序打开这个URL。其他网址仍应在我的WebClient中打开。

我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    wv = (WebView) findViewById(R.id.webView);
    progressBar = (ProgressBar) findViewById(R.id.progressBar);


    wv.getSettings().setJavaScriptEnabled(true);
    wv.setFocusable(true);
    wv.setFocusableInTouchMode(true);
    // Set Render Priority to High
    wv.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
    wv.getSettings().setJavaScriptEnabled(true);

    wv.setWebViewClient(new HomeActivity.myWebViewClient());
    wv.loadUrl(URL);

}
public class myWebViewClient extends WebViewClient {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        CookieSyncManager.getInstance().sync();
        progressBar.setVisibility(View.GONE);
    }
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        progressBar.setVisibility(View.VISIBLE);
    }
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return false;
    }
}

2 个答案:

答案 0 :(得分:0)

也许您正在寻找this

答案 1 :(得分:0)

我找到了解决方案。在这种情况下,我让它在外部浏览器中打开所有网址,除了我的主页" URL"和登录页面。 对于有同样问题的人:

@Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // all links  with in ur site will be open inside the webview
        //links that start ur domain example(http://www.example.com/)
        String URL_LOGIN = "https://kummerchat.com/index.php/information/login4app";
        if (url != null && url == URL || url == URL_LOGIN || url.startsWith(URL_LOGIN)){
            return false;
        }
        // all links that points outside the site will be open in a normal android browser
        else  {
            view.getContext().startActivity(
                    new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
            return true;
        }
    }