Android Ouvrir une URL dans un navigateur


Exemple

Ouverture avec le navigateur par défaut

Cet exemple montre comment vous pouvez ouvrir une URL par programmation dans le navigateur Web intégré plutôt que dans votre application. Cela permet à votre application d'ouvrir une page Web sans avoir besoin d'inclure la permission INTERNET dans votre fichier manifeste.

public void onBrowseClick(View v) {
    String url = "http://www.google.com";
    Uri uri = Uri.parse(url);
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    // Verify that the intent will resolve to an activity
    if (intent.resolveActivity(getPackageManager()) != null) {
        // Here we use an intent without a Chooser unlike the next example
        startActivity(intent);
    } 
}

Demander à l'utilisateur de sélectionner un navigateur

Notez que cet exemple utilise la méthode Intent.createChooser() :

public void onBrowseClick(View v) {
    String url = "http://www.google.com";
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    // Note the Chooser below. If no applications match, 
    // Android displays a system message.So here there is no need for try-catch.
    startActivity(Intent.createChooser(intent, "Browse with"));
   
}

Dans certains cas, l'URL peut commencer par "www" . Si tel est le cas, vous obtiendrez cette exception:

android.content.ActivityNotFoundException : Aucune activité détectée pour gérer l'intention

L'URL doit toujours commencer par "http: //" ou "https: //" . Votre code doit donc le vérifier, comme illustré dans l'extrait de code suivant:

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

Les meilleures pratiques

Vérifiez s'il n'y a pas d'applications sur le périphérique pouvant recevoir l'intention implicite. Sinon, 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 objet Intent. Si le résultat est non nul, il existe au moins une application capable de gérer l'intention et d'appeler startActivity() 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.