Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何控制webview中的链接_Android - Fatal编程技术网

Android 如何控制webview中的链接

Android 如何控制webview中的链接,android,Android,我的webview应用程序有问题。我想在默认浏览器中打开所有外部链接,但在webview中保持内部链接打开。 实际上,我已经尽了最大努力,但是内部和外部链接都在默认浏览器中打开,而不是在默认浏览器中仅打开外部链接 下面是我的代码。请给我一个解决方案。提前谢谢 public class MainActivity extends AppCompatActivity { public WebView myWebView; @Override protected void onCreate(B

我的webview应用程序有问题。我想在默认浏览器中打开所有外部链接,但在webview中保持内部链接打开。 实际上,我已经尽了最大努力,但是内部和外部链接都在默认浏览器中打开,而不是在默认浏览器中仅打开外部链接

下面是我的代码。请给我一个解决方案。提前谢谢

public class MainActivity extends AppCompatActivity {
    public WebView myWebView;

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

    WebView myWebView = findViewById(R.id.webview);
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    myWebView.setWebViewClient(new WebViewClient(){

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (Uri.parse(url).getHost().equals("https://www.Example.com")) {
                    return false;
                }
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(intent);
                return true;
            }

    });
    myWebView.loadUrl("https://www.Example.com");
}

}

请检查此代码,它将帮助您

String scheme = data.getScheme(); // "http"
String host = data.getHost(); // "twitter.com"
从下面构建一个字符串并进行比较将达到您的要求

String weburl  = scheme+host;

@Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
    Uri data = Uri.parse(url);
    String scheme = data.getScheme(); // "http"
    String host = data.getHost(); // "twitter.com"
            String weburl  = scheme+host;
    if (weburl.equals("https://www.Example.com")) {
                return false;
            }
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;
        }
这应该做到:

        mWebView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                String url = request.getUrl().toString();
                if (url.startsWith("your-domain") || url.contains("your-domain")) {
                    // internal links... (open in same view)
                    view.loadUrl(url);       
                } else {
                    // external links... (open in default browser)
                    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                }
                return true;
            }
        });

先生,你能给我更多的启发吗。我在应用程序开发方面不是很好。请告诉我如何以及在哪里放置代码。谢谢。它仍然无法打开webview中的内部链接。此代码更好,但我不想指定外部域。我只想用默认浏览器打开每个外部链接。请你把代码修改一下好吗。非常感谢,先生,你真的让我高兴。事实上,我已经连续两天在寻找解决方案。主席先生,[getUrl]表明了一些注意事项:调用需要API级别21当前最小值为19:andoid.webkit.WebResourceRequestgetUrl。你觉得怎么样?再次感谢你。