Как я могу открыть URL-адрес в веб-браузере Android из моего приложения?
Как открыть URL из кода во встроенном веб-браузере, а не в моем приложении?
Я попытался это:
но я получил исключение:
28 ответов:
это прекрасно работает для меня.
Что касается отсутствующего «http: / /» я бы просто сделал что-то вроде этого:
Я бы также, вероятно, предварительно заполнил ваш EditText, что пользователь вводит URL-адрес с помощью » http://».
распространенный способ добиться этого заключается в следующем коде:
это может быть изменено на короткую версию кода .
самый короткий! :
удачи в кодировании!
разница заключается в использовании Intent.ACTION_VIEW а не строка «android.intent.action.VIEW»
Простой Ответ
как это работает
пожалуйста, взгляните на конструктор Intent :
вы можете пройти android.net.Uri экземпляр для 2-го параметра, и новое намерение создается на основе данного url-адреса данных.
а потом, просто позвоните startActivity(Intent intent) чтобы начать новую деятельность, которая в комплекте с намерением с помощью заданный URL.
мне нужно if проверить заявление?
да. Элемент docs говорит:
если на устройстве нет приложений, которые могут получить неявное намерение, ваше приложение аварийно завершит работу при вызове startActivity(). Чтобы сначала убедиться, что приложение существует для получения намерения, вызовите resolveActivity() для объекта Intent. Если результат не равен нулю, есть по крайней мере одно приложение, которое может обрабатывать намерение, и его можно безопасно вызвать startActivity(). Если результат равен нулю, вы не должны использовать intent и, если это возможно, вы должны отключить функцию, которая вызывает intent.
бонус
вы можете написать в одной строке при создании экземпляра Intent, как показано ниже:
или если вы хотите, то веб-браузера в вашей деятельности, то делай так:
и если вы хотите использовать управление зумом в браузере, то вы можете использовать:
Если вы хотите показать пользователю Диалог со всем списком браузера, чтобы он мог выбрать предпочтительный, вот пример кода:
Так же, как и другие решения, написанные (которые работают нормально), я хотел бы ответить на то же самое, но с подсказкой, которую, я думаю, большинство предпочтет использовать.
Если вы хотите, чтобы приложение, которое вы начинаете открывать в новой задаче, независимо от вашего собственного, вместо того, чтобы оставаться в том же стеке, вы можете использовать этот код:
другой вариант в URL загрузки в том же приложении с помощью Webview
вы также можете пойти этим путем
в Манифесте не забудьте добавить разрешение в интернет.
Webview можно использовать для Загрузки Url-адреса в приложении. URL-адрес может быть предоставлен от пользователя в текстовом представлении или вы можете жестко его закодировать.
также не забывайте разрешения на интернет в AndroidManifest.
внутри в вашем блоке try вставьте следующий код, Android Intent использует непосредственно ссылку в скобках URI(Uniform Resource Identifier), чтобы определить местоположение вашей ссылки.
вы можете попробовать это:
хром пользовательские вкладки теперь доступны:
первым шагом является добавление библиотеки поддержки пользовательских вкладок в сборку.файл gradle:
и затем, чтобы открыть пользовательскую вкладку chrome:
ответ MarkB — Это верно. В моем случае я использую Xamarin, и код для использования С C# и Xamarin:
простой, просмотр веб-сайта с помощью намерения,
используйте этот простой код для просмотра вашего сайта в android-приложении.
добавить разрешение интернета в файл манифеста,
проверить, является ли URL-адрес является правильным. Для меня было нежелательное пространство перед url.
поместите код ниже в глобальный класс
на основе ответа от Марка B и комментариев ниже:
android.webkit.URLUtil имеет способ guessUrl(String) работает отлично (даже с file:// или data:// ) С Api level 1 (Android 1.0). Используйте как:
Регистрация полностью guessUrl код для получения дополнительной информации.
xml код: —
этот способ использует метод, позволяющий вводить любую строку вместо фиксированного ввода. Это позволяет сохранить некоторые строки кода, если они используются многократно, так как для вызова метода требуется всего три строки.
использование этого метода делает его универсальным. Он не должен быть помещен в определенную деятельность, так как вы можете использовать его следующим образом:
или если вы хотите запустить его вне действия, вы просто вызываете startActivity на действие пример:
как видно в обоих этих блоках кода есть нулевая проверка. Это так, как он возвращает null, если нет приложения для обработки намерения.
этот метод по умолчанию использует HTTP, если протокол не определен, так как есть веб-сайты, у которых нет сертификата SSL(что вам нужно для подключения HTTPS), и они перестанут работать, если вы попытаетесь использовать HTTPS, и его там нет. Любой веб-сайт все еще может принудительно перейти на HTTPS, поэтому эти стороны приземляют вас на HTTPS в любом случае
поскольку этот метод использует внешние ресурсы для отображения страницы, нет необходимости объявлять разрешение Интернета. Приложение, которое отображает веб-страницу так
хорошо, я проверил каждый ответ, но какое приложение имеет deeplinking с тем же URL, который пользователь хочет использовать?
Источник