Android-открыть целевые пустые ссылки в WebView с внешним браузером
построить WebView
который отображает веб-сайт. Сайт содержит ссылки без и некоторые с ним.
мне нужно открыть ссылки с 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: чтобы избежать недопонимания: я не могу использовать этот подход потому что единственный способ, которым я знаю, что ссылка должна быть открыта externallly, это .
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.
кстати, если вы удалите старый webview, то когда вы вернетесь из браузера, webview будет пустым. Поэтому я сохранил webview и добавил новый, но установил видимость "ушел".