Урок по созданию простого браузера в Android Studio
Дело в том, что там при открытии ссылки андроид использует системный браузер вместо создаваемого в уроке. В этом уроке мы создадим простой браузер, который будет работать правильно. Кроме того, вы увидите, как можно выполнить домашнее задание из урока 32.
Создаем проект в Android Studio
Детально процесс создания показан в видео.
Вводим название приложения. Выбор минимальной версии оставляем по умолчанию. В окне выбора шаблона выбираем Empty Activity. Остальные настройки оставляем по умолчанию.
Скачайте такие иконки с сайта https://material.io/icons/ и добавьте в ресурсы проекта.
Изменяем макет главного экрана
На главном экране будет поле для ввода адреса, несколько кнопок управления, прогрессбар и WebView, в котором будет отображаться сайт. Набор кнопок – почти как в стандартном браузере – Назад, Вперед, Обновить и Отправить запрос. Полный код макета – на нашем сайте fandroid.info в текстовой версии этого урока, ссылка под видео.
В файле манифеста добавьте разрешение на доступ к интернету
В файле styles.xml установим главному экрану тему без экшнбара
Теперь создадим класс для веб-клиента.
import android.webkit.WebView; import android.webkit.WebViewClient; public class myWebClient extends WebViewClient < @SuppressWarnings("deprecation") @Override public boolean shouldOverrideUrlLoading(WebView view, String url) < view.loadUrl(url); return true; >>
Класс myWebClient унаследован от WebViewClient. Мы определяем собственный веб-клиент для того, чтобы ссылки открывались в нем, а не в системном WebView.
Здесь переопределяем метод shouldOverrideUrlLoading, в котором вызываем метод загрузки loadUrl(url).
Теперь рассмотрим код MainActivity.
import android.content.Context; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ProgressBar; public class MainActivity extends AppCompatActivity < ProgressBar progressBar; EditText inputUrl; WebView webView; ImageButton sendButton, forwardButton, backButton, refreshButton; @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progressBar = (ProgressBar) findViewById(R.id.progressBar); inputUrl = (EditText) findViewById(R.id.autoCompleteTextView); webView = (WebView) findViewById(R.id.webView); sendButton = (ImageButton) findViewById(R.id.sendButton); forwardButton = (ImageButton) findViewById(R.id.forwardButton); backButton = (ImageButton) findViewById(R.id.backButton); refreshButton = (ImageButton) findViewById(R.id.refreshButton); webView.setWebViewClient(new myWebClient()); webView.setWebChromeClient(new WebChromeClient()< @Override public void onProgressChanged(WebView view, int newProgress) < progressBar.setProgress(newProgress); if(newProgress==100) progressBar.setVisibility(View.GONE); else progressBar.setVisibility(View.VISIBLE); >>); WebSettings webset = webView.getSettings(); webset.setJavaScriptEnabled(true); webView.loadUrl("http://www.google.com"); sendButton.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View v) < String url = inputUrl.getText().toString(); if (!url.startsWith("http://")) < url = "http://" + url; >webView.loadUrl(url); InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(webView.getWindowToken(), 0); > >); forwardButton.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View v) < if (webView.canGoForward()) webView.goForward(); >>); backButton.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View v) < if (webView.canGoBack()) webView.goBack(); >>); refreshButton.setOnClickListener(new View.OnClickListener() < @Override public void onClick(View v) < webView.reload(); >>); > >
Сначала определяем переменные для прогрессбара, поля ввода, вебвью и кнопок.
Затем в методе onCreate инициализируем все эти объекты.
Методом setWebViewClient устанавливаем наш веб-клиент для вебвью.
Затем в методе setWebChromeClient устанавливаем прогрессбар, который будет отображать процесс загрузки страницы.
Затем включаем поддержку JavaScript и загружаем url по умолчанию – это будет страница Google.
Осталось присвоить кнопкам слушатели и определить действия по нажатию каждой кнопки.
При нажатии кнопки Отправки запроса будем считывать значение текстового поля, преобразовывать его в строку и присваивать переменной url. Затем проверяем переменную url на наличие префикса http:// и добавляем его, если он отсутствует. Передаем url браузеру WebView.
После создаем экземпляр класса InputMethodManager и вызываем его метод hideSoftInputFromWindow для скрытия клавиатуры после нажатия кнопки отправки адреса.
Следующая кнопка – Вперед, которая загружает страницу, покинутую в результе возврата по кнопке Назад (имеется в виду кнопка Назад нашего приложения, а не системная). Здесь через проверку возможности перехода вперед по истории методом WebView canGoForward() вызываем метод WebView goForward() для перехода.
Далее обрабатываем кнопку Назад, где по нажатию проверяем методом WebView canGoBack() возможность возврата по истории просмотров назад и вызываем метод WebView goBack().
Кнопка Обновить по нажатию вызывает метод WebView reload() для обновления страницы.
Запускаем приложение на устройстве.
После старта должна отобразиться страница Google. В поле ввода пишем адрес любого сайта и нажимаем кнопку отправить. Открывается страница сайта. Также можно вернуться назад в истории просмотров, перейти вперед по истории, обновить загруженную страницу. Таким образом мы создали простой браузер для загрузки страниц.
Можно убрать кнопки в приложении, и вместо сайта гугла прописать любой сайт на ваше усмотрение. Получится простое приложение для сайта на основе WebView.
А чтобы создать полноценное приложение для сайтп, предлагаем пройти наш Продвинутый курс по созданию приложения для сайта на WordPress.
В этом курсе вы научитесь создавать и размещать на хостинге сайт с популярной CMS WordPress, а также разработаете приложение для удобного доступа к созданному сайту. Подробнее о курсе смотрите на странице подписки.
Как создать WebView-приложение: подробное руководство
WebView-приложения стали важной частью современного мобильного мира. Они позволяют по новому смотреть веб-содержимое, обеспечивая удобный способ отображения веб-страниц и мобильных сайтов. В этой статье мы рассмотрим, как создать WebView-приложение с использованием различных языков программирования и платформ.
Что такое WebView
WebView — это элемент пользовательского интерфейса, который позволяет встраивать веб-страницы или веб-содержимое внутрь мобильного приложения. Этот элемент позволяет пользователям просматривать сайты, не покидая приложение, что может быть полезно для интеграции онлайн-сервисов и дополнительного контента.
Выбор платформы и языка программирования
Определитесь с платформой и языком программирования. Вот несколько популярных вариантов:
- Android (Java/Kotlin): если вам нужно создать WebView-приложение для Android, вы можете использовать Java или Kotlin. Android SDK предоставляет нужные инструменты.
- iOS (Swift/Objective-C): для iOS вы можете использовать Swift или Objective-C. Apple предоставляет WebView-компонент под названием `UIWebView` (устаревший) и `WKWebView`.
- Cross-platform (React Native, Flutter): рассмотрите фреймворки, такие как React Native или Flutter, которые позволяют разрабатывать приложения одновременно для Android и iOS.
Создание проекта
После выбора платформы и языка программирования вам нужно создать проект. Процесс разный, зависит от платформы, но обычно включает в себя следующие шаги:
- Создайте новый проект в среде разработки вашей платформы (Android Studio, Xcode и т.д.).
- Настройте основные параметры проекта, такие как имя, иконки и т.д.
- Добавьте компонент в пользовательский интерфейс.
Настройка
После добавления WebView в пользовательский интерфейс вам нужно настроить его. Вот некоторые важные параметры, которые вы можете настроить:
URL-адрес: установите URL-адрес веб-страницы или веб-сервиса, который вы хотите отобразить.
JavaScript: решите, будете ли вы разрешать выполнение JavaScript в WebView. Это может потребоваться для корректного отображения некоторых веб-сайтов.
Обработка событий: настройте обработчики событий, чтобы реагировать на действия пользователей, такие как нажатие на ссылку.
Пример: загрузка веб-страницы
Чтобы отобразить веб-страницу, вам нужно загрузить ее. Вот пример кода на Java/Kotlin для Android:
WebView webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true); // Включаем поддержку JavaScript
webView.loadUrl(«https://www.example.com»); // Загружаем страницу по URL-адресу
На iOS с использованием Swift это может выглядеть так:
class ViewController: UIViewController
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad()
if let url = URL(string: «https://www.example.com»)
let request = URLRequest(url: url)
Дополнительная настройка и функциональность
Вы также можете добавить дополнительную функциональность в свое WebView-приложение:
- Навигация: добавьте кнопки назад, вперед и обновления, чтобы улучшить навигацию пользователя.
- Локальное хранилище: сохраняйте данные локально на устройстве, чтобы приложение могло работать офлайн.
- Обратная связь: предоставьте пользователю возможность отправить отзыв или сообщение об ошибке.
Заключение
Создание WebView-приложения – это отличный способ интегрировать веб-содержимое в ваш проект. Выбрав платформу, настроив WebView и добавив дополнительную функциональность, вы можете создать удобное решение для ваших пользователей.
WebView приложение для Android
Android System Webview — это системное приложение, позволяющее открывать ссылки (сайты) и другой веб-контент внутри приложений.
Каждый Android смартфон имеет встроенное приложение Android System Webview, что позволяет запускать любой HTML контент в своем приложении. Написать эту статью меня побудило то что в интернете практически нет нормальных мануалов для быстрого создания своего приложения с базовыми знаниями у меня они ниже плинтуса Android разработчика. Поиск в мировой паутине привел меня на сайт где можно купить уже готовую «шкурку» для своего приложения с множеством интересных дополнений.
Вот ссылка на этот сайт https://codecanyon.net/item/universal-android-webview-app/8431507
После покупки лицензии я получил готовый проект который можно легко импортировать в Android Studio и создать свое приложение за несколько часов.
Приступим
- Скачать и установить Android Studio. Мануалов по установке в интернете много, да и ставится все нажатием кнопки Next. Потому углубляться не буду. Ссылка на скачивание https://developer.android.com/studio
29 долларов сумма небольшая, потому поддержите разработчика если понравится программа. А пока что можете использовать мой проект
- Теперь необходимо импортировать проект в Android Studio

- В зависимости от мощности Вашего устройства Android Studio начинает «шуршать» и подтягивает файлы формируя проект. Теперь нужно создать виртуальную машину чтобы видеть все изменения сразу. Можно использовать свой Android телефон в режиме отладчика, но у меня почему это не завелось. Нажимаем на Project чтобы открыть структуру проекта. Затем добавляем виртуальное устройство нажатием кнопки No Device >AVD manager. Жмем Create Virtual Device и выбираем нужное устройство со списка (чем больше Resolution тем больше нагрузки на Ваш ПК). Раньше я думал что 10 ГБ ОЗУ это много, но после запуска Android Studio быстро поменял свое мнение. После выбора устройства жмем кнопку Next

- Выбираем нужную версию Android и нажимаем Download

- Начнется скачивание необходимых компонентов, после окончания жмем Finish

- Вы можете использовать несколько версий Android для тестирования, но одновременно только одну версию.Выбираем нужную и нажимаем Next

- Для запуска виртуальной машины зажмите сочетание клавиш Shift+F10. Если все ок, увидите виртуальное устройство

- Чтобы разобраться в структуре проекта откройте файл documentation.html который находится в проекте который Вы скачали с этого сайта. В результате появится окно со следующим содержимым

- Теперь идем пошагово. Первый пункт это Import, его мы уже прошли когда импортировали проект
- Шаг второй Set Purchase Code. Откройте файл по пути mobile/src/main/java/com/robotemplates/webviewapp/WebViewAppConfig.java и введите код лицензии который Вы получили при покупке в поле PURCHASE_CODE . Думаю Вы сейчас ничего не покупали, потому можете в это поле ввести любое значение

- Шаг третий Rename Application ID. Нужно присвоить приложению уникальный ID который будет добавлен в PlayMarket. Если будете делать публикацию в Playmarket — придумайте оригинальный ID, если нет — оставьте значение по умолчанию. Чтобы проще понимать что такое ID посмотрите изображение ниже.

Переходим по пути mobile/build.gradle и задаем значение applicationId . После этого нажимаем Sync Now чтобы синхронизировать ID с другими файлами

Переходим к файлу mobile/google-services.json и вводим значение ID с предыдущего шага для поля package_name . Снова жмем Sync Project

- Шаг четвертый Rename Application Name. Снова жмем Shift+F10, и видим что программа запустилась. Но если открыть список запущенных приложение то она имеет заводское значение. Это нужно исправить

Переходим по пути mobile/src/main/res/values/strings.xml и изменяем значение с “WebView App” на название нашего приложения. В поле app_name и navigation_header_title strings нужно ввести значения.Затем перезапустить приложение на телефоне что увидеть изменения.

В результате название становится правильным

- Теперь нужно назначить изображение лаунчера для нашего приложения. Для этого переходим в mobile/src/main/res (правый щелчок мышки) , New >Image Asset

Указываем путь к изображению, затем Trim > Yes и ползунком отрегулируйте положение изображения. Затем жмем Next > Finish

В результате получим правильный лаунчер с изображением птицы Зяблика

При запуске приложения показывается заводская картинка, это можно поправить. Проследуйте на своем ПК где Вы импортировали проект по пути mobile/src/main/res/drawable-nodpi/splash.png.

Подмените изображение splash.png на нужное. Перезапустите приложение на телефоне и в результате увидите новое изображение при запуске

- Шаг шестой Choose Color Theme. В приложении можно выбрать одну с десяти цветовых схем. Чтобы изменить это следуйте по пути mobile/src/main/AndroidManifest.xml. Для примера выбрал Red, затем следует перезапустить приложение. Верхнее меню стало красного цвета

- Шаг седьмой Setup Navigation and Web Pages. Вы можете настроить боковое выпадающее меню, и задать для него ссылки.
Перейдите по пути mobile/src/main/res/values/navigation.xml
Количество названий должно соответствовать количеству ссылок, и иметь такую же последовательность.

Вы можете задать свои значки, они находятся по пути webviewapp-2.7.0\mobile\src\main\res\drawable-xxxx на HDD (или редактировать через Android Studio).
Остальные шаги не описывал, поскольку они индивидуальные и статья выйдет слишком громоздкая. Даже с этими минимальными настройками Вы получите полноценно работающее приложение которое в дальнейшем можно опубликовать в PlayMarket.
Официальная документация на английском, но она отлично описана и я верю что у Вас все получится
WebView — создай свой браузер
Android позволяет создать собственное окно для просмотра веб-страниц или даже создать свой клон браузера при помощи элемента WebView. Сам элемент использует движок WebKit и имеет множество свойств и методов. Мы ограничимся базовым примером создания приложения, с помощью которого сможем просматривать страницы в интернете. В последних версиях используется движок от Chromium, но большой разницы в этом нет для простых задач.
Создадим новый проект MyBrowser и сразу заменим код в файле разметки res/layout/activity_main.xml:
Теперь откроем файл активности MainActivity.java и объявим компонент WebView, а также инициализируем его — включим поддержку JavaScript и укажем страницу для загрузки.
// Kotlin class MainActivity : AppCompatActivity() < private lateinit var webView: WebView override fun onCreate(savedInstanceState: Bundle?) < super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) webView = findViewById(R.id.webView) webView.webViewClient = MyWebViewClient() // включаем поддержку JavaScript webView.getSettings().setJavaScriptEnabled(true) // указываем страницу загрузки webView.loadUrl("http://developer.alexanderklimov.ru/android") >>
// Java private WebView webView; public void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = findViewById(R.id.webView); // включаем поддержку JavaScript webView.getSettings().setJavaScriptEnabled(true); // указываем страницу загрузки webView.loadUrl("http://developer.alexanderklimov.ru/android"); >
Так как приложение будет использовать интернет, необходимо установить разрешение на доступ к интернету в файле-манифесте.
Там же в манифесте модифицируем строчку для экрана, удалив заголовок из нашего приложения (выделено жирным):
Запустим приложение. В нашем распоряжении появился простейший вьювер веб-страниц, но с одним недостатком. Если вы щёлкнете на любой ссылке, то у вас автоматически запустится браузер по умолчанию и новая страница отобразится уже там. Точнее так было раньше. На новых устройствах при запуске приложения сразу открывается браузер.

Чтобы решить данную проблему и открывать ссылки в своей программе, нужно переопределить класс WebViewClient и позволить нашему приложению обрабатывать ссылки. Добавим в коде вложенный класс:
// Kotlin private class MyWebViewClient : WebViewClient() < @TargetApi(Build.VERSION_CODES.N) override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean < view.loadUrl(request.url.toString()) return true >// Для старых устройств override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean < view.loadUrl(url) return true >>
// Java private class MyWebViewClient extends WebViewClient < @TargetApi(Build.VERSION_CODES.N) @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) < view.loadUrl(request.getUrl().toString()); return true; >// Для старых устройств @Override public boolean shouldOverrideUrlLoading(WebView view, String url) < view.loadUrl(url); return true; >>
Затем в методе onCreate() определим экземпляр MyWebViewClient. Он может находиться в любом месте после инициализации объекта WebView:
// Kotlin webView.webViewClient = MyWebViewClient()
// Java webView.setWebViewClient(new MyWebViewClient());
Теперь в нашем приложении создан WebViewClient, который позволяет загружать любой указанный URL, выбранный в WebView, в сам контейнер WebView, а не запускать браузер. За данную функциональность отвечает метод shouldOverrideUrlLoading(WebView, String), в котором мы указываем текущий WebView и нужный URL. Возвращаемое значение true говорит о том, что мы не нуждаемся в запуске стороннего браузера, а самостоятельно загрузим контент по ссылке. В версии API 24 добавили перегруженную версию метода, учитывайте это обстоятельство.
Повторно запустите программу и убедитесь, что ссылки загружаются теперь в самом приложении. Но теперь возникла ещё одна проблема. Мы не можем вернуться к предыдущей странице. Если мы нажмём на кнопку «BACK» (Назад) на устройстве, то просто закроем своё приложение. Для решения новой проблемы нам необходимо обрабатывать нажатие кнопки «BACK». Добавляем новый метод:
// Kotlin override fun onBackPressed() < if (webView.canGoBack()) < webView.goBack() >else < super.onBackPressed() >>
// Java @Override public void onBackPressed() < if(webView.canGoBack()) < webView.goBack(); >else < super.onBackPressed(); >>
Мы должны проверить, что WebView поддерживает навигацию на предыдущую страницу. Если условие верно, тогда вызывается метод goBack(), который возвращает нас на предыдущую страницу на один шаг назад. Если таких страниц набралось несколько, то мы можем последовательно вернуться к самой первой странице. При этом метод всегда будет возвращать значение true. Когда мы вернёмся на самую первую страницу, с которой начали путешествие по интернету, то вернётся значение false и обработкой нажатия кнопки BACK займётся уже сама система, которая закроет экран приложения.
Запустите приложение ещё раз. У вас появился свой собственный веб-браузер, позволяющий ходить по ссылкам и возвращаться на предыдущую страницу. Изучив документацию, вы можете оснастить приложение и другим вкусными плюшками для своего браузера.

Если вам нужно часть ссылок, ведущих на ваш сайт открывать в браузере, а локальные ссылки открывать в приложении, то применяйте условие с разными возвращаемыми значениями.
public class MyWebViewClient extends WebViewClient < @Override public boolean shouldOverrideUrlLoading(WebView view, String url) < if(Uri.parse(url).getHost().endsWith("developer.alexanderklimov.ru")) < return false; >Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); view.getContext().startActivity(intent); return true; > >
Универсальный метод, который все локальные ссылки откроет в приложении, остальные в браузере (меняем одну строчку):
public class MyAppWebViewClient extends WebViewClient < @Override public boolean shouldOverrideUrlLoading(WebView view, String url) < if(Uri.parse(url).getHost().length() == 0) < return false; >Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); view.getContext().startActivity(intent); return true; > >
А сейчас немного усложним пример, чтобы у пользователя появилась альтернатива стандартным браузерам.
Чтобы было понятнее, переделаем пример следующим образом. Создайте две активности. На первой активности разместите кнопку для перехода на вторую активность, а на второй активности разместите компонент WebView.
В манифесте прописываем у второй активности фильтр.
Код для кнопки для перехода на вторую активность.
public void onClick(View view) < Intent intent = new Intent("ru.alexanderklimov.Browser"); intent.setData(Uri.parse("http://developer.alexanderklimov.ru/android/")); startActivity(intent); >
Мы создали собственное намерение с указанием фильтра и предоставили данные — адрес сайта.
Вторая активность должна принять данные:
package ru.alexanderklimov.testapplication; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClient; public class SecondActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Uri url = getIntent().getData(); WebView webView = findViewById(R.id.webView); webView.setWebViewClient(new Callback()); webView.loadUrl(url.toString()); > private class Callback extends WebViewClient < @Override public boolean shouldOverrideUrlLoading (WebView view, String url) < return(false); >> >
В фильтре для второй активности мы указали два действия.
Это означает, что любые активности (читай, приложения) могут вызвать вашу активность с мини-браузером по такому же принципу. Запустите в студии в отдельном окне любой старый проект или создайте новый и добавьте в него кнопку и пропишите тот же код, который мы использовали для щелчка кнопки.
Запустите второе приложение (первое приложение можно закрыть) и нажмите на кнопку. У вас запустится не первое приложение с начальным экраном, а сразу вторая активность с мини-браузером. Таким образом, любое приложение может запустить браузер, не зная имени класса вашей активности, а используя только строку «ru.alexanderklimov.Browser», передаваемую в Intent. При этом ваша активность с браузером должна иметь категорию по умолчанию и данные. Напомню:
Вы можете представить свою строку в виде строковой константы и сообщить всем потенциальным пользователям вашего браузера, как они могут запустить его у себя. Но в Android уже есть такая готовая константа ACTION_VIEW, которая по справке документации представляет собой следующее:
public static final java.lang.String ACTION_VIEW = "android.intent.action.VIEW";
Перепишем код для кнопки у второго приложения
Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://developer.alexanderklimov.ru/android/")); startActivity(intent);
Что произойдёт на этот раз? Мы помним, что у нас прописано два действия, включая и android.intent.action.VIEW. А значит наше первое приложение с браузером тоже должно распознавать эту команду, когда какое-то приложение у пользователя использует этот код. На эмуляторе как минимум есть одна такая программа «Browser», и теперь к ней добавилась наша вторая активность из первого приложения. На экране появится выбор из двух приложений.

А если удалить все альтернативные браузеры и оставить только вашу программу, то и выбора не будет. Ваш браузер станет основным. И если какое-то приложение захочет запустить веб-страницу указанным способом, то откроется ваша программа.
Небольшое замечание. Если заменить последнюю строчку на такую:
startActivity(Intent.createChooser(intent, "Мяу. "));
То в окне выбора программы вместо верхней строки «Open with» или её локального перевода появится ваша строка. Но не это главное. Если по каким-то причинам на устройстве не окажется ни одного браузера, то данный вариант кода не вызовет краха приложения, в отличие от первоначального варианта. Поэтому используйте предложенный вариант ради надёжности.
Относительно недавно увидел новый способ открытия ссылок вне браузера. Необходимо использовать флаг FLAG_ACTIVITY_REQUIRE_NON_BROWSER.
val url = "http://developer.alexanderklimov.ru" val intent = Intent(ACTION_VIEW, Uri.parse(url)).apply
