Java Android Studio-WebView-在WebView内部打开内部链接,在默认浏览器中打开外部链接

Java Android Studio-WebView-在WebView内部打开内部链接,在默认浏览器中打开外部链接,java,android,webview,Java,Android,Webview,我正在尝试将WebView添加到我的应用程序中,但只允许在我的应用程序中打开与我的域(www.example.com)连接的链接。默认情况下,不包含我的域名(example.com)的所有其他链接都应在浏览器外部打开。使用stockoverflow中的信息,我准备了以下代码,但它仍然不起作用,并且在我的应用程序中打开了所有链接,尽管创建了shouldOverrideUrlLoading(“if”(Uri.parse(url.getHost().contains)(“example.com”))。

我正在尝试将WebView添加到我的应用程序中,但只允许在我的应用程序中打开与我的域(www.example.com)连接的链接。默认情况下,不包含我的域名(example.com)的所有其他链接都应在浏览器外部打开。使用stockoverflow中的信息,我准备了以下代码,但它仍然不起作用,并且在我的应用程序中打开了所有链接,尽管创建了shouldOverrideUrlLoading(“if”(Uri.parse(url.getHost().contains)(“example.com”))。有人能帮助解决这个问题吗?我尝试了很多示例,但仍然找不到修复它的方法,但我觉得这可能只是代码中的一个小错误

public class MainActivity extends AppCompatActivity {

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    WebView myWebView = (WebView) findViewById(R.id.www);
    myWebView.setWebViewClient(new WebViewClient());
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    myWebView.loadUrl("http://www.example.com");}

public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (Uri.parse(url).getHost().contains("example.com")) {
        return false;
    }

    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    startActivity(intent);
    return true;
}

决心!我不确定代码是否100%正确,但工作正常,可能对某些人有用(我不是作者,我只是使用了stackoverflow的一些示例并将它们放在一起):


您似乎没有从任何地方调用
shouldOverrideUrlLoading
方法
public class MainActivity extends AppCompatActivity {

private WebView webView;
private ProgressDialog progress;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setContentView(R.layout.activity_main);
    WebView myWebView = (WebView) findViewById(R.id.www);
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    myWebView.setWebViewClient(new MyWebViewClient());
    myWebView.loadUrl("https://www.example.uk");
}

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().contains("example.com")) {
            return false;
        }
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
        return true;
    }
}