Intereting Posts
Gradle buildConfigField BuildConfig не может разрешить символ Как я могу подавать блоки NAL H.264 в Android MediaCodec для декодирования? Как настроить атрибут стиля программно в Android? Я забыл свой пароль к хранилищу ключей, и я хочу установить apk в Google Play. Что я делаю? Событие OnKeyUp в браузере Android для неязыковых языков Как включить динамик Android во время разговора, от кода? Как удалить разделительную линию в прядильщике? Веб-просмотр Android: обнаружение прокрутки Образцы API Google Vision: выберите источник CameraSource для фокусировки Предупреждение: компоновщик: app_process имеет перемещение текста. Это трата памяти и представляет угрозу безопасности. Пожалуйста исправьте. Разрешения запрещены Как округлить десятичные числа в Android Можно ли предлагать маршруты с Google Maps в приложении android2.2? Лучшая практика: передача объектов между действиями Android Android, как вы код теперь, если requery устарел? Размер поворота и количество вращающихся параметров Android Logcat

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

Solutions Collecting From Web of "Android – открыть целевые _blank ссылки в WebView с внешним браузером"

После посещения вышеуказанных ссылок я придумал этот код и надеюсь, что это поможет.

 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 и добавил новый, но установил видимость «ушел».