- Четыре способа добавить ссылку в разметку
- Работа с WebView в Android: пример и описание возможностей
- Подробно о WebView в Android: что, как и почему
- Руководство по работе с WebView
- Техническое руководство по прямым ссылкам в Android: ссылки приложений
- Alex Austin
- Прямые ссылки с помощью ссылок приложений Android
- Требования для использования ссылок приложений Android
- Настройка ссылок приложений Android
- Шаг 1. Добавьте фильтры намерений в манифест
- Шаг 2. Настройте веб-сайт для поддержки ссылок приложений
- Обработка прямых ссылок в приложении
- Использование прямых ссылок на практике
- Урок 31. Вызываем браузер, звонилку, карты с помощью intent с атрибутом data — Uri | Уроки Android Studio
- Урок по созданию простого браузера в Android Studio
Четыре способа добавить ссылку в разметку
Очень часто в разных местах мобильного приложения возникает необходимость сослаться на какой-нибудь внешний ресурс. Например, другие мои приложения или просто поисковик.Таким образом, нам нужно в интерфейсе показать уже знакомый многим пользователям элемент — интернет ссылку .
В связи с последними обновлениями, буду стараться выкладывать уроки, созданные при помощи Android Studio.
Способов реализации данной задачи может быть множество. В итоге, нам нужно разместить на экране простой текстовый элемент, который будет похож на обычную ссылку и будет реагировать на касания. Описать этот элемент можно статически в файле разметки (layout), а можно и добавить динамически, по мере надобности.
В данном уроке будет описан первый способ с четырьмя реализациями.
Создадим новый проект. В мастере выберем Blank Activity
Назовем его LinkTest.
Вот код разметки activity_main.xml :
Это схемка для уточнения:
Android Studio нам сразу же показывает итоговый экран. т.е. как будет выглядеть на устройстве.
Пока это не то, что в заголовке статьи, потому как мы изменим вид разметки в коде.
Вот весь код MainActivity:
Теперь расскажу про каждую ссылку по порядку.
У первого элемента TextView с id равным tv_link1 установлено свойство android:clickable=»true» , т.е. он будет реагировать на касания. А при касании вызовет метод blogView, т.к. задано свойство android:onClick=»blogView».
В методе blogView мы создадим намерение (intent) и запустим новую активность с этим намерением (startActivity(openlink)).
ОС Android сама поймет по намерению, что нужно запустить, т.е. браузер.
Узнаваемым мы его сделаем при помощи SpannableString, текст можно сделать жирным, подчеркнутым и т.д., более подробно почитайте об интерфейсе Spannable.
Второй элемент TextView с id равным tv_link2 мы задаем при помощи HTML, потом получаем из функции Html.fromHtml(linkedText) объект Spanned и его устанавливаем в TextView . Позже задаем ему MovementMethod (tv_test2.setMovementMethod(LinkMovementMethod.getInstance())), с помощью этого интерфейса можно реализовать много интересных вещей. При работе с простым TextView, мы используем класс LinkMovementMethod, как гласит документация, он поддерживает клики по ссылкам.
Третий элемент TextView с id равным tv_link3 создает ссылку просто:
Всю работу взял на себя метод класса Linkify.addLinks ,по сути он проделывает всю предыдущую работу по установке LinkMovementMethod, но перед этим проверяет текст на соответствие шаблонам ссылок.
Четвертый элемент TextView с id равным tv_link3, вообще не используется в MainActivity , т.к. тут всю работу за нас сделала разметка, а точнее свойство android:autoLink=»web». Текст из элемента автоматически передается как адрес для браузера. Это свойство разметки может быть использовано и для других целей, например звонков, отправки e-mail, показа карты с координатами и т.п. Свойства элемента говорят сами за себя:
Очевидно, что последний способ является самым менее трудозатратным и удобным, когда речь идет о статической ссылке.
Источник
Работа с WebView в Android: пример и описание возможностей
В Android есть несколько способов отображения HTML-страниц в вашем приложении. Наиболее эффективным способом является использование виджета Android WebView — о нем мы сегодня и поговорим.
Компонент WebView в Android представляет собой полноценный браузер, который реализован как подкласс View, поэтому мы с легкостью можем встроить его в наше приложение на Android.
Подробно о WebView в Android: что, как и почему
Чаще всего для работы с простыми html-страницами используется виджет TextView . В этом случае мы можем реализовать статический метод fromHtml() , который принадлежит утилитному HTML классу для парсинга строк с html кодом и дальнейшим его отображением в TextView .
Виджет TextView обеспечивает простое форматирование для стилей (жирный, курсив), шрифтов, различным цветов, гиперссылок и т.д.
Однако со сложным форматированием и большим объемом HTML-страниц виджет TextView справиться уже не в состоянии. Например, работать с такими функциональными и объемными сайтами, как Facebook или другие соц сети через TextView уже не получится.
В таких случаях на помощь приходит WebView , так как только он может обрабатывать большие обхемы и множество HTML-тегов. Виждет WebView также может работать с CSS и JavaScript , которые метод Html.fromHtml() бы просто проигнорировал.
WebView также обеспечивает работу с историей посещений и навигацией назад и вперед по страницам.
Тем не менее WebView также имеет целый набор недостатков: с точки зрения эффективности потребления памяти он значительно уступает TextView . Причиной большого потребления памяти WebView является веб-движок рендеринга контента WebKit/Blink, который еще используется в таких браузерах, как Chrome.
Руководство по работе с WebView
Ниже представлен пример работы с макетом, установкой виджета в коде и обзор наиболее полезных методов при работе с WebView в Android.
1. Установка WebView в макете
Источник
Техническое руководство по прямым ссылкам в Android: ссылки приложений
Alex Austin
30 октября, 2017
Это третья часть технического руководства по прямым ссылкам в Android. В предыдущих публикациях мы рассмотрели схемы URI и намерения в Chrome а следующая публикация будет посвящена Google Play Referrer.
Прямые ссылки с помощью ссылок приложений Android
В недавно выпущенной версии Android Marshmallow (6.0) появился новый механизм непосредственного открытия приложений — ссылки приложений. Этот механизм воспроизводит функциональность универсальных ссылок в iOS 9 , где при переходе по обычной ссылке HTTP/HTTPS немедленно открывается соответствующее приложение, если оно установлено. Вот логика переадресации в ссылках приложений.
- Открыть приложение с намерением, если оно установлено.
- Вернуться к веб-ссылке, если приложение не установлено.
Ссылка приложений Android — простой способ превратить существующие ссылки на веб-сайте в ссылки приложений. Пример: https://imbd.com/title/12345 . Если сайт IMDB будет правильно настроен для ссылок приложений, то при переходе по ссылке IMDB будет сразу открываться приложение IMDB, если оно установлено на телефоне. Если приложение не установлено, в браузере откроется URL-адрес веб-страницы.
Через несколько месяцев, когда Android 6.0 получит более широкое распространение, можно будет начать отказываться от стандартных механизмов с URI и намерениями Chrome. А пока необходимо поддерживать эти механизмы вместе с другими, чтобы гарантировать работу во всех случаях, поскольку экосистема Android неоднородна.
Требования для использования ссылок приложений Android
- Должен быть действующий веб-сайт.
- Устройство пользователя должно работать под управлением Android 6.0 или более поздних версий.
Настройка ссылок приложений Android
Настроить службу на использование ссылок приложений можно в два этапа.
- Настройте манифест для получения намерений.
- Зарегистрируйте веб-сайт в качестве ссылки приложения.
Шаг 1. Добавьте фильтры намерений в манифест
Это несложно. Грубо говоря, нужно сообщить системе Android, что по ссылке, ведущей на веб-сайт (-ы), нужно открывать приложение, а не веб-сайт.
Шаг 2. Настройте веб-сайт для поддержки ссылок приложений
Необходимо создать файл assetlinks.json следующего формата.
Примечание. Нам удалось добиться работоспособности ссылок приложений без изменения значения android_app по умолчанию.
Отпечаток SHA256 сертификата подписи вашего приложения. Для создания отпечатка потребуется использовать программу keytool. В командной строке перейдите в домашний каталог java, оттуда перейдите в папку bin. Выполните следующую команду.
$ keytool -list -v -keystore my-release-key.keystore
(Сведения о том, как найти программу keytool, см. в этом примере для Mac или Windows .)
Наконец, файл assetlinks.json должен быть размещен в каталоге /.well-known/assetlinks.json. Этот каталог мы создаем для всех интегрированных приложений Branch с помощью наших серверов узлов и экспресс-ссылок. Вот код, который мы использовали.
Обработка прямых ссылок в приложении
Чтобы обработать прямую ссылку в приложении, нужно просто получить строку данных намерения в действии, открытом при щелчке. Это можно сделать так.
После этого потребуется использовать разбор строк, чтобы прочесть полную строку ссылки приложения, запустившей открытие приложения.
Использование прямых ссылок на практике
На практике такой механизм был бы самым удобным, если бы все использовали Android версии 6.0 или более поздней, а у вас был бы действующий веб-сайт. Но такая ситуация не сложится еще несколько лет, поэтому нужно обрабатывать и другие сценарии.
Пока мы рекомендуем включить на веб-сайте поддержку ссылок приложений, но использовать существующие механизмы поддержки прямых ссылок на основе схемы URI и намерений в Chrome до тех пор, пока ссылки приложений не получат более широкого распространения. Например, если пользователь открывает ваш сайт, а на устройстве установлено приложение, нужно, чтобы срабатывало намерение Chrome или схема URI при нажатии кнопки запуска приложения на мобильном сайте. Ссылки приложений, по-видимому, не обрабатывают этого сценария.
Если у вас нет веб-сайта, но нужно использовать ссылки приложений, рекомендуем встроить представления Branch Deepviews в общую стратегию развития продукта. Это мобильные предварительные представления содержимого вашего приложения, они автоматически формируются нашей системой и размещаются в ней. Представления Deepview — удобная возможность просмотра содержимого пользователями, у которых не установлено вашего приложения. Это решение дополняет ссылки приложений Android.
Следите за дальнейшими публикациями, посвященными прямым ссылкам в Android.
Источник
Урок 31. Вызываем браузер, звонилку, карты с помощью intent с атрибутом data — Uri | Уроки Android Studio
В этом уроке мы создадим приложение, которое будет вызывать системные приложения: интернет-браузер — чтобы открыть ссылку, диалер — чтобы позвонить по номеру, и приложение Google-карты — чтобы показать на карте заранее определенные координаты.
Скачать файлы для установки Google Apps на эмулятор Genymotion
Код проекта — под видео:
Больше уроков:
Инструменты android разработчика: тут
Дизайн android приложений: тут
Уроки создания игр для android: тут
Основы программирования на JAVA: тут
Здравствуйте Виталий! Большое спасибо за Ваши уроки, которые очень грамотно преподносятся, что даже такой далекий от программирования человек, как я, смог разобраться. У меня к Вам вопрос: при вызове intent c действием ACTION_CALL происходит звонок по заданному в Uri номеру, можно ли программно узнать когда абонент поднимет трубку? Заранее благодарен за помощь.
Для отправки комментария вам необходимо авторизоваться.
Источник
Урок по созданию простого браузера в Android Studio
В этом уроке исправим распространенную ошибку, которая случается при выполнении Урока 32 по основам разработки приложений в Android Studio
Дело в том, что там при открытии ссылки андроид использует системный браузер вместо создаваемого в уроке. В этом уроке мы создадим простой браузер, который будет работать правильно. Кроме того, вы увидите, как можно выполнить домашнее задание из урока 32.
Создаем проект в Android Studio
Детально процесс создания показан в видео.
Вводим название приложения. Выбор минимальной версии оставляем по умолчанию. В окне выбора шаблона выбираем Empty Activity. Остальные настройки оставляем по умолчанию.
Скачайте такие иконки с сайта https://material.io/icons/ и добавьте в ресурсы проекта.
Изменяем макет главного экрана
На главном экране будет поле для ввода адреса, несколько кнопок управления, прогрессбар и WebView, в котором будет отображаться сайт. Набор кнопок — почти как в стандартном браузере — Назад, Вперед, Обновить и Отправить запрос. Полный код макета — на нашем сайте fandroid.info в текстовой версии этого урока, ссылка под видео.
В файле манифеста добавьте разрешение на доступ к интернету
В файле styles.xml установим главному экрану тему без экшнбара
Теперь создадим класс для веб-клиента.
Класс myWebClient унаследован от WebViewClient. Мы определяем собственный веб-клиент для того, чтобы ссылки открывались в нем, а не в системном WebView.
Здесь переопределяем метод shouldOverrideUrlLoading, в котором вызываем метод загрузки loadUrl(url).
Теперь рассмотрим код MainActivity.
Сначала определяем переменные для прогрессбара, поля ввода, вебвью и кнопок.
Затем в методе 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, а также разработаете приложение для удобного доступа к созданному сайту. Подробнее о курсе смотрите на странице подписки.
Источник