Откройте внешние ссылки в браузере с веб-браузером 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); } } }
- Как сохранить: активный стиль css после нажатия элемента
- Редактирование гиперссылок и якорей в PDF с помощью ITextSharp
- Scrapy: Следуйте ссылке, чтобы получить дополнительные данные элемента?
- html ссылки не работают (с использованием base href)
- Удалить упорное подчеркивание ссылки
- Facebook share link - можете ли вы настроить текст сообщения?
- Как сделать кнопку похожим на ссылку?
- Как добавить гиперссылку в JLabel
- Изменить цвет текста в тексте TextView и щелкнуть?
- Как создать прямую ссылку на любую коробку fancybox
- Что такое синтаксис RTF для гиперссылки?
- jQuery отключить ссылку
- Как создать ссылки в текстовом клиенте?
Проблема в том, что вам нужно отправить 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; } }
Поскольку 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; }