Android-открыть целевые пустые ссылки в WebView с помощью внешнего браузера
Я создаю WebView
, который отображает веб-сайт. Сайт содержит ссылки без атрибута target="_blank"
и некоторые с ним.
Мне нужно открыть ссылки с target
, определенными во внешнем стандартном браузере устройств, и те, которые без него внутри WebView.
Я использую WebViewClient
, и я пробовал использовать эту функцию, но все равно все мои ссылки открываются в WebView
:
Альтернатива 1:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}
Альтернатива 2:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
Кто-нибудь знает, как я могу открыть пустые ссылки извне?
Спасибо!
PS: чтобы избежать недопонимания: я не могу использовать этот подход, потому что единственный способ, которым я знаю, что ссылка должна быть открыта внешне, - это атрибутtarget
.3 ответа:
После посещения приведенных выше ссылок, я придумываю этот код и надеюсь, что это поможет.
wv.getSettings().setSupportMultipleWindows(true); wv.setWebChromeClient(new WebChromeClient() { @Override public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, android.os.Message resultMsg) { WebView.HitTestResult result = view.getHitTestResult(); String data = result.getExtra(); Context context = view.getContext(); Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(data)); context.startActivity(browserIntent); return false; } });
Я столкнулся с той же проблемой. Я хотел открыть страницы моих веб-сайтов внутри приложения и отдохнуть все страницы должны быть открыты в браузере по умолчанию. Я использовал один прием. Если URL содержит имя моего веб-сайта, то я открыл его в WebView и оставил все веб-сайты, открытые в браузере по умолчанию.
Найдите ниже код, я надеюсь, что это будет полезно для всех, кто столкнулся с такими проблемами.
private class MyBrowser extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.contains("/internetgeeks")) { browser.loadUrl(url); return false; } else { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); startActivity(intent); return true; } } }
У меня тоже есть такая же проблема, и теперь я нашел решение.
Вам также необходимо использовать WebChromeClient.Вы можете видеть это и это. И Вы можете установить WebViewClient на новый WebView и переопределить метод shouldOverrideUrlLoading, затем вы можете получить url-адрес и делать здесь все, что хотите. Если вы не устанавливаете WebViewClient, я думаю, что он тоже должен работать. В моем случае я хочу получить url-адрес, поэтому я устанавливаю WebViewClient на новый WebView.
Кстати, если вы удалите старое веб-представление, а когда вы вернетесь из браузера, веб-представление будет пустым. Поэтому я сохранил веб-представление и добавил новое, но установил видимость "пропало".