WebView — создай свой браузер
Android позволяет создать собственное окно для просмотра веб-страниц или даже создать свой клон браузера при помощи элемента WebView. Сам элемент использует движок WebKit и имеет множество свойств и методов. Мы ограничимся базовым примером создания приложения, с помощью которого сможем просматривать страницы в интернете. В последних версиях используется движок от Chromium, но большой разницы в этом нет для простых задач.
Создадим новый проект MyBrowser и сразу заменим код в файле разметки res/layout/activity_main.xml:
Теперь откроем файл активности MainActivity.java и объявим компонент WebView, а также инициализируем его — включим поддержку JavaScript и укажем страницу для загрузки.
Так как приложение будет использовать интернет, необходимо установить разрешение на доступ к интернету в файле-манифесте.
Там же в манифесте модифицируем строчку для экрана, удалив заголовок из нашего приложения (выделено жирным):
Запустим приложение. В нашем распоряжении появился простейший вьювер веб-страниц, но с одним недостатком. Если вы щёлкнете на любой ссылке, то у вас автоматически запустится браузер по умолчанию и новая страница отобразится уже там. Точнее так было раньше. На новых устройствах при запуске приложения сразу открывается браузер.
Чтобы решить данную проблему и открывать ссылки в своей программе, нужно переопределить класс WebViewClient и позволить нашему приложению обрабатывать ссылки. Добавим в коде вложенный класс:
Затем в методе onCreate() определим экземпляр MyWebViewClient. Он может находиться в любом месте после инициализации объекта WebView:
Теперь в нашем приложении создан WebViewClient, который позволяет загружать любой указанный URL, выбранный в WebView, в сам контейнер WebView, а не запускать браузер. За данную функциональность отвечает метод shouldOverrideUrlLoading(WebView, String), в котором мы указываем текущий WebView и нужный URL. Возвращаемое значение true говорит о том, что мы не нуждаемся в запуске стороннего браузера, а самостоятельно загрузим контент по ссылке. В версии API 24 добавили перегруженную версию метода, учитывайте это обстоятельство.
Повторно запустите программу и убедитесь, что ссылки загружаются теперь в самом приложении. Но теперь возникла ещё одна проблема. Мы не можем вернуться к предыдущей странице. Если мы нажмём на кнопку «BACK» (Назад) на устройстве, то просто закроем своё приложение. Для решения новой проблемы нам необходимо обрабатывать нажатие кнопки «BACK». Добавляем новый метод:
Мы должны проверить, что WebView поддерживает навигацию на предыдущую страницу. Если условие верно, тогда вызывается метод goBack(), который возвращает нас на предыдущую страницу на один шаг назад. Если таких страниц набралось несколько, то мы можем последовательно вернуться к самой первой странице. При этом метод всегда будет возвращать значение true. Когда мы вернёмся на самую первую страницу, с которой начали путешествие по интернету, то вернётся значение false и обработкой нажатия кнопки BACK займётся уже сама система, которая закроет экран приложения.
Запустите приложение ещё раз. У вас появился свой собственный веб-браузер, позволяющий ходить по ссылкам и возвращаться на предыдущую страницу. Изучив документацию, вы можете оснастить приложение и другим вкусными плюшками для своего браузера.
Если вам нужно часть ссылок, ведущих на ваш сайт открывать в браузере, а локальные ссылки открывать в приложении, то применяйте условие с разными возвращаемыми значениями.
Универсальный метод, который все локальные ссылки откроет в приложении, остальные в браузере (меняем одну строчку):
А сейчас немного усложним пример, чтобы у пользователя появилась альтернатива стандартным браузерам.
Чтобы было понятнее, переделаем пример следующим образом. Создайте две активности. На первой активности разместите кнопку для перехода на вторую активность, а на второй активности разместите компонент WebView.
В манифесте прописываем у второй активности фильтр.
Код для кнопки для перехода на вторую активность.
Мы создали собственное намерение с указанием фильтра и предоставили данные — адрес сайта.
Вторая активность должна принять данные:
В фильтре для второй активности мы указали два действия.
Это означает, что любые активности (читай, приложения) могут вызвать вашу активность с мини-браузером по такому же принципу. Запустите в студии в отдельном окне любой старый проект или создайте новый и добавьте в него кнопку и пропишите тот же код, который мы использовали для щелчка кнопки.
Запустите второе приложение (первое приложение можно закрыть) и нажмите на кнопку. У вас запустится не первое приложение с начальным экраном, а сразу вторая активность с мини-браузером. Таким образом, любое приложение может запустить браузер, не зная имени класса вашей активности, а используя только строку «ru.alexanderklimov.Browser», передаваемую в Intent. При этом ваша активность с браузером должна иметь категорию по умолчанию и данные. Напомню:
Вы можете представить свою строку в виде строковой константы и сообщить всем потенциальным пользователям вашего браузера, как они могут запустить его у себя. Но в Android уже есть такая готовая константа ACTION_VIEW, которая по справке документации представляет собой следующее:
Перепишем код для кнопки у второго приложения
Что произойдёт на этот раз? Мы помним, что у нас прописано два действия, включая и android.intent.action.VIEW. А значит наше первое приложение с браузером тоже должно распознавать эту команду, когда какое-то приложение у пользователя использует этот код. На эмуляторе как минимум есть одна такая программа «Browser», и теперь к ней добавилась наша вторая активность из первого приложения. На экране появится выбор из двух приложений.
А если удалить все альтернативные браузеры и оставить только вашу программу, то и выбора не будет. Ваш браузер станет основным. И если какое-то приложение захочет запустить веб-страницу указанным способом, то откроется ваша программа.
Небольшое замечание. Если заменить последнюю строчку на такую:
То в окне выбора программы вместо верхней строки «Open with» или её локального перевода появится ваша строка. Но не это главное. Если по каким-то причинам на устройстве не окажется ни одного браузера, то данный вариант кода не вызовет краха приложения, в отличие от первоначального варианта. Поэтому используйте предложенный вариант ради надёжности.
Источник
Браузеры с поддержкой Java
Практически каждый пользователь при работе за компьютером сталкивается с необходимостью установки компонентов Java. Этот плагин активно задействован в браузерах для воспроизведения медиаконтента и запуска веб-приложений различного рода. Такая технология используется только в определенных обозревателях, куда внедрена архитектура разработки плагинов NPAPI (Netscape Plugin Application Programming Interface). В рамках сегодняшней статьи мы бы хотели рассказать о популярных браузерах, которые совместимы с Джава и поддерживают ее на текущий момент времени.
Safari
Браузер Safari выпускается с 2003 года и изначально предназначался для платформы MacOS. Спустя несколько лет появилась полноценная версия для Windows, однако в 2012 году обновления были прекращены и на этих ОС Сафари больше не обновляется. Пользователям остается только работать в старых версиях или переходить на альтернативные варианты. Преимущество даже старой сборки этого обозревателя заключается в поддержке Java и других популярных плагинов.
Благодаря применению рассматриваемого сегодня компонента Safari отлично справляется с воспроизведением видео, открытием изображений и запуском приложений. Сразу же стоит отметить, что, как и все остальные браузеры, Сафари требует установленной на компьютере Java. Только тогда взаимодействие с этим инструментом будет производиться нормально и никаких проблем с серфингом в сети возникнуть не должно.
UC Browser
Изначально мобильное приложение UC Browser позже стало выходить и для компьютеров с операционными системами Windows. Пользователям известно множество особенностей этого обозревателя, включая встроенный блокировщик рекламы и сжатие данных. Среди всех присутствующих функций выделяется и поддержка среды Java, что обеспечивает нормальное воспроизведение медиаконтента.
Помимо этого, качественное функционирование содержимого обеспечивает наличие двух движков — Chromium и Trident, поэтому вы навсегда сможете забыть о каких-либо проблемах с совместимостью представленного на сайтах материала. UC Browser, как и большинство веб-обозревателей, распространяется бесплатно и доступен для скачивания на официальном сайте.
Google Chrome
Google Chrome — один из самых популярных браузеров в мире на сегодняшний день. Компания-разработчик активно занимается не только поддержкой своего продукта, но и старается всегда развивать его. Несколько лет назад при выходе стабильной версии 45 Гугл Хром отказался от модулей Netscape Plugin Application Programming Interface, что означает прекращение поддержки Java. При желании использовать Хром с этим компонентом придется загрузить его более старую версию, поскольку в новых работа с медиаконтентом осуществляется при помощи других технологий.
Что касается взаимодействия с этим веб-обозревателем, то мнения пользователей на тот счет разделяются. Некоторых он вполне устраивает, а для других считается недостаточно функциональным и влияет на производительность компьютера из-за сильного потребления системных ресурсов. Особенно нагрузка чувствуется при активном задействовании дополнительных расширений и множества разнообразных вкладок.
Mozilla Firefox
Mozilla Firefox — еще один достаточно известный браузер, активно использующийся на разных платформах, например, он является стандартным во многих дистрибутивах Linux. До версии 52, которая вышла в марте 2017 года, Мозилла поддерживал NPAPI, но после она была вырезана, вследствие чего был убран и модуль Java. Всем желающим задействовать эту технологию в прежнем ее виде рекомендуется скачивать более старые стабильные версии.
Однако существует специальная сборка ESR, созданная специально для организаций, требующих поддержку массового развертывания. В этой версии браузера сохраняется возможность использования NPAPI, поэтому и Джава там тоже будет доступна. Определить, активна ли сейчас сборка ESR, поможет специальный пункт в меню настроек, где отображается соответствующий идентификатор.
Pale Moon
Многие обладатели слабых компьютеров сталкивались с рекомендациями по поводу использования в качестве постоянного браузера именно Pale Moon. Он отлично оптимизирован под старое железо, однако разработчикам не пришлось жертвовать общей функциональностью, чтобы достичь такого результата. Среди списка присутствующих возможностей имеется и совместимость с интересующим вас Java. Касается это всех версий, и пока производитель не думает отказываться от модулей Netscape Plugin Application Programming Interface, активно поддерживая эту технологию для сборок на любых платформах.
В Windows работа Джава в Pale Moon включается сразу же после инсталляции последней сборки компонента на компьютер, но обладателям дистрибутивов, основанных на ядре Linux, придется дополнительно добавлять библиотеки через стандартную консоль, чтобы обеспечить нормальное взаимодействие инструментов. Детально о выполнении этой процедуры написано в официальной документации к каждой платформе.
Tor Browser
Tor Browser известен многим юзерам как анонимный браузер, позволяющий производить безопасное соединение, проходящее через несколько сетевых адресов до конечной точки. Такая цель строится из активных сессий браузера и проходит не только по разным городам, но и странам. Конечно, из-за этого скорость соединения значительно падает, но надежность такого подключения выше средней. Кроме этого, в TOR без проблем открываются ссылки псевдо-доменов верхнего уровня .onion, которые не индексируются стандартными поисковиками.
Java здесь поддерживается, но многие активные юзеры отключают этот компонент или переходят на максимальный режим безопасности, где инструмент отключается самостоятельно. Дело в том, что он создает уязвимости, нарушающие общую безопасность подключения. Впрочем, это не мешает оставить Джаву включенной и перейти к выполнению необходимых задач.
Netscape Navigator
В рамках сегодняшней статьи нельзя не затронуть и Netscape Navigator, ведь именно для этого веб-обозревателя изначально были разработаны модули Netscape Plugin Application Programming Interface и впервые были созданы подключаемые плагины. Что касается функциональности этой программы, то она практически такая же, как в ранних Mozilla Firefox, поскольку те были основаны именно на этом браузере с открытым исходным кодом.
Поддержка Джава была включена во всех известных четырех версиях Netscape Navigator и функцонировала там без каких-либо сбоев. К сожалению, разработка ПО была прекращена в 2007 году, из-за чего могут возникать проблемы с совместимостью на новых сборках операционных систем. Обладателям старых компьютеров мы рекомендуем обратить внимание именно на этого представителя, чтобы хотя бы ознакомиться с его интерфейсом и принципом взаимодействия.
Epiphany (Web)
Предыдущие браузеры совместимы с платформами Linux и Windows, но Web совместим только с дистрибутивами на базе Линукс. Он по умолчанию встроен в графическую оболочку GNOME и полностью интегрируемый с окружением рабочего стола, в чем и заключается его преимущество. Конечно, для такого инструмента непременно нужна поддержка Java, имеющаяся у Линукс. Пользователю не нужно устанавливать дополнительные компоненты и выполнять настройки, ведь все и так работает сразу же после инсталляции.
Помимо этого, у Epiphany имеется огромное количество дополнительных расширений, делающих его еще более гибким и удобным. Для инсталляции этого браузера в случае его отсутствия даже не придется ничего скачивать с сайта, достаточно в консоли написать sudo apt install epiphany-browser для Linux Mint, Debian или Ubuntu. Для других дистрибутивов присутствуют TAR.GZ или RPM пакеты в пользовательских хранилищах.
Konqueror
Последним в нашем сегодняшнем списке выступит еще один веб-обозреватель для Линукс, встраиваемый в графическую оболочку KDE. Konqueror отличается от конкурентов своей модульностью. Используемая в нем технология позволяет встраивать компоненты из другого программного обеспечения, что обеспечивает свободное воспроизведение различного медиаконтента или, например, работу с текстом.
При таком наборе функций поддержка Java является обязательной. Активируется этот инструмент сразу же после установки браузера, однако при скачивании дистрибутивов обращайте внимание на сборку, поскольку сейчас часто разработчики начали отказываться от Konqueror, встраивая вместо него другие веб-обозреватели.
Браузеров с поддержкой Java существует достаточно большое количество, поскольку это востребованный инструмент, необходимый многим юзерам. Однако иногда возникают ситуации, когда в новых сборках обозревателей разработчики отказываются от поддержки модулей и Джава больше недоступна. Мы рекомендуем всегда читать документацию о нововведениях, чтобы быть в курсе всех изменений. К тому же, ничего не мешает вам использовать старую версию обозревателя при нежелании переходить на новую.
Помимо этой статьи, на сайте еще 12473 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Источник