私はこのコードを持っていますが、それが機能するためではなく、ウェブビューで開いており、私が欲しいのは、リンクがデフォルトのブラウザで開いている私のウェブサイトに属していないということです。何か案が?ありがとう
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);
}
}
}
問題は、リンクを開くためにデフォルトの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;
}
}
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;
}
});
これは非常に甘くて短い解決策です
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
context.startActivity(i);
return true;
}