如何在 Android 的 WebView 的外部浏览器和应用内打开链接

How to open links both in an external browser and in-app within a WebView for Android

我正在尝试创建两个链接以在我的应用程序的 WebView 内部打开,以及其他在任何默认浏览器中外部打开的链接。我看过之前的问题和答案,但 none 似乎有效,我认为解决方案可能已过时?

如能就如何最好地实现这一目标提出任何建议,我们将不胜感激。在应用程序内打开链接工作正常,它只是获取链接以在适用的外部浏览器中打开。也许某种 class 或 url 参数检查?到目前为止,我还没有成功。

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);
        webSettings.setDomStorageEnabled(true);
        myWebView.loadUrl("https://website.com/");
        myWebView.setWebViewClient(new WebViewClient());
    }

    @Override
    public void onBackPressed() {
        if (myWebView.canGoBack()) {
            myWebView.goBack();
        } else {
            super.onBackPressed();
        }
    }
}

你可以这样做

webView.setWebViewClient(new WebViewClient() {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if(wantToOpenExternal){
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.setData(Uri.parse(url));
                    String title = "Select a browser";
                    Intent chooser = Intent.createChooser(intent, title);
                    startActivity(chooser);
                    return true;//cancel the current load
                }
                return false;//continue the current load
            }
        });