Откройте внешние ссылки в браузере с веб-браузером 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);
}
}
}
Ответы
Ответ 1
Проблема заключается в том, что вам нужно отправить Intent в веб-браузер по умолчанию, чтобы открыть ссылку. То, что вы делаете, это просто вызвать другой метод в вашем веб-браузере для обработки ссылки. Всякий раз, когда вы хотите, чтобы другое приложение обрабатывало что-то, вам нужно использовать Intents. Вместо этого попробуйте использовать этот код.
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;
}
}
Ответ 2
Поскольку уровень 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;
}
});
Ответ 3
Вот очень сладкое и короткое решение
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
context.startActivity(i);
return true;
}
Ответ 4
Ниже у меня очень простое решение.
Для примера загрузите facebook.com на веб-просмотр и весь другой URL-адрес в браузере →
- Настройка onCreate
webView.loadUrl("http://m.facebook.com");
webView.setWebViewClient(new MyAppWebViewClient());
Сделайте внутренний класс.
Открытый класс MyAppWebViewClient расширяет WebViewClient {
// handling external links as intents
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if( Uri.parse(url).getHost().endsWith("facebook.com") ) {
return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
return true;
}
}
Ответ 5
Вопрос новичка: куда мне поместить этот код?
@Override public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
context.startActivity(i);
return true;
}
Я получаю много протестов в Android-студии. возможно, нужно добавить дополнительный код?
Ответ 6
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if((String.valueOf(request.getUrl())).contains("paramedya.com.tr")) {
view.loadUrl(String.valueOf(request.getUrl()));
} else {
Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl());
view.getContext().startActivity(intent);
}
return true;
}
});