Как я могу открыть URL-адрес в браузере Android из своего приложения?

Как открыть 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 

    28 Solutions collect form web for “Как я могу открыть URL-адрес в браузере Android из своего приложения?”

    Попробуй это:

     Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); startActivity(browserIntent); 

    Это отлично работает для меня.

    Что касается отсутствующего «http: //», я бы просто сделал что-то вроде этого:

     if (!url.startsWith("http://") && !url.startsWith("https://")) url = "http://" + url; 

    Я также, вероятно, предварительно заполнил бы ваш EditText, который пользователь вводит URL-адрес с помощью «http: //».

    общий способ достижения этого – следующий код:

     String url = "http://www.stackoverflow.com"; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); 

    который может быть изменен на короткую версию кода …

     Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse("http://www.stackoverflow.com")); startActivity(intent); 

    или :

     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.stackoverflow.com")); startActivity(intent); 

    кратчайший! :

     startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.stackoverflow.com"))); 

    счастливое кодирование!

    В 2.3 мне повезло с

     final Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse(url)); activity.startActivity(intent); 

    Разница заключается в использовании Intent.ACTION_VIEW а не String "android.intent.action.VIEW"

    Простой ответ

    Вы можете увидеть официальный образец от разработчика Android .

     /** * Open a web page of a specified URL * * @param url URL to open */ public void openWebPage(String url) { Uri webpage = Uri.parse(url); Intent intent = new Intent(Intent.ACTION_VIEW, webpage); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } } 

    Как это работает

    Пожалуйста, посмотрите на конструктор Intent :

     public Intent (String action, Uri uri) 

    Вы можете передать экземпляр android.net.Uri параметру, и новый Intent создается на основе заданного URL-адреса данных.

    А затем просто вызовите startActivity(Intent intent) чтобы начать новое действие, которое связано с намерением с заданным URL.

    Мне нужна инструкция if check?

    Да. Документы говорят:

    Если на устройстве нет приложений, которые могут получить неявное намерение, ваше приложение выйдет из строя при вызове функции startActivity (). Чтобы в первую очередь проверить, существует ли приложение для получения намерения, вызовите функцию resolveActivity () для вашего объекта Intent. Если результат не равен нулю, существует хотя бы одно приложение, которое может обрабатывать намерение, и можно безопасно вызвать startActivity (). Если результат равен нулю, вы не должны использовать намерение и, если возможно, вы должны отключить функцию, которая вызывает намерение.

    бонус

    Вы можете писать в одной строке при создании экземпляра Intent, как показано ниже:

     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 

    Попробуй это:

     Uri uri = Uri.parse("https://www.google.com"); startActivity(new Intent(Intent.ACTION_VIEW, uri)); 

    или если вы хотите, чтобы в вашей активности открывался веб-браузер, выполните следующие действия:

     WebView webView = (WebView) findViewById(R.id.webView1); WebSettings settings = webview.getSettings(); settings.setJavaScriptEnabled(true); webView.loadUrl(URL); 

    и если вы хотите использовать управление масштабированием в своем браузере, вы можете использовать:

     settings.setSupportZoom(true); settings.setBuiltInZoomControls(true); 

    Если вы хотите показать пользователю диалог со всеми списками браузеров, чтобы он мог выбрать предпочтительный, вот пример кода:

     private static final String HTTPS = "https://"; private static final String HTTP = "http://"; public static void openBrowser(final Context context, String url) { if (!url.startsWith(HTTP) && !url.startsWith(HTTPS)) { url = HTTP + url; } Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); context.startActivity(Intent.createChooser(intent, "Choose browser"));// Choose browser is arbitrary :) } 

    Точно так же, как и другие решения, написанные (что хорошо работает), я хотел бы ответить на одно и то же, но с подсказкой, которую я думаю, что большинство предпочитает использовать.

    Если вы хотите, чтобы приложение, которое вы начали открывать в новой задаче, независимо от вас, вместо того, чтобы оставаться в одном стеке, вы можете использовать этот код:

     final Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse(url)); intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK); startActivity(intent); 

    другой параметр В загрузочном URL-адресе в одном приложении с использованием Webview

     webView = (WebView) findViewById(R.id.webView1); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl("http://www.google.com"); 

    Вы также можете пойти так

    В xml:

     < ?xml version="1.0" encoding="utf-8"?>  

    В java-коде:

     public class WebViewActivity extends Activity { private WebView webView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webview); webView = (WebView) findViewById(R.id.webView1); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl("http://www.google.com"); } } 

    В Manifest не забудьте добавить разрешение на интернет …

    Webview можно использовать для загрузки Url в вашем приложении. URL-адрес может быть предоставлен пользователем в текстовом виде, или вы можете его жестко закодировать.

    Также не забудьте разрешения на доступ в Интернет в AndroidManifest.

     String url="http://developer.android.com/index.html" WebView wv=(WebView)findViewById(R.id.webView); wv.setWebViewClient(new MyBrowser()); wv.getSettings().setLoadsImagesAutomatically(true); wv.getSettings().setJavaScriptEnabled(true); wv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); wv.loadUrl(url); private class MyBrowser extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } } 

    Короткая версия кода …

      if (!strUrl.startsWith("http://") && !strUrl.startsWith("https://")){ strUrl= "http://" + strUrl; } startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(strUrl))); 

    Внутри блока try, вставьте следующий код, Android Intent напрямую использует ссылку в идентификаторе URI (Uniform Resource Identifier), чтобы определить местоположение вашей ссылки.

    Вы можете попробовать следующее:

     Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); startActivity(myIntent); 
     Intent getWebPage = new Intent(Intent.ACTION_VIEW, Uri.parse(MyLink)); startActivity(getWebPage); 
     String url = "http://www.example.com"; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); 

    Теперь доступны пользовательские вкладки Chrome:

    На первом этапе добавляется библиотека поддержки пользовательских вкладок в файл build.gradle:

     dependencies { ... compile 'com.android.support:customtabs:24.2.0' } 

    Затем, чтобы открыть вкладку chrome custom:

     String url = "https://www.google.pt/"; CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(); CustomTabsIntent customTabsIntent = builder.build(); customTabsIntent.launchUrl(this, Uri.parse(url)); 

    Для получения дополнительной информации: https://developer.chrome.com/multidevice/android/customtabs

    Ответ MarkB прав. В моем случае я использую Xamarin, а код для использования с C # и Xamarin:

     var uri = Android.Net.Uri.Parse ("http://www.xamarin.com"); var intent = new Intent (Intent.ActionView, uri); StartActivity (intent); 

    Эта информация берется из: https://developer.xamarin.com/recipes/android/fundamentals/intent/open_a_webpage_in_the_browser_application/

    Простой, просмотр веб-сайта с помощью намерения,

     Intent viewIntent = new Intent("android.intent.action.VIEW", Uri.parse("http://www.yoursite.in")); startActivity(viewIntent); 

    используйте этот простой код для просмотра вашего сайта в приложении Android.

    Добавить доступ к Интернету в файле манифеста,

      

    Проверьте правильность вашего URL-адреса. Для меня было нежелательное пространство перед URL.

    Я думаю, что это лучший

     openBrowser(context, "http://www.google.com") 

    Поместите ниже код в глобальный class

      public static void openBrowser(Context context, String url) { if (!url.startsWith("http://") && !url.startsWith("https://")) url = "http://" + url; Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); context.startActivity(browserIntent); } 

    На основании ответа Марка Б и комментариев ниже:

     protected void launchUrl(String url) { Uri uri = Uri.parse(url); if (uri.getScheme() == null || uri.getScheme().isEmpty()) { uri = Uri.parse("http://" + url); } Intent browserIntent = new Intent(Intent.ACTION_VIEW, uri); if (browserIntent.resolveActivity(getPackageManager()) != null) { startActivity(browserIntent); } } 

    android.webkit.URLUtil имеет метод guessUrl(String) отлично работает (даже с file:// или data:// ) с Api level 1 (Android 1.0). Использовать как:

     String url = URLUtil.guessUrl(link); // url.com -> http://url.com/ (adds http://) // http://url -> http://url.com/ (adds .com) // https://url -> https://url.com/ (adds .com) // url -> http://www.url.com/ (adds http://www. and .com) // http://www.url.com -> http://www.url.com/ // https://url.com -> https://url.com/ // file://dir/to/file -> file://dir/to/file // data://dataline -> data://dataline // content://test -> content://test 

    В поле «Активность»:

     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(URLUtil.guessUrl(download_link))); if (intent.resolveActivity(getPackageManager()) != null) startActivity(intent); 

    Проверьте полный код guessUrl для получения дополнительной информации.

    // Слушатель OnClick

      @Override public void onClick(View v) { String webUrl = news.getNewsURL(); if(webUrl!="") Utils.intentWebURL(mContext, webUrl); } 

    // Ваш метод использования

     public static void intentWebURL(Context context, String url) { if (!url.startsWith("http://") && !url.startsWith("https://")) { url = "http://" + url; } boolean flag = isURL(url); if (flag) { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); context.startActivity(browserIntent); } } 

    Попробуйте это.

      public void webLaunch(View view) { WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.setVisibility(View.VISIBLE); View view1=findViewById(R.id.recharge); view1.setVisibility(View.GONE); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.loadUrl(""); } 

    xml код: –

       

    ——— ИЛИ——————

     String url = ""; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); 

    Этот способ использует метод, позволяющий вам вводить любую строку вместо фиксированного ввода. Это сохраняет некоторые строки кода, если используется повторяющееся количество раз, так как вам нужно только три строки для вызова метода.

     public Intent getWebIntent(String url) { //Make sure it is a valid URL before parsing the URL. if(!url.contains("http://") && !url.contains("https://")){ //If it isn't, just add the HTTP protocol at the start of the URL. url = "http://" + url; } //create the intent Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)/*And parse the valid URL. It doesn't need to be changed at this point, it we don't create an instance for it*/); if (intent.resolveActivity(getPackageManager()) != null) { //Make sure there is an app to handle this intent return intent; } //If there is no app, return null. return null; } 

    Использование этого метода делает его универсальным. ИТ не нужно размещать в определенной деятельности, так как вы можете использовать его следующим образом:

     Intent i = getWebIntent("google.com"); if(i != null) startActivity(); 

    Или, если вы хотите запустить его за пределами действия, вы просто вызываете startActivity для экземпляра действия:

     Intent i = getWebIntent("google.com"); if(i != null) activityInstance.startActivity(i); 

    Как видно из обоих этих кодовых блоков, существует нуль-проверка. Это так, как он возвращает null, если нет приложения для обработки намерения.

    Этот метод по умолчанию имеет значение HTTP, если нет определенного протокола, так как есть сайты, у которых нет SSL-сертификата (что вам нужно для подключения HTTPS), и они перестанут работать, если вы попытаетесь использовать HTTPS, и его нет , Любой веб-сайт может все же навязать HTTPS, так что эти стороны приземлятся на HTTPS в любом случае


    Поскольку этот метод использует внешние ресурсы для отображения страницы, вам не нужно объявлять разрешение INternet. Приложение, отображающее веб-страницу, должно сделать это

    Хорошо, я проверил каждый ответ, но какое приложение имеет deeplinking с тем же URL, который пользователь хочет использовать?

    Сегодня я получил этот случай и ответ: browserIntent.setPackage("browser_package_name");

    например:

      Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); browserIntent.setPackage("com.android.chrome"); // Whatever browser you are using startActivity(browserIntent); 

    Спасибо!

    Попробуйте этот OmegaIntentBuilder

     OmegaIntentBuilder.from(context) .web("Your url here") .createIntentHandler() .failToast("You don't have app for open urls") .startActivity(); 

    Основное введение:

    https: // использует этот код в «коде», чтобы никто из них не читал их. Это защищает вашу информацию от хакеров.

    http: // использует только совместное использование, он не защищен.

    О вашей проблеме:
    Проектирование XML:

     < ?xml version="1.0" encoding="utf-8"?>          

    Проектирование деятельности:

     public class MainActivity extends Activity { //securely open the browser public String Url_secure="https://www.stackoverflow.com"; //normal purpouse public String Url_normal="https://www.stackoverflow.com"; WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView=(WebView)findViewById(R.id.webView1); } public void secure(View view){ webView.setWebViewClient(new SecureSearch()); webView.getSettings().setLoadsImagesAutomatically(true); webView.getSettings().setJavaScriptEnabled(true); webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); webView.loadUrl(Url_secure); } public void normal(View view){ webView.setWebViewClient(new NormalSearch()); webView.getSettings().setLoadsImagesAutomatically(true); webView.getSettings().setJavaScriptEnabled(true); webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); webView.loadUrl(Url_normal); } public class SecureSearch extends WebViewClient{ @Override public boolean shouldOverrideUrlLoading(WebView view, String Url_secure) { view.loadUrl(Url_secure); return true; } } public class NormalSearch extends WebViewClient{ @Override public boolean shouldOverrideUrlLoading(WebView view, String Url_normal) { view.loadUrl(Url_normal); return true; } } } 

    Разрешения Android Manifest.Xml :

      

    Вы сталкиваетесь с проблемами при реализации этого:

    1. получение разрешений Manifest
    2. избыточное пространство между URL-адресом
    3. Проверьте правильность вашего URL- адреса

    Если вы хотите сделать это с помощью XML не программно, вы можете использовать его в TextView:

     android:autoLink="web" android:linksClickable="true" 
    Давайте будем гением компьютера.