1460 votes

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

Comment ouvrir une URL à partir de 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 je suis une Exception:

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

2671voto

mbaird Points 31293

Essayez ceci:

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

Cela fonctionne bien pour moi.

Comme pour les disparus "http://" je venais de faire quelque chose comme ceci:

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

Je voudrais aussi probablement pré-remplir votre EditText que l'utilisateur tape une URL avec des "http://".

110voto

Elenasys Points 23268

un bon moyen d'y parvenir est avec le code suivant:

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

qui pourrait être changé pour une courte version du code de ...

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

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

=)

62voto

MikeNereson Points 1325

Dans le paragraphe 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 étant l'utilisation de la Intent.ACTION_VIEW plutôt que la Corde "android.intent.action.VIEW"

31voto

nikki Points 1062

Essayez ceci:

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

ou si vous le souhaitez puis navigateur web ouvert dans votre activité puis faire comme ceci:

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

et si vous souhaitez utiliser la commande de zoom de votre navigateur, puis vous pouvez utiliser:

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

22voto

Dmytro Danylyk Points 6911

Si vous voulez montrer à l'utilisateur un dialoge avec tous les navigateur de la liste, alors il peut choisir préféré, voici un exemple de code:

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, "Chose browser"));

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X