web-dev-qa-db-fra.com

Envoi d'une intention au navigateur pour ouvrir une URL spécifique

Je me demande simplement comment lancer une intention dans le navigateur du téléphone pour ouvrir une URL spécifique et l'afficher.

Quelqu'un peut-il me donner un indice s'il vous plaît?

703
poeschlorn

Pour ouvrir une URL/un site Web, procédez comme suit:

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

Voici le documentation de Intent.ACTION_VIEW .


Source: Ouverture d'une URL dans le navigateur Web d'Android à partir de l'application

1649
aioobe

La version courte

Intent i = new Intent(Intent.ACTION_VIEW, 
       Uri.parse("http://almondmendoza.com/Android-applications/"));
startActivity(i);

devrait fonctionner aussi bien ...

182
Juri

La version la plus courte.

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

Dans certains cas, l'URL peut commencer par "www". Dans ce cas, vous obtiendrez une exception:

Android.content.ActivityNotFoundException: No Activity found to handle Intent

L'URL doit toujours commencer par "http: //" ou "https: //", j'utilise donc ce code extrait:

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

Envoi d'une intention au navigateur pour ouvrir une URL spécifique:

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

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

ou même plus court!

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

Plus d'infos sur Intent

=)

41
Jorgesys

Existe-t-il également un moyen de passer les coordonnées directement à Google Maps à afficher?

Vous pouvez utiliser le préfixe geoURI:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("geo:" + latitude + "," + longitude));
startActivity(intent);
27
Phil

À partir de XML

Dans le cas où vous avez l'adresse Web/URL affichée sur votre vue et que vous souhaitez la rendre cliquable et diriger l'utilisateur vers un site Web particulier, vous pouvez utiliser:

Android:autoLink="web"

De la même manière, vous pouvez utiliser différents attributs d'autoLink (email, téléphone, carte, tous) pour accomplir votre tâche ...

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

Utilisez l'extrait suivant dans votre code

Intent newIntent = new Intent(Intent.ACTION_VIEW, 
Uri.parse("https://www.google.co.in/?gws_rd=cr"));
startActivity(newIntent);

Utilisez ce lien

http://developer.Android.com/reference/Android/content/Intent.html#ACTION_VIEW

7
XYZ_deve

"Existe-t-il également un moyen de passer directement des cartes à Google Maps?"

J'ai constaté que si je transmettais au navigateur une URL contenant les coordonnées, Android me demande si je souhaite utiliser le navigateur ou l'application Maps, tant que l'utilisateur n'a pas choisi le navigateur par défaut. Voir ma réponse ici pour plus d'informations sur la mise en forme de l'URL.

J'imagine que si vous aviez l'intention de lancer l'application Maps avec les coordonnées, cela fonctionnerait également.

6
Kingsolmn