Как открыть URL из кода во встроенном веб-браузере, а не в моем приложении?
Я попробовал это:
try {
Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(download_link));
startActivity(myIntent);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, "No application can handle this request."
+ " Please install a webbrowser", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
но я получил исключение:
No activity found to handle Intent{action=android.intent.action.VIEW data =www.google.com
Ответы:
Попробуй это:
Это прекрасно работает для меня.
Что касается отсутствующего "http: //", я бы просто сделал что-то вроде этого:
Я бы также, вероятно, предварительно заполнил ваш EditText, чтобы пользователь вводил URL с помощью «http: //».
источник
http://
схему - показанное исключение предполагает, что вашему URL не хватает схемы.if (!url.startsWith("http://") && !url.startsWith("https://"))
Это распространенная ошибка, которая может привести к URL-адресам, таким как file: // и нарушить некоторые хорошие примеры использования. Попробуйте проанализировать URI с помощью класса URI и проверьте, есть ли схема. Если нет, добавьте «http: //»;)resolveCheck
. См. Официальные документы : Внимание! Если на устройстве нет приложений, которые могут получить неявное намерение, ваше приложение будет аварийно завершено при вызове startActivity (). Чтобы сначала убедиться, что приложение существует для получения намерения, вызовите resolActivity () для объекта Intent.Распространенный способ добиться этого с помощью следующего кода:
это может быть изменено на короткую версию кода ...
или :
кратчайший! :
Удачного кодирования!
источник
В 2.3 мне повезло больше
Разница заключается в использовании,
Intent.ACTION_VIEW
а не строки"android.intent.action.VIEW"
источник
Простой ответ
Вы можете увидеть официальный образец от Android Developer .
Как это работает
Пожалуйста, посмотрите на конструктор
Intent
:Вы можете пройти
android.net.Uri
экземпляр второму параметру, и на основе заданного URL-адреса данных создается новое намерение.А затем просто позвоните,
startActivity(Intent intent)
чтобы начать новое действие, которое связано с намерением с данным URL.Нужен ли мне
if
чек?Да. документах говорят:
бонус
Вы можете написать в одну строку при создании экземпляра Intent, как показано ниже:
источник
Попробуй это:
или если вы хотите, чтобы веб-браузер открывался в вашей активности, сделайте так:
и если вы хотите использовать управление масштабированием в вашем браузере, то вы можете использовать:
источник
Если вы хотите показать пользователю диалог со всем списком браузеров, чтобы он мог выбрать предпочтительный, вот пример кода:
источник
http
илиhttps
, а в java хорошей практикой является объявление «магических строк» в качестве констант.context.startActivity
. Очень полезно при вызове из внешнего классаКак и решения, написанные другими (которые отлично работают), я хотел бы ответить на то же самое, но с подсказкой, которую, я думаю, большинство предпочло бы использовать.
Если вы хотите, чтобы приложение, которое вы начали открывать в новой задаче, независимо от вас, вместо того, чтобы оставаться в одном стеке, вы можете использовать этот код:
Существует также способ открыть URL-адрес в пользовательских вкладках Chrome . Пример в Котлине:
источник
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
устареладругой вариант в URL загрузки в том же приложении, используя Webview
источник
Вы также можете пойти по этому пути
В xml:
В коде Java:
В Manifest не забудьте добавить интернет-разрешение ...
источник
Webview может быть использован для загрузки URL в вашем приложении. URL может быть предоставлен от пользователя в текстовом представлении, или вы можете жестко его кодировать.
Также не забывайте интернет-разрешения в AndroidManifest.
источник
Краткая версия кода ...
источник
В своем блоке try вставьте следующий код. Android Intent напрямую использует ссылку в фигурных скобках URI (Uniform Resource Identifier), чтобы определить местоположение вашей ссылки.
Вы можете попробовать это:
источник
Простая и лучшая практика
Способ 1:
Способ 2:
источник
context!!.packageManager
вместоgetPackageManager()
вFragment
.источник
источник
Ответ MarkB правильный. В моем случае я использую Xamarin, и код для использования с C # и Xamarin:
Эта информация взята из: https://developer.xamarin.com/recipes/android/fundamentals/intent/open_a_webpage_in_the_browser_application/
источник
Пользовательские вкладки Chrome теперь доступны:
Первым шагом является добавление библиотеки поддержки пользовательских вкладок в файл build.gradle:
А затем, чтобы открыть пользовательскую вкладку Chrome:
Для получения дополнительной информации: https://developer.chrome.com/multidevice/android/customtabs
источник
Основываясь на ответе Марка Б и комментариях ниже:
источник
android.webkit.URLUtil
методguessUrl(String)
работает отлично (даже сfile://
илиdata://
) с тех порApi level 1
(Android 1.0). Использовать как:В разделе Активность звоните:
Проверьте полный
guessUrl
код для получения дополнительной информации.источник
Хорошо, я проверил каждый ответ, но какое приложение имеет глубокие ссылки с тем же URL, который пользователь хочет использовать?
Сегодня я получил это дело, и ответ
browserIntent.setPackage("browser_package_name");
например:
Спасибо!
источник
Простой, просмотр сайта через намерение,
Используйте этот простой код для просмотра вашего сайта в приложении для Android.
Добавить интернет-разрешение в файле манифеста,
источник
Эта ошибка произошла из-за неверного URL, Android OS не может найти представление действий для ваших данных. Таким образом, вы подтвердили, что URL действителен или нет.
источник
Я думаю это лучшее
Поместите код ниже в глобальный класс
источник
Этот способ использует метод, позволяющий вам вводить любую строку вместо фиксированного ввода. Это сохраняет некоторые строки кода, если их использовать многократно, поскольку для вызова метода нужно всего три строки.
Использование этого метода делает его универсальным для использования. ИТ не нужно помещать в конкретную деятельность, так как вы можете использовать это следующим образом:
Или, если вы хотите запустить его вне действия, просто вызовите startActivity для экземпляра действия:
Как видно из обоих этих блоков кода, есть нулевая проверка. Это как он возвращает ноль, если нет приложения для обработки намерения.
Этот метод по умолчанию использует HTTP, если протокол не определен, так как есть сайты, у которых нет SSL-сертификата (что вам нужно для подключения HTTPS), и они перестанут работать, если вы попытаетесь использовать HTTPS, а его там нет. , Любой веб-сайт все еще может перейти на HTTPS, так что эти стороны в любом случае приводят вас к HTTPS.
Поскольку этот метод использует внешние ресурсы для отображения страницы, вам не нужно объявлять разрешение INternet. Приложение, которое отображает веб-страницу, должно сделать это
источник
// OnClick Listener
// Ваш Util Method
источник
Просто перейдите с коротким, чтобы открыть свой URL в браузере:
источник
Котлин ответ:
Я добавил расширение,
Uri
чтобы сделать это еще прощеВ качестве бонуса, здесь есть простая функция расширения для безопасного преобразования строки в Uri.
источник
Я долго искал это, потому что все остальные ответы открывали приложение по умолчанию для этой ссылки, но не браузер по умолчанию, и это то, что я хотел.
Мне наконец-то удалось это сделать:
Кстати, вы можете заметить.
context
Что угодно , потому что я использовал это для статического метода утилит, если вы делаете это в деятельности, это не нужно.источник
Проверьте, правильно ли указан ваш URL. Для меня было нежелательное пространство перед URL.
источник
Попробуйте это .. Работал для меня!
XML-код: -
--------- ИЛИ------------------
источник