Android studio как открыть ссылку в приложении
Как открыть URL из кода во встроенном веб-браузере, а не в моем приложении?
Я попытался это:
но я получил исключение:
попробуйте это:
это прекрасно работает для меня.
Что касается отсутствующего "http: / /" я бы просто сделал что-то вроде этого:
Я бы также, вероятно, предварительно заполнил ваш EditText, что пользователь вводит URL-адрес с помощью " http://".
распространенный способ добиться этого заключается в следующем коде:
это может быть изменено на короткую версию кода .
самый короткий! :
удачи в кодировании!
в 2.3, мне повезло с
разница заключается в использовании Intent.ACTION_VIEW а не строка "android.intent.action.VIEW"
да. Элемент docs говорит:
если на устройстве нет приложений, которые могут получить неявное намерение, ваше приложение аварийно завершит работу при вызове startActivity(). Чтобы сначала убедиться, что приложение существует для получения намерения, вызовите resolveActivity() для объекта Intent. Если результат не равен нулю, есть по крайней мере одно приложение, которое может обрабатывать намерение, и его можно безопасно вызвать startActivity(). Если результат равен нулю, вы не должны использовать intent и, если это возможно, вы должны отключить функцию, которая вызывает intent.
вы можете написать в одной строке при создании экземпляра Intent, как показано ниже:
попробуйте это:
или если вы хотите, то веб-браузера в вашей деятельности, то делай так:
и если вы хотите использовать управление зумом в браузере, то вы можете использовать:
Если вы хотите показать пользователю Диалог со всем списком браузера, чтобы он мог выбрать предпочтительный, вот пример кода:
Так же, как и другие решения, написанные (которые работают нормально), я хотел бы ответить на то же самое, но с подсказкой, которую, я думаю, большинство предпочтет использовать.
Если вы хотите, чтобы приложение, которое вы начинаете открывать в новой задаче, независимо от вашего собственного, вместо того, чтобы оставаться в том же стеке, вы можете использовать этот код:
другой вариант в URL загрузки в том же приложении с помощью Webview
вы также можете пойти этим путем
в xml:
в коде java:
в Манифесте не забудьте добавить разрешение в интернет.
Webview можно использовать для Загрузки Url-адреса в приложении. URL-адрес может быть предоставлен от пользователя в текстовом представлении или вы можете жестко его закодировать.
также не забывайте разрешения на интернет в AndroidManifest.
внутри в вашем блоке try вставьте следующий код, Android Intent использует непосредственно ссылку в скобках URI(Uniform Resource Identifier), чтобы определить местоположение вашей ссылки.
вы можете попробовать это:
простой, просмотр веб-сайта с помощью намерения,
используйте этот простой код для просмотра вашего сайта в android-приложении.
добавить разрешение интернета в файл манифеста,
проверить, является ли URL-адрес является правильным. Для меня было нежелательное пространство перед url.
Я думаю, что это лучший
поместите код ниже в глобальный класс
на основе ответа от Марка B и комментариев ниже:
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 добавили перегруженную версию метода, учитывайте это обстоятельство.
Мы должны проверить, что WebView поддерживает навигацию на предыдущую страницу. Если условие верно, тогда вызывается метод goBack(), который возвращает нас на предыдущую страницу на один шаг назад. Если таких страниц набралось несколько, то мы можем последовательно вернуться к самой первой странице. При этом метод всегда будет возвращать значение true. Когда мы вернёмся на самую первую страницу, с которой начали путешествие по интернету, то вернётся значение false и обработкой нажатия кнопки BACK займётся уже сама система, которая закроет экран приложения.
Запустите приложение ещё раз. У вас появился свой собственный веб-браузер, позволяющий ходить по ссылкам и возвращаться на предыдущую страницу. Изучив документацию, вы можете оснастить приложение и другим вкусными плюшками для своего браузера.
Если вам нужно часть ссылок, ведущих на ваш сайт открывать в браузере, а локальные ссылки открывать в приложении, то применяйте условие с разными возвращаемыми значениями.
Универсальный метод, который все локальные ссылки откроет в приложении, остальные в браузере (меняем одну строчку):
А сейчас немного усложним пример, чтобы у пользователя появилась альтернатива стандартным браузерам.
Чтобы было понятнее, переделаем пример следующим образом. Создайте две активности. На первой активности разместите кнопку для перехода на вторую активность, а на второй активности разместите компонент WebView.
В манифесте прописываем у второй активности фильтр.
Код для кнопки для перехода на вторую активность.
Мы создали собственное намерение с указанием фильтра и предоставили данные - адрес сайта.
Вторая активность должна принять данные:
В фильтре для второй активности мы указали два действия.
Это означает, что любые активности (читай, приложения) могут вызвать вашу активность с мини-браузером по такому же принципу. Запустите в студии в отдельном окне любой старый проект или создайте новый и добавьте в него кнопку и пропишите тот же код, который мы использовали для щелчка кнопки.
Запустите второе приложение (первое приложение можно закрыть) и нажмите на кнопку. У вас запустится не первое приложение с начальным экраном, а сразу вторая активность с мини-браузером. Таким образом, любое приложение может запустить браузер, не зная имени класса вашей активности, а используя только строку "ru.alexanderklimov.Browser", передаваемую в Intent. При этом ваша активность с браузером должна иметь категорию по умолчанию и данные. Напомню:
Вы можете представить свою строку в виде строковой константы и сообщить всем потенциальным пользователям вашего браузера, как они могут запустить его у себя. Но в Android уже есть такая готовая константа ACTION_VIEW, которая по справке документации представляет собой следующее:
Перепишем код для кнопки у второго приложения
Что произойдёт на этот раз? Мы помним, что у нас прописано два действия, включая и android.intent.action.VIEW. А значит наше первое приложение с браузером тоже должно распознавать эту команду, когда какое-то приложение у пользователя использует этот код. На эмуляторе как минимум есть одна такая программа "Browser", и теперь к ней добавилась наша вторая активность из первого приложения. На экране появится выбор из двух приложений.
А если удалить все альтернативные браузеры и оставить только вашу программу, то и выбора не будет. Ваш браузер станет основным. И если какое-то приложение захочет запустить веб-страницу указанным способом, то откроется ваша программа.
Небольшое замечание. Если заменить последнюю строчку на такую:
То в окне выбора программы вместо верхней строки "Open with" или её локального перевода появится ваша строка. Но не это главное. Если по каким-то причинам на устройстве не окажется ни одного браузера, то данный вариант кода не вызовет краха приложения, в отличие от первоначального варианта. Поэтому используйте предложенный вариант ради надёжности.
В связи с последними обновлениями, буду стараться выкладывать уроки, созданные при помощи Android Studio.
Способов реализации данной задачи может быть множество. В итоге, нам нужно разместить на экране простой текстовый элемент, который будет похож на обычную ссылку и будет реагировать на касания. Описать этот элемент можно статически в файле разметки (layout), а можно и добавить динамически, по мере надобности.
В данном уроке будет описан первый способ с четырьмя реализациями.
Создадим новый проект. В мастере выберем Blank Activity
Назовем его LinkTest.
Вот код разметки activity_main.xml :
Это схемка для уточнения:
Android Studio нам сразу же показывает итоговый экран. т.е. как будет выглядеть на устройстве.
Пока это не то, что в заголовке статьи, потому как мы изменим вид разметки в коде.
Вот весь код MainActivity:
Теперь расскажу про каждую ссылку по порядку.
В методе 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, но перед этим проверяет текст на соответствие шаблонам ссылок.
Очевидно, что последний способ является самым менее трудозатратным и удобным, когда речь идет о статической ссылке.
Рассказываем о 50 хитростях, горячих клавишах, плагинах и полезных ссылках для Android Studio и Intellij IDEA, которые помогут разработчику быть более продуктивным.
1. Цветовая схема в material-цветах для консоли
Например, цвета как на картинке выше:
2. Предотвращение очистки консоли при падении приложения
Перейдите на панель Android Monitor и выберите Edit filter configuration в выпадающем списке справа.
3. Устанавливаем правильное оформление кода для Android Studio/IntelliJ IDE
Перейдите в Preferences → Code Style → Java и в выпадающем списке Scheme выберите нужный стиль кода или установите новый.
Два стиля, которые особенно стоит упомянуть:
Можно импортировать тему, как в примере:
4. Используйте split screen, чтобы повысить продуктивность
Чтобы активировать раздельный экран, щелкните правой кнопкой мыши по табу с основным экраном и выберите Split Vertically/Horizontally.
Для максимальной производительности можно установить для этого действия собственные горячие клавиши. Перейдите в Preferences → Keymap и найдите пункт Split Vertically. Откройте контекстное меню и выберите Add Keyboard Shortcut. Для примера, можно установить сочетание control + alt + v.
5. Отвлеченный режим
Отвлеченный режим поможет сконцентрироваться на работе. Редактор развернет рабочую область с кодом на весь экран, скрыв лишние элементы интерфейса. Чтобы активировать режим, откройте меню View и выберите Enter Distraction Free Mode.
6. Использование живых шаблонов
Используйте сочетание cmd + j (ctrl + j для Windows/Linux).
Можно применять множество заготовленных шаблонов кода, например для Toasts или if.
Можно использовать собственные живые шаблоны. Как это сделать, описано в материалах для Android Studio и IntelliJ IDEA.
1. Лучшая команда – Search for command
Она вызывается через сочетание cmd + shift + a (для Windows и Linux: ctrl + shift + a). Для примера, вам нужно закрыть текущую вкладку, но вы не знаете как. Просто напишите close и получите команду или сочетание клавиш для этого.
2. Поиск последних действий в буфере copy/paste
Вызывается через cmd + shift + v (Windows и Linux: ctrl + shift + v). По умолчанию доступно 5 последних действий для копировать/вставить.
3. Активация мультикурсора
Включается через control + g (и alt + j для Windows и Linux).
Рекомендуем ознакомиться с более подробной статьей об этом функционале.
4. Открыть класс
Открыть новый класс можно через cmd + o (Windows и Linux: ctrl + n)
5. Открыть файл
Новый файл открывается сочетанием cmd + shift + o (Windows и Linux: ctrl + shift + n)
6. Поиск по символу
Cmd + option + o (Windows и Linux: alt + shift + n)
7. Переход к реализации
Для примера, у вас есть интерфейс. Кликните на имя интерфейса, прожмите cmd + option + b (Windows / Linux: ctrl + alt + b) и выберите Go to implementation – и вы перейдете к классу, который реализует этот интерфейс.
8. Переход к объявлению
Через сочетание cmd + b (Windows и Linux: ctrl + b) можно быстро перейти к объявлению класса, метода или переменной.
9. Переход к объявлению типа
Допустим, у нас есть код:
Установив курсор на employee, через сочетание control + shift + b (Windows и Linux: ctrl + shift + b) можно перейти к месту, где объявлен класс Employee.
10. Go to super
Для примера, вы переопределяете некий метод. Если установить курсор на имени метода и выбрать использовать сочетание cmd + u (Windows и Linux: ctrl + u) вас перенаправит на родительский метод.
11. Переключение между вкладками
Это делается через сочетание cmd + shift + [ (стрелка влево) или cmd + shift + ] (стрелка вправо) (Windows для Linux: вместо cmd – alt).
12. Переключение между вкладками Design/Text
Для Android Studio в режиме макета работает сочетание control + shift + ← / → (Windows и Linux: alt + shift + ← / →).
13. Закрыть текущую вкладку
Сочетание cmd + w (для Windows и Linux: ctrl + F4).
14. Скрыть все окна
Через cmd + shift + F12 (Windows и Linux: ctrl + shift + F12).
15. Свернуть экземпляр Android Studio
Сочетание cmd + shift + F12 (Windows и Linux: ctrl + shift + F12)
16. Форматировать код
Cmd + option + l (Windows и Linux: ctrl + alt + l).
17. Автоматический отступ для строк
Через сочетание control + option + i (Windows и Linux: ctrl + alt + i).
18. Реализация методов
Реализуя интерфейс, через сочетание control + i (Windows / Linux: ctrl + i) вы можете быстро импортировать методы, предоставляемые этим интерфейсом.
19. Умное автодополнение
Включается через сочетание control + shift + space (Windows и Linux: ctrl + shift + space), список подстраивается под ожидаемый тип.
20. Поиск
Сmd + f (Windows и Linux: ctrl + f).
21. Найти и заменить
Cmd + r (Windows и Linux: ctrl + r).
22. Перемещение строк из кода в ресурсы
Когда курсор установлен на тексте, используйте сочетание option + return (Windows / Linux: alt + enter).
Это третья часть технического руководства по прямым ссылкам в Android. В предыдущих публикациях мы рассмотрели схемы URI и намерения в Chrome а следующая публикация будет посвящена Google Play Referrer.
Прямые ссылки с помощью ссылок приложений Android
- Открыть приложение с намерением, если оно установлено.
- Вернуться к веб-ссылке, если приложение не установлено.
Через несколько месяцев, когда 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.
Читайте также: