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

comment ouvrir une URL à partir d'un 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 eu une Exception:

No activity found to handle Intent{action=android.intent.action.VIEW data =www.google.com
1112
demandé sur Sufian 2010-02-04 20:51:45

28 réponses

essayez ceci:

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

ça me va.

comme pour le manquant "http: / /" je ferais juste quelque chose comme ça:

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

Je pré-remplirais probablement aussi votre texte que l'utilisateur tape une URL avec"http://".

2097
répondu Mark B 2018-04-01 09:59:14

une façon courante 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é 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")));

bon codage!

63
répondu Jorgesys 2015-09-17 13:59:35

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 étant l'utilisation de Intent.ACTION_VIEW plutôt que la chaîne "android.intent.action.VIEW"

48
répondu MikeNereson 2011-03-16 15:35:22

Réponse Simple

vous pouvez voir l'échantillon officiel de développeur Android .

/**
 * 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

Veuillez consulter le constructeur de Intent :

public Intent (String action, Uri uri)

vous pouvez passer android.net.Uri instance au 2ème paramètre, et une nouvelle intention est créée sur la base de l'url de données Donnée.

et ensuite, il suffit d'appeler startActivity(Intent intent) pour commencer une nouvelle Activité, qui est livré avec l'Intention avec l'URL donnée.

ai-je besoin de la déclaration de contrôle if ?

Oui. Le docs dit:

s'il n'y a aucune application sur le périphérique qui puisse recevoir l'intention implicite, votre application se plantera quand elle appellera startActivity(). Pour vérifier qu'une application existe pour recevoir de l'intention, appel resolveActivity() sur votre objet intention. Si le résultat est non nul, il existe au moins une application qui permet de gérer l'intention et il est sûr d'appeler startActivity(). Si le résultat est nul, vous ne devez pas utiliser l'intention et, si possible, vous devez désactiver la fonction qui appelle à l'intention.

Bonus

vous pouvez écrire dans 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));
40
répondu phi 2016-07-21 14:37:23

essayez ceci:

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

ou si vous voulez alors web browser ouvrir 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 voulez utiliser zoom control dans votre navigateur alors vous pouvez utiliser:

settings.setSupportZoom(true);
settings.setBuiltInZoomControls(true);
27
répondu nikki 2018-05-26 10:46:48

si vous voulez montrer à l'utilisateur un dialogue avec toute la liste de navigateur, 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 :)

}
21
répondu Dmytro Danylyk 2016-10-19 14:09:03

tout comme les autres solutions ont écrit (qui fonctionnent bien), je voudrais répondre à la même chose, mais avec un conseil que je pense que la plupart préférerait utiliser.

dans le cas où vous souhaitez que l'application que vous commencez à ouvrir dans une nouvelle tâche, indépendant de votre propre, 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);
16
répondu android developer 2014-04-08 09:19:51

autre option dans L'Url de chargement dans la même Application en utilisant Webview

webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://www.google.com");
15
répondu Sanket 2018-05-26 10:47:02

vous pouvez aussi aller par là

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" />

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 le Manifeste n'oubliez pas d'ajouter la permission internet...

11
répondu Aristo Michael 2014-04-28 11:02:58

Webview peut être utilisé pour charger L'Url dans votre application. URL peut être fourni par l'utilisateur dans la vue de texte ou vous pouvez hardcode il.

aussi n'oubliez pas les permissions 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;
    }
}
7
répondu Gorav Sharma 2015-11-12 21:41:16

une version courte...

 if (!strUrl.startsWith("http://") && !strUrl.startsWith("https://")){
     strUrl= "http://" + strUrl;
 }


 startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(strUrl)));
6
répondu Jorgesys 2013-12-03 16:24:32

dans votre bloc d'essai,collez le code suivant,Android Intent utilise directement le lien dans les bracelets 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);
6
répondu Kanwar_Singh 2015-04-21 14:34:55
String url = "http://www.example.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
4
répondu Pradeep Sodhi 2014-09-04 08:03:06
Intent getWebPage = new Intent(Intent.ACTION_VIEW, Uri.parse(MyLink));          
startActivity(getWebPage);
3
répondu TheOddAbhi 2014-07-17 12:40:53

Chrome onglets personnalisés sont maintenant disponibles:

la première étape consiste à ajouter la bibliothèque de Support des onglets personnalisés à votre Compilation.gradle fichier:

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

et ensuite, pour ouvrir un onglet personnalisé chrome:

String 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

3
répondu francisco_ssb 2018-05-26 10:47:35

la réponse de MarkB est juste. Dans mon cas, J'utilise Xamarin, et le code à utiliser avec C# et Xamarin est:

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

cette information est tirée de: https://developer.xamarin.com/recipes/android/fundamentals/intent/open_a_webpage_in_the_browser_application /

2
répondu Juan Carlos Velez 2017-07-11 13:02:53

Simple, site web view via intent,

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 internet de l'autorisation dans le fichier de manifeste,

<uses-permission android:name="android.permission.INTERNET" /> 
2
répondu stacktry 2018-05-26 10:48:03

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

1
répondu Sonia John Kavery 2016-03-22 15:33:28

je pense que c'est le meilleur

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

mettez le code ci-dessous dans la classe globale

    public static void openBrowser(Context context, String url) {

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

        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        context.startActivity(browserIntent);
    }
1
répondu Karthik Sridharan 2016-11-16 14:53:55

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

protected void launchUrl(String 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);
    }
}
1
répondu divonas 2016-12-16 06:35:33

android.webkit.URLUtil a la méthode guessUrl(String) fonctionne parfaitement bien (même avec file:// ou data:// ) depuis Api level 1 (Android 1.0). Utiliser comme:

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

cochez la case complète guessUrl code pour plus d'information.

1
répondu I.G. Pascual 2017-06-23 02:26:24

/ / OnClick Listener

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

/ / Votre Méthode Util

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

    }
1
répondu Faakhir 2018-01-22 10:28:41

essayez ceci..A fonctionné 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("<your link>");

        }

code xml: -

 <WebView  xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webview"
        android:visibility="gone"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />

--------- OU------------------

String url = "";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
0
répondu Debasish Ghosh 2017-05-02 05:37:21

de cette façon utilise une méthode, pour vous permettre d'entrer n'importe quelle chaîne de caractères au lieu d'avoir une entrée fixe. Cela permet de sauver quelques lignes de code si utilisé une quantité répétée de fois, comme vous n'avez besoin de trois lignes pour appeler la méthode.

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

cette méthode la rend universellement utilisable. Il n'est pas nécessaire de le placer 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 commencer en dehors d'une activité, vous appeler l'activitécommerciale sur l'instance d'activité:

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

comme vu dans ces deux blocs de code il y a un null-check. C'est qu'elle retourne null si il n'y a pas d'app pour gérer l'intention.

cette méthode renvoie par défaut à HTTP S'il n'y a pas de protocole défini, car il y a des sites Web qui n'ont pas de certificat SSL(ce dont vous avez besoin pour une connexion HTTPS) et ceux-ci cesseront de fonctionner si vous tentez d'utiliser HTTPS et qu'il n'y en a pas. Tout site web peut encore forcez-vous à HTTPS, de sorte que ces côtés vous atterrissent à HTTPS dans un sens ou dans l'autre


parce que cette méthode utilise des ressources externes pour afficher la page, il n'est pas nécessaire de déclarer la permission INternet. L'application qui affiche la page Web doit faire cela

0
répondu Zoe 2017-05-02 16:01:39

OK, j'ai vérifié toutes les réponses mais quelle application a une connexion profonde avec la même URL que l'utilisateur veut utiliser?

Aujourd'hui j'ai eu cette affaire et la réponse est browserIntent.setPackage("browser_package_name");

p.ex.:

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

Merci!

0
répondu Vaibhav Kadam 2018-01-10 03:03:30

Try this one Omegaintenbuilder

OmegaIntentBuilder.from(context)
                .web("Your url here")
                .createIntentHandler()
                .failToast("You don't have app for open urls")
                .startActivity();
0
répondu T. Roman 2018-01-23 14:07:21

Introduction De Base:

https:// utilise celui-ci dans le "code" afin que personne entre les deux ne puisse les lire. Cela protège vos informations contre les pirates.

http:// utilise juste but de partage, il n'est pas sécurisé.

à propos de votre problème:

conception XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.sridhar.sharedpreferencesstackoverflow.MainActivity">
   <LinearLayout
       android:orientation="horizontal"
       android:background="#228b22"
       android:layout_weight="1"
       android:layout_width="match_parent"
       android:layout_height="0dp">
      <Button
          android:id="@+id/normal_search"
          android:text="secure Search"
          android:onClick="secure"
          android:layout_weight="1"
          android:layout_width="0dp"
          android:layout_height="wrap_content" />
      <Button
          android:id="@+id/secure_search"
          android:text="Normal Search"
          android:onClick="normal"
          android:layout_weight="1"
          android:layout_width="0dp"
          android:layout_height="wrap_content" />
   </LinearLayout>

   <LinearLayout
       android:layout_weight="9"
       android:id="@+id/button_container"
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:orientation="horizontal">

      <WebView
          android:id="@+id/webView1"
          android:layout_width="match_parent"
          android:layout_height="match_parent" />

   </LinearLayout>
</LinearLayout>

Activité Conception:

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

Manifeste Android.Xml autorisations:

<uses-permission android:name="android.permission.INTERNET"/>

Vous faites face à des Problèmes lors de la mise en œuvre de cette:

  1. obtenir le manifeste permissions
  2. espace excédentaire entre url
  3. Vérifiez votre url correct ou non
0
répondu ballu 2018-05-26 10:49:24

si vous voulez faire cela avec XML non programmatically vous pouvez utiliser sur votre TextView:

android:autoLink="web"
android:linksClickable="true"
-1
répondu Salam El-Banna 2017-01-19 07:58:13