web-dev-qa-db-ja.com

Android webviewを使用してブラウザで外部リンクを開きます

私はこのコードを持っていますが、それが機能するためではなく、ウェブビューで開いており、私が欲しいのは、リンクがデフォルトのブラウザで開いている私のウェブサイトに属していないということです。何か案が?ありがとう

private class CustomWebViewClient extends WebViewClient {
        @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
              if(url.contains("message2space.es.vu")){
                view.loadUrl(url);
                return true;
            }else{
                return super.shouldOverrideUrlLoading(view, url);
            }

            }
        }
32
Jaumesv

問題は、リンクを開くためにデフォルトのWebブラウザーに Intent を送信する必要があることです。あなたがしているのは、リンクを処理するためにWebviewで別のメソッドを呼び出すだけです。別のアプリで何かを処理する場合は、インテントを使用する必要があります。代わりにこのコードを試してください。

private class CustomWebViewClient extends WebViewClient {
        @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
              if(url.contains("message2space.es.vu")) {
                view.loadUrl(url);
              } else {
                Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                startActivity(i);
              }
              return true;
            }
        }
76
onit

APIレベル24 shouldOverrideUrlLoading(WebView view, String url)は非推奨です。

最新のソリューション:

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl());
            view.getContext().startActivity(intent);
            return true;
        }
    });
12
Hativ

これは非常に甘くて短い解決策です

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    context.startActivity(i);
    return true;
}
4
Anand Savjani