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
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://".
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!
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"
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));
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);
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 :)
}
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);
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");
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...
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;
}
}
une version courte...
if (!strUrl.startsWith("http://") && !strUrl.startsWith("https://")){
strUrl= "http://" + strUrl;
}
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(strUrl)));
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);
String url = "http://www.example.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
Intent getWebPage = new Intent(Intent.ACTION_VIEW, Uri.parse(MyLink));
startActivity(getWebPage);
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
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 /
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" />
Vérifiez si votre url est correcte. Pour moi il y avait un espace indésirable avant url.
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);
}
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);
}
}
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.
/ / 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);
}
}
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);
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
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!
Try this one Omegaintenbuilder
OmegaIntentBuilder.from(context)
.web("Your url here")
.createIntentHandler()
.failToast("You don't have app for open urls")
.startActivity();
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:
- obtenir le manifeste permissions
- espace excédentaire entre url
- Vérifiez votre url correct ou non
si vous voulez faire cela avec XML non programmatically vous pouvez utiliser sur votre TextView:
android:autoLink="web"
android:linksClickable="true"