使用WebView中的外部浏览器打开App和外部URL中的所有网站URL?

时间:2018-01-07 15:15:03

标签: android

我有这个代码,但不是因为它有效,它在webview中保持打开,我想要的是链接不属于我的网站在默认浏览器中打开。任何的想法?谢谢 这是我的MainActivity.java

package club.moviestreet.www.webviewapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {
    private WebView mywebView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mywebView = (WebView) findViewById(R.id.webview);
        WebSettings webSettings= mywebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        mywebView.loadUrl("http://moviestreet.club/");
        // Line of Code for opening links in app
        mywebView.setWebViewClient(new WebViewClient());
    }

    //Code For Back Button
    @Override
    public void onBackPressed() {
        if(mywebView.canGoBack())
        {
            mywebView.goBack();
        }

        else
        {
            super.onBackPressed();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您需要 shouldOverrideUrlLoading WebViewClient

当要在当前WebView中加载新URL时,让主机应用程序有机会接管控件。如果未提供WebViewClient,则默认情况下WebView将要求活动管理器为URL选择正确的处理程序。如果提供了WebViewClient,返回true m eans 主机应用程序处理网址,而返回false表示当前WebView处理网址

替换

mywebView.setWebViewClient(new WebViewClient());

有了这个:

        mywebView.setWebViewClient(new WebViewClient() {

            @SuppressWarnings("deprecation")
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (!url.startsWith("http://moviestreet.club/")) {
                    Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    startActivity(i);
                    return true;
                }
                return false;
            }
        });