Лучшие браузеры для Android. Пишем полноценный браузер под Aндроид Как создать свой браузер для android
Изучать программирование под Андроид я начал не так давно. После того, как Eclips выдал мой первый Hello Word, сразу захотелось большего: возникло много планов и грандиозных идей. Одной такой идеей было написание своего Браузера. Думаю, у многих начинающих программистов возникало такое желание. Вот какие требования были мной поставлены и что получилось в итоге.
- Программа должна открывать ссылки глобальной сети, свободно переходить по страничкам вперёд и назад;
- Иметь возможность скачивать файлы и загружать обратно в сеть;
- Создавать закладки и сохранять их;
- Иметь возможность загружать ссылки, отправленные с других приложений;
- Должна быть кнопка домашней страницы, меню с различными настройками и т.д.
В общем, полноценный браузер своими руками. Воплотим это в код.
Программа написана на основе стандартного webview, входящего в Android. В качестве стартовой страницы использую Яндекс, это дело вкуса. В качестве основного Activity будет MainActivity.
Первым делом задаём разметку xml файла -activity_main.xml. В качестве главного контейнера используем LinearLayout - в него заворачиваем ProgressBar для отображения процесса загрузки. Далее создаём ещё один контейнер LinearLayout - в него заворачиваем наш Webview и FrameLayout (его используем для растягивания воспроизводимого видео на весь экран).
Посмотреть код
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
Начнём писать код в MainActivity
Полный код MainActivity.
Посмотреть полный код
Import java.io.File;
import android.R.menu;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DownloadManager;
import android.app.DownloadManager.Request;
import android.app.KeyguardManager;
import android.app.SearchManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Parcelable;
import android.os.PowerManager;
import android.preference.PreferenceManager;
import android.provider.MediaStore;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.webkit.ConsoleMessage;
import android.webkit.DownloadListener;
import android.webkit.ValueCallback;
import android.webkit.WebBackForwardList;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;
import android.widget.SearchView;
import android.widget.Toast;
import android.graphics.Bitmap;
import android.webkit.URLUtil;
public class MainActivity extends Activity {
//Логическая переменная для статуса соединения
Boolean isInternetPresent = false;
ConnectionDetector cd;
private WebChromeClient.CustomViewCallback mFullscreenViewCallback;
private FrameLayout mFullScreenContainer;
private View mFullScreenView;
private WebView mWebView;
String urload;
int cache = 1;
SharedPreferences sPref;
final Activity activity = this;
public Uri imageUri;
private static final int FILECHOOSER_RESULTCODE = 2888;
private ValueCallback
Проект можно скачать
Давайте создадим новое приложение - браузер для android устройств, своими руками, это будет интересно, и кода будет не очень много.
Приложение-браузер для android
Запустим android studio и создадим новый проект, application name My Site, company domain по своему усмотрению, я вписал домен сайта сайт. жмем Next, на следующей вкладке оставляем все без изменения, жмем next, далее уже выбрана Empty Activity , ее и оставим, затем в последней вкладке изменим Layout Name с activity_main на main, и нажмем финиш.
Android Studio подготовит файлы проекта, это займет некоторое время. В главном окне будет открыты два файла, main.xml и MainActivity.java , начнем работать в последнем. Изменим extended AppCompactActivity на Activity, сохранимся.
Добавление разрешений в манифест
Затем откроем файл AndroidManifest.xml и добавим после первой секции пользовательское разрешение user-permission ,
что бы наше приложение имело доступ в интернет. Сохраним и закроем AndroidManifest.xml.
Перейдем в файл Main.xml , он находится по пути res/layout/main.xml, удалим строку android:text="Hello Word!" полностью, изменим TextView на WebView, из свойств основного слоя RelativeLayout уберем ненужные отступы (paddingBottom, paddingLeft, paddingRight,paddingTop).
Для WebView добавим свойство android:id="@+id/webView",изменим android:layout_width="wrap_content" и android:layout_height="wrap_content" на android:layout_width="match_parent" и android:layout_height="match_parent", для того, что бы наш элемент WebView был на весь экран.
Кодим логику на Java
С файлом main.xml мы закончили, перейдем к MainActivity.java . Добавим переменную wv типа WebView , присвоим ей элемент, найдя его с помощью функции findViewById(), опишем настройки wv, в частности разрешим в WebView выполнять java скрипты, укажем адрес загрузки сайта в наш браузер, я для примера запущу Яндекс, применив функцию loadUrl("http://ya.ru").
public class MainActivity extends Activity { WebView wv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); wv = (WebView)findViewById(R.id.webView); WebSettings settings = wv.getSettings(); settings.setJavaScriptEnabled(true); wv..setWebViewClient(new WebViewClient()); }
Так же ниже напишем обработку нажатия кнопки назад на устройстве.
@Override public void onBackPressed(){ if(wv.canGoBack()){ wv.goBack(); }else{ super.onBackPressed(); } }
Запуск приложения в эмуляторе
Нажмем кнопку Start, это зеленый треугольник на панели инструментов AndroidStudio , запустится наш эмулятор, и если все сделано правильно, через некоторое время в браузере запустится поиск Яндекс, можно понажимать на виртуальную клавиатуру и что-то поискать, все работает хорошо.
Закроем программу, не закрывая сам эмулятор, нажав на красный прямоугольник, это Stop вместо Start, изменим адрес на произвольный, я «пропиарю» свой сайт "https://сайт",
нажму сохранить и снова запущу программу, на этот раз все произойдет быстрее, поброжу по сайту, в разделе Программирование для андроид есть статьи и видео как установить и настроить AndroidStudio , сделать эмулятор android и простые примеры программ .
Полный текст AndroidManifest.xml
Полный текст main.xml
Полный текст MainActivity.java
package ru.maxfad.mysite; import android.app.Activity; import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends Activity { WebView wv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); wv = (WebView)findViewById(R.id.webView); WebSettings settings = wv.getSettings(); settings.setJavaScriptEnabled(true); wv..setWebViewClient(new WebViewClient()); } @Override public void onBackPressed(){ if(wv.canGoBack()){ wv.goBack(); }else{ super.onBackPressed(); } } }
В этом видео подробно показано как создать приложение-браузер для android устройств:
В этом уроке:
Пишем простой браузер
На прошлом уроке мы увидели, что если вызвать Intent с action = ACTION_VIEW и data = Uri- объект с http -адресом, то запускается браузер и отображает содержимое страницы по этому http-адресу. Мы можем самостоятельно сделать простейший браузер, который будет реагировать на такой Intent и просто отобразит страницу. Для этого надо настроить Intent Filter и использовать компонент WebView .
На первом экране приложения у нас будет кнопка, отправляющая Intent. На втором экране будет WebView.
Создадим проект:
Project name
: P0321_SimpleBrowser
Build Target
: Android 2.3.3
Application name
: SimpleBrowser
Package name
: ru.startandroid.develop.p0321simplebrowser
Create Activity
: MainActivity
Рисуем main.xml
android:layout_width ="fill_parent"
android:layout_height ="fill_parent"
android:orientation ="vertical" >
На экране просто кнопка
Кодим MainActivity.java:
package
Import
android.app.Activity;
import
android.content.Intent;
import
android.net.Uri;
import
android.os.Bundle;
import
android.view.View;
import
android.view.View.OnClickListener;
Public class
MainActivity
extends
Activity
{
/** Called when the activity is first created. */
@Override
public
void
onCreate
(Bundle savedInstanceState
) {
setContentView
(R.layout.main
)
;
(findViewById
(R.id.btnWeb
))
.setOnClickListener
(new
OnClickListener
() {
@Override
public
void
onClick
(View v
) {
startActivity
(new
Intent
(Intent.ACTION_VIEW, Uri.parse
("http://www.ya.ru"
)))
;
}
})
;
}
}
Код немного непривычен. Обратите внимание я нигде не описываю объект класса Button . Метод findViewById возвращает View , и это View поддерживает метод setOnClickListener , который я вызываю. А в методе setOnClickListener я создаю объект, реализующий интерфейс OnClickListener и в нем пишу код в onClick . Также я создаю объект Intent не отдельно, а прямо в методе startActivity . Кода меньше получилось, чем обычно. Может быть вам подойдет такой вариант.
Создадим второе Activity. Сначала layout-файл browser.xml :
android:layout_height ="match_parent"
android:orientation ="vertical" >
android:layout_width ="match_parent"
android:layout_height ="match_parent" >
На экране компонент WebView .
Создаем BrowserActivity.java :
package ru.startandroid.develop.p0321simplebrowser;
Import
android.app.Activity;
import
android.net.Uri;
import
android.os.Bundle;
import
android.webkit.WebView;
Public class BrowserActivity extends Activity {
@Override
protected
void
onCreate
(Bundle savedInstanceState
) {
super
.onCreate
(savedInstanceState
)
;
setContentView
(R.layout.browser
)
;
WebView webView =
(WebView
)
findViewById
(R.id.webView
)
;
Uri data = getIntent
()
.getData
()
;
webView.loadUrl
(data.toString
())
;
}
}
Определяем WebView , читаем data из Intent и передаем строку в WebView .
Теперь пропишем Activity в манифесте . К нему нам надо будет добавить Intent Filter , в нем указать action = ACTION_VIEW . А для data мы видим несколько параметров, используем Scheme = http .
Это значит, что Uri объект в Intent должен содержать http-адрес.
Не забываем про Category = Default . Label для BrowserActivity укажите, например, MyBrowser .
Также в манифесте надо добавить Uses Permission = android.permission.INTERNET на вкладке Permissions . Чтобы система дала приложению доступ в интернет.
Все сохраним и запустим приложение. Жмем кнопку и видим выбор: система предлагает нам на выбор системный браузер и наш ,только что сделанный. Т.е. Intent c запросом на просмотр http-адреса нашел в системе два Activity, которые в своих Intent Filter заявили, что умеют отображать http-адреса.
Выбираем наше MyBrowser и видим страницу.
Мы увидели, что Activity в наших приложениях могут обрабатывать не только наши придуманные action, но и системные . И, тем самым, создавать альтернативу системным приложениям.
Но, как вы понимаете, мы запросто могли в нашем Activity не использовать WebView и не показывать страницу. Можно было использовать TextView и в нем просто отобразить в виде текста адрес из data. Или накодить http-запрос, который скачал бы эту страницу и отобразил ее html-содержимое. Мы могли вообще забить на http-адрес и показать какую-нибудь картинку левую или просто темный экран.
Т.е. для Activity можно создать Intent Filter, который будет сообщать системе, что приложение умеет что-то, но, при этом, внутри Activity будет какая-нибудь ерунда. Это уже вопросы программерской этики, здравого смысла и адекватности)
Полный код манифест-файла:
На следующем уроке:
Хранение данных с помощью Preferences
Стандартные браузеры в устройствах на базе Android зачастую не отвечают повседневным запросам требовательных пользователей. На этой операционной системе существует масса качественных и функциональных интернет-обозревателей. Мы собрали лучшие браузеры для Android именно в этой статье.
Firefox по праву носит звание одного из лучших мобильных браузеров на Android. За годы присутствия на этой операционной системе разработка Mozilla обросла массой функций и получила облагороженный современный интерфейс. Firefox для Android - это баланс функционала, удобства и скорости использования. Мобильный браузер от Mozilla проигрывает по скорости тому же Google Chrome, но многие особенности Firefox сделаны куда более приятно и удобно.
Собственный движок Gecko, который использует Firefox, поддерживает практически все современные стандарты веба, а также для него имеются расширения с дополнительным функционалом, как и в десктопной версии браузера. Среди основных функций Fiefox: синхронизация всех данных между браузерами с помощью специального аккаунта, безопасный серфинг, удобная стартовая панель, масса расширений, режим чтения.
Самым популярным браузером не только на компьютерах, но и на мобильных устройствах является Google Chrome. Неудивительно, ведь он почти всегда предустанавливается на самую популярную мобильную ОС. Свою популярность Chrome завоевал вполне заслуженно - он быстрый, относительно функциональный, простой и удобный, а также он хорошо интегрирован с сервисами Google и десктопной версией браузера (есть полная сихронизация данных и вкладок). Интеграция с сервисами Google иногда может быть полезной, например - перевод текста на страницах с помощью Google Переводчика или голосовой поиск.
Также Chrome заботится о безопасности пользователя - в браузере встроен специальный фильтр сайтов, которые могут быть опасны для устройств с Android. Присутствует некое подобие технологии сжатия данных. Она не так совершенна, как у Opera, но все-таки неплохо экономит данные, передаваемые как по Wi-Fi, так и по мобильному интернету. Есть режим инкогнито для анонимного посещения сайтов. Пожалуй, единственный недостаток Chrome на данный момент - отсутствие поддержки расширений. Для тех, кто хочет пробовать все новые функции первым, есть Chrome Beta и Dev. Эти версии браузера обновляются быстрее и чаще - в них тестируются все нововведения.
Мобильные браузеры от норвежской компании Opera - тоже одни из самых популярных, функциональных и быстроразвивающихся на платформе Android. Эти ребята за многие годы своей работы определенно смогли вывести формулу почти идеального интернет-обозревателя для смартфонов и планшетов. В Opera есть практически все, что надо обычному пользователю: быстрый серфинг, удобная классическая экспресс-панель, синхронизация данных с десктопной версией, анонимный режим, удобный поиск с подсказками из панели адреса, а также одна из главных особенностей - сжатие трафика.
Ребята из Opera собаку съели на технологиях экономии трафика. Мобильная Opera с активированным режимом Turbo может сократить расходы мобильного интернета в два, а то и в три раза. Для тех, кому особенно важен расход трафика, существует Opera Mini - в ней экономия включена по умолчанию, но от этого порой страдает внешний вид сайтов. Также мини-версия куда легче и быстрее обычной Opera. Еще одна сильная сторона одноименного браузера - красивый и приятный внешний вид. Opera всегда славилась одним из самых стильных интерфейсов в браузерах. Если вы хотите сжимать весь трафик на своем устройстве, то обратите внимание на приложение .
Dolphin - это альтернативный браузер на Android с массой дополнительных возможностей и функций «из-коробки». Среди таких стоит отметить поддержку Adobe Flash, от которого практически все отказались, но он еще много где используется, применение различных тем для изменения интерфейса, поддержку уникальных дополнений и управление удобными и простыми жестами. Все это доступно сразу - никаких дополнительных настроек. А еще Dolphin быстрый, безопасный, бесплатный и всегда современный - разработчики выпускают обновления браузера практически каждую неделю.
Puffin - мобильный веб-браузер, который по своей концепции напоминает Dolphin. Здесь тоже в наличии красивый и удобный интерфейс, есть много возможностей, а еще Puffin такой же быстрый, как и «дельфин». В основном браузер Puffin подходит для слабых устройств, так как в нем предусмотрена специальная технология «облегченного» веб-серфинга - страницы сначала загружаются на облачный сервис Puffin, там оптимизируются и уже в легком виде приходят на экран устройства. При этом качество и внешний вид страниц практически не страдают от сломанной верстки или уменьшения качества.
Также в Puffin стоит отметить ряд дополнительных возможностей:
- полная поддержка Adobe Flash для игр (виртуальный джойстик на экране);
- шифрование трафика через облачный сервис;
- эмуляция мыши;
- возможность загрузить файлы сначала в «облако», а потом на устройство;
- установка расширений;
- темы интерфейса.
Российская компания «Яндекс» преуспела в создании собственного браузера для мобильных устройств с Android. Яндекс.Браузер для этой платформы - это отличное решение для пользователей из СНГ. Этот интернет-обозреватель прямо таки пропитан интеграцией с сервисами самого «Яндекса» и других местных социальных сетей / порталов. Например, строка поиска в браузере подсказывает нужные сайты и понимает запросы с полуслова, а еще внутри приложения можно посмотреть информацию о погоде и пробках.
При покупке смартфона на базе Андроид, по умолчанию обязательно будет установлен хотя бы один браузер. Это может быть Google Chrome или какой-либо другой веб-обозреватель, разработанный производителем. Но, если вам не подходит уже установленный браузер, вы можете скачать с Плей Маркет любой другой. Если на вашем устройстве несколько подобных приложений, возникает необходимость выбрать одно из них, которое будет использоваться по умолчанию. Далее в статье будут описываться варианты того, как это можно выполнить.
Браузер по умолчанию для Андроид
На сегодняшний день, существует довольно-таки много веб-обозревателей, предназначенных для устройств на базе Андроид. Все они имеют свои достоинства и недостатки. Но, несмотря на свои различия, установить какой-либо из них по умолчанию можно тремя различными методами. Детально каждый из них будет описываться далее в статье.
Способ 1: установка параметров ОС
Самый популярный и простой метод установки браузера по умолчанию — настройка ОС. Для того чтобы установить основной веб-обозреватель, выполните такие действия:
- Зайдите в настройки вашего смартфона с главного экрана или меню приложений.
- Откройте пункт «Приложения и уведомления» .
- Пролистайте список до конца, чтобы найти строку «Дополнительные настройки» . Иногда, в списке можно не увидеть данного раздела, так как он скрыт в графе «Еще» .
- Далее выберите вариант «Приложения по умолчанию» .
- Выберите раздел «Браузер» , для того чтобы выставить по умолчанию веб-обозреватель. Также вы можете установить настройки сообщений, телефона, голосового ввода и многого другого.
- Когда появится окно со списком всех установленных браузеров, поставьте флажок напротив того, который необходимо установить по умолчанию.
- Теперь вы можете пользоваться веб-обозревателем. Все ссылки, мессенджеры, в дальнейшем будут открываться в установленном браузере.
Данный метод действительно очень прост, к тому же вы сможете установить дополнительные настройки вашего смартфона.
Способ 2: настройка веб-обозревателей
С помощью настроек вы можете установить любой браузер по умолчанию, кроме стандартного Гугл Хром. Выполнить данную процедуру можно проделав несколько несложных шагов. Далее в статье, на примере мобильной версии Яндекс Браузер и MozillaFirefox, будет более подробно описаны все действия, которые необходимо выполнить для установки основного веб-обозревателя. Для других браузеров алгоритм действий будет аналогичный.
- Откройте мобильную версию браузера, в правом верхнем или нижнем углу нажмите на три вертикальных точки, чтобы открыть меню.
- Отыщите графу «Настройки» или «Параметры» и коснитесь ее, чтобы открыть.
- В предложенном списке найдите пункт «Сделать браузером по умолчанию» и кликните по нему. Если вы используете Яндекс Браузер, найти данный раздел можно найти на домашней странице в меню поисковой строки.
- Далее на экране появится вкладка, в которой необходимо нажать «Настройки» .
- Вы перейдете на страницу настроек «Приложение по умолчанию» . Теперь выполните те же действия, что описаны в 5, 6 и 7 пунктах предыдущего способа.
Данный вариант действий очень похож с описанным выше методом. После выполнения определенный действий, вы все равно перейдете в раздел «Приложения по умолчанию». Но отдав предпочтение данному способу, вы сможете установить настройки, не выходя из веб-обозревателя.
Способ 3: активная ссылка
Данный вариант действий имеет те же преимущества, что и первый описанный метод. Вы сможете установить любой браузер как основной на вашем смартфоне, в том случае, если в нем предусмотрена такая возможность.
Данный способ актуален только тогда, когда вы скачали новый браузер с Плей Маркета, или основной веб-обозреватель не был ранее установлен на ваш телефон.
- Зайдите в приложение, в котором есть активная ссылка, нажмите на нее для перехода. В случае, если всплывет окно с перечнем действий, выберите «Открыть» .
- Перед вами появится вкладка, в которой необходимо выбрать веб-обозреватель для того чтобы открыть ссылку. Это должен быть тот браузер, который вы ходите видеть основным на вашем смартфоне, после чего отметьте кнопку «Всегда» .
- Откроется выбранная ссылка в отмеченном браузере, который будет установлен по умолчанию.
К сожалению, данный метод не актуален для таких приложений как Telegram,ВКонтакте и подобным им. Использовать его можно не во всех ситуациях. Но, если вы недавно установили веб-обозреватель, или параметры по умолчанию были удалены, данный вариант станет идеальным решениям для вас.
Дополнительная установка веб-обозревателя для перехода по внутренним ссылкам
В определенных приложениях присутствует встроенная система чтения ссылок, которая называется WebView. Для этих программ как основной браузер используется GoogleChrome, или уже упомянутый выше средство WebView. Если возникает необходимость, можно сменить данный параметр.
Всем известные веб-обозреватели не обладают подобной функцией, поэтому придется поискать среди менее популярных браузеров. Можно остановиться на просмотрщиках разных производителей, уже установленных в фирменную оболочку ОС Андроид. Прежде чем вы приступите к выполнению описанных ниже действий, убедитесь в том, что на вашем смартфоне есть активное меню «Для разработчиков»
.
Чтобы заменить просмотрщик WebView, выполните следующие действия:
- Зайдите в настройки и отыщите пункт «Система» , который находится внизу списка.
- Далее откройте раздел «Для разработчиков» . Еще вы можете отыскать его в главном меню настроек в конце перечня действий.
- Теперь найдите графу «Сервис WebView» и запустите его.
- Если вам предложат несколько вариантов сервисов для просмотра, выберите тот, который вам подходит больше всего, поставив флажок в области чекбокса.
- Теперь все ссылки будут открываться в браузере, который вы выбрали.
Просмотрщик ссылок, очень редко заменяется. Но вы можете воспользоваться данным вариантом, если на вашем смартфоне предусмотрена выше описанная возможность.
В данной статье были описаны все возможные методы установки браузера в качестве основного для смартфона на базе Андроид. В зависимости от ситуации, всегда можно подобрать подходящий для вас способ.