Question Comment puis-je ouvrir une URL dans le navigateur Web d'Android depuis 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

1073
2018-02-04 17:51


origine


Réponses:


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 juste 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 "http: //".


2036
2018-02-04 18:01



un moyen commun 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); 

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!


60
2018-05-27 14:20



En 2.3, j'avais 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 Intent.ACTION_VIEW plutôt que la chaîne "android.intent.action.VIEW"


47
2018-03-16 15:35



Réponse simple

Tu peux voir l'exemple officiel de Android Developer.

/**
 * 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);
    }
}

Comment ça marche

S'il vous plaît jeter un oeil sur le constructeur de Intent:

public Intent (String action, Uri uri)

Tu peux passer android.net.Uri instance au second paramètre, et une nouvelle intention est créée sur la base de l'URL de données donnée.

Et puis, 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 if vérifier la déclaration?

Oui. le docs dit:

Si aucune application sur l'appareil ne peut recevoir l'intention implicite, votre application se bloque 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 y a au moins une application qui peut gérer l'intention et il est sûr d'appeler startActivity (). Si le résultat est null, vous ne devez pas utiliser l'intention et, si possible, vous devez désactiver la fonctionnalité qui invoque l'intention.

Prime

Vous pouvez écrire sur une ligne lors de la création de l'instance Intent comme ci-dessous:

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

36
2017-08-24 05:06



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 s'ouvre 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 voulez utiliser le contrôle du zoom dans votre navigateur, vous pouvez utiliser:

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

24
2017-08-31 10:10



Si vous voulez montrer à l'utilisateur un dialogue avec la liste de tous les navigateurs, afin qu'il puisse 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, "Choose browser"));// Choose browser is arbitrary :)

}

20
2018-01-09 08:55



Tout comme les solutions que d'autres ont écrites (ça marche bien), je voudrais répondre à la même chose, mais avec un conseil que je pense que la plupart préféreraient utiliser.

Dans le cas où vous souhaitez que l'application commence à s'ouvrir dans une nouvelle tâche, indépendante de la vôtre, au lieu de rester sur la même pile, 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);

15
2018-04-08 09:19



autre option In Load Url 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");

14
2018-06-25 08:01



Vous pouvez aussi aller de cette façon

En XML:

<?xml version="1.0" encoding="utf-8"?>
<WebView  
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

Dans le 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 le Manifeste, n'oubliez pas d'ajouter l'autorisation Internet ...


10
2017-12-19 06:04



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

N'oubliez pas non plus les autorisations Internet dans 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;
    }
}

6
2017-11-12 21:41