Comment puis-je ouvrir une URL dans le navigateur Web Android à partir de mon application?

Comment ouvrir une URL à partir du code dans le navigateur Web intégré plutôt que dans mon application?

J’ai essayé ceci:

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(); } 

mais j’ai une exception:

 No activity found to handle Intent{action=android.intent.action.VIEW data =www.google.com 

Essaye ça:

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

Cela fonctionne bien pour moi.

En ce qui concerne le “http: //” manquant, je ferais quelque chose comme ceci:

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

Je voudrais également probablement pré-remplir votre EditText que l’utilisateur tape une URL avec “http: //”.

un moyen courant pour y parvenir est d’utiliser le code suivant:

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

cela pourrait être changé en une version de code court …

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

ou :

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

le plus court! :

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

codage heureux!

En 2.3, j’ai eu plus de chance avec

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

La différence Intent.ACTION_VIEW l’utilisation d’ Intent.ACTION_VIEW plutôt que de la chaîne "android.intent.action.VIEW"

Réponse simple

Vous pouvez voir l’échantillon officiel du développeur Android .

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

Comment ça marche

S’il vous plaît jeter un oeil au constructeur d’ Intent :

 public Intent (Ssortingng action, Uri uri) 

Vous pouvez passer l’instance android.net.Uri au deuxième paramètre, et un nouvel objective est créé en fonction de l’URL de données donnée.

Ensuite, appelez simplement startActivity(Intent intent) pour démarrer une nouvelle activité, qui est associée à l’intention avec l’URL donnée.

Ai-je besoin de la déclaration if check?

Oui. Le document dit:

S’il n’y a pas d’applications sur le périphérique pouvant recevoir l’intention implicite, votre application va planter lorsqu’elle appelle startActivity (). Pour vérifier d’abord qu’une application existe pour recevoir l’intention, appelez resolveActivity () sur votre object Intent. Si le résultat est non nul, il existe au moins une application capable de gérer l’intention et d’appeler startActivity () en toute sécurité. Si le résultat est null, vous ne devez pas utiliser l’intention et, si possible, vous devez désactiver la fonctionnalité invoquant l’intention.

Prime

Vous pouvez écrire sur une ligne lors de la création de l’instance d’intention comme ci-dessous:

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

Essaye ça:

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

ou si vous voulez que le navigateur Web soit ouvert dans votre activité, faites comme ceci:

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

et si vous souhaitez utiliser le contrôle de zoom dans votre navigateur, vous pouvez utiliser:

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

Si vous voulez montrer à l’utilisateur un dialog avec toute la liste des navigateurs, pour qu’il puisse choisir votre préférence, voici un exemple de code:

 private static final Ssortingng HTTPS = "https://"; private static final Ssortingng HTTP = "http://"; public static void openBrowser(final Context context, Ssortingng 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 :) } 

Tout comme les solutions que d’autres ont écrites (ça fonctionne bien), j’aimerais répondre à la même chose, mais avec un conseil que je pense que la plupart préférerait utiliser.

Si vous souhaitez que l’application que vous commencez à ouvrir dans une nouvelle tâche, indépendante de votre choix, au lieu de restr sur la même stack, vous pouvez utiliser ce code:

 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); 

autre option Dans URL de chargement dans la même application à l’aide de Webview

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

Vous pouvez aussi aller de cette façon

En xml:

   

En code 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"); } } 

Dans Manifest, n’oubliez pas d’append la permission internet …

Webview peut être utilisé pour charger Url dans votre application. L’URL peut être fournie par l’utilisateur en vue texte ou vous pouvez le coder en dur.

N’oubliez pas non plus les permissions Internet dans AndroidManifest.

 Ssortingng 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, Ssortingng url) { view.loadUrl(url); return true; } } 

Une version de code court …

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

Dans votre bloc try, collez le code suivant, Android Intent utilise directement le lien dans les accolades URI (Uniform Resource Identifier) ​​afin d’identifier l’emplacement de votre lien.

Vous pouvez essayer ceci:

 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); 
 Ssortingng url = "http://www.example.com"; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); 

Les tabs personnalisés Chrome sont maintenant disponibles:

La première étape consiste à append la bibliothèque de support des tabs personnalisés à votre fichier build.gradle:

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

Et puis, pour ouvrir un onglet personnalisé chrome:

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

Pour plus d’informations: https://developer.chrome.com/multidevice/android/customtabs

La réponse de MarkB a raison. Dans mon cas, j’utilise Xamarin, et le code à utiliser avec C # et Xamarin est le suivant:

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

Cette information provient de: https://developer.xamarin.com/recipes/android/fundamentals/intent/open_a_webpage_in_the_browser_application/

Simple, vue du site via intention,

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

utilisez ce code simple pour visualiser votre site Web dans l’application Android.

Ajouter une autorisation Internet dans le fichier manifeste,

  

Vérifiez si votre URL est correcte. Pour moi, il y avait un espace indésirable avant url.

Je pense que c’est le meilleur

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

Placez le code ci-dessous dans la classe globale

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

Basé sur la réponse de Mark B et les commentaires ci-dessous:

 protected void launchUrl(Ssortingng 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 a la méthode guessUrl(Ssortingng) fonctionne parfaitement (même avec le file:// ou data:// ) depuis le Api level 1 l’ guessUrl(Ssortingng) (Android 1.0). Utilisé comme:

 Ssortingng 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 

Dans l’appel d’activité:

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

Vérifiez le code complet guessUrl pour plus d’informations.

// OnClick Listener

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

// Votre méthode util

 public static void intentWebURL(Context context, Ssortingng 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); } } 

Essayez ceci .. Travaillé pour moi!

  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(""); } 

code xml: –

   

——— OU——————

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

Cette méthode utilise une méthode pour vous permettre d’entrer une chaîne au lieu d’avoir une entrée fixe. Cela enregistre certaines lignes de code si elles sont utilisées plusieurs fois, car vous n’avez besoin que de trois lignes pour appeler la méthode.

 public Intent getWebIntent(Ssortingng 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; } 

L’utilisation de cette méthode le rend utilisable universellement. L’informatique n’a pas besoin d’être placée dans une activité spécifique, car vous pouvez l’utiliser comme ceci:

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

Ou si vous voulez le démarrer en dehors d’une activité, vous appelez simplement startActivity sur l’instance d’activité:

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

Comme on le voit dans ces deux blocs de code, il existe un contrôle de nullité. Ceci est comme il retourne null s’il n’y a pas d’application pour gérer l’intention.

Cette méthode utilise par défaut HTTP si aucun protocole n’est défini, car certains sites Web ne possèdent pas de certificate SSL (ce dont vous avez besoin pour une connexion HTTPS) et ceux-ci cesseront de fonctionner si vous tentez d’utiliser HTTPS. . N’importe quel site Web peut toujours forcer HTTPS, donc ces côtés vous atterrit à HTTPS de toute façon


Étant donné que cette méthode utilise des ressources externes pour afficher la page, vous n’avez pas besoin de déclarer l’autorisation INternet. L’application qui affiche la page Web doit le faire

Ok, j’ai vérifié chaque réponse, mais quelle application a été déplacée avec la même URL que l’utilisateur veut utiliser?

Aujourd’hui j’ai eu ce cas et la réponse est browserIntent.setPackage("browser_package_name");

par exemple :

  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); 

Je vous remercie!

Essayez celui-ci OmegaIntentBuilder

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

Introduction de base:

https: // utilise celui-ci dans le “code” pour que personne ne puisse les lire. Cela protège vos informations contre les pirates.

http: // utilise juste un objective de partage, ce n’est pas sécurisé.

À propos de votre problème:
Conception XML:

           

Conception de l’activité:

 public class MainActivity extends Activity { //securely open the browser public Ssortingng Url_secure="https://www.stackoverflow.com"; //normal purpouse public Ssortingng 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, Ssortingng Url_secure) { view.loadUrl(Url_secure); return true; } } public class NormalSearch extends WebViewClient{ @Override public boolean shouldOverrideUrlLoading(WebView view, Ssortingng Url_normal) { view.loadUrl(Url_normal); return true; } } } 

Autorisations Android Manifest.Xml :

  

Vous rencontrez des problèmes lors de la mise en œuvre de ceci:

  1. obtenir les permissions Manifest
  2. espace excédentaire entre url
  3. Vérifiez que votre URL est correcte ou non

Si vous voulez le faire avec XML, pas par programmation, vous pouvez utiliser sur votre TextView:

 android:autoLink="web" android:linksClickable="true"