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
Réponses:
Essaye ça:
Cela fonctionne bien pour moi.
Quant au "http: //" manquant, je ferais juste quelque chose comme ceci:
Je voudrais également pré-remplir votre EditText dans lequel l'utilisateur tape une URL avec "http: //".
la source
http://
schéma - l'exception indiquée suggère que votre URL n'a pas le schéma.if (!url.startsWith("http://") && !url.startsWith("https://"))
est une erreur courante qui peut vous conduire à des URL comme file: // et à casser quelques bonnes utilisations. Essayez d'analyser uri avec la classe URI et vérifiez s'il existe un schéma. Si non, ajoutez "http: //";)resolveCheck
. Voir les documents officiels : Attention: S'il n'y a aucune application sur l'appareil qui peut recevoir l'intention implicite, votre application se bloquera lorsqu'elle appellera startActivity (). Pour vérifier d'abord qu'une application existe pour recevoir l'intention, appelez resolverActivity () sur votre objet Intent.une façon courante d'y parvenir est avec le code suivant:
qui pourrait être changé en une version de code court ...
ou :
le plus court! :
codage heureux!
la source
Réponse simple
Vous pouvez voir l'exemple officiel du développeur Android .
Comment ça fonctionne
Veuillez consulter le constructeur de
Intent
:Vous pouvez passer l'
android.net.Uri
instance au 2e paramètre et une nouvelle intention est créée en fonction de l'url de données donnée.Et puis, appelez simplement
startActivity(Intent intent)
pour démarrer une nouvelle activité, qui est groupée avec l'intention avec l'URL donnée.Ai-je besoin du
if
relevé de contrôle?Oui. La documentation dit:
Prime
Vous pouvez écrire sur une ligne lors de la création de l'instance Intent comme ci-dessous:
la source
En 2.3, j'ai eu plus de chance avec
La différence étant l'utilisation de
Intent.ACTION_VIEW
plutôt que la chaîne"android.intent.action.VIEW"
la source
Essaye ça:
ou si vous voulez que le navigateur Web soit ouvert dans votre activité, faites comme ceci:
et si vous souhaitez utiliser le contrôle du zoom dans votre navigateur, vous pouvez utiliser:
la source
Si vous souhaitez montrer à l'utilisateur un dialogue avec toutes les listes de navigateurs, afin qu'il puisse choisir celui que vous préférez, voici un exemple de code:
la source
http
ouhttps
, et en java, c'est une bonne pratique de déclarer des "chaînes magiques" comme constantes.context.startActivity
. Très utile lors de l'appel depuis une classe externeTout comme les solutions que d'autres ont écrites (qui fonctionnent bien), je voudrais répondre à la même chose, mais avec un conseil que je pense que la plupart préféreraient utiliser.
Si vous souhaitez que l'application que vous commencez à 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:
Il existe également un moyen d'ouvrir l'URL dans les onglets personnalisés de Chrome . Exemple à Kotlin:
la source
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
est déconseilléautre option In Load Url in Same Application using Webview
la source
Vous pouvez également suivre cette voie
En xml:
En code java:
Dans Manifest, n'oubliez pas d'ajouter une autorisation Internet ...
la source
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 la coder en dur.
N'oubliez pas non plus les autorisations Internet dans AndroidManifest.
la source
Une version de code court ...
la source
Dans votre bloc d'essai, collez le code suivant, Android Intent utilise directement le lien entre les accolades URI (Uniform Resource Identifier) afin d'identifier l'emplacement de votre lien.
Vous pouvez essayer ceci:
la source
Simple et meilleure pratique
Méthode 1:
Méthode 2:
la source
context!!.packageManager
au lieu degetPackageManager()
dans unFragment
.la source
la source
La réponse de MarkB est juste. Dans mon cas, j'utilise Xamarin, et le code à utiliser avec C # et Xamarin est:
Ces informations sont extraites de: https://developer.xamarin.com/recipes/android/fundamentals/intent/open_a_webpage_in_the_browser_application/
la source
Les onglets personnalisés de Chrome sont désormais disponibles:
La première étape consiste à ajouter la bibliothèque de prise en charge des onglets personnalisés à votre fichier build.gradle:
Et puis, pour ouvrir un onglet personnalisé Chrome:
Pour plus d'informations: https://developer.chrome.com/multidevice/android/customtabs
la source
Sur la base de la réponse de Mark B et des commentaires ci-dessous:
la source
android.webkit.URLUtil
a la méthodeguessUrl(String)
fonctionne parfaitement bien (même avecfile://
oudata://
) depuisApi level 1
(Android 1.0). Utilisé comme:Dans l'appel d'activité:
Consultez le
guessUrl
code complet pour plus d'informations.la source
D'accord, j'ai vérifié toutes les réponses, mais quelle application a un lien profond avec la même URL que l'utilisateur veut utiliser?
Aujourd'hui, j'ai ce cas et la réponse est
browserIntent.setPackage("browser_package_name");
par exemple :
Je vous remercie!
la source
Affichage simple du site Web via l'intention,
utilisez ce code simple pour visualiser votre site Web dans l'application Android.
Ajouter une autorisation Internet dans le fichier manifeste,
la source
Cette erreur s'est produite en raison d'une URL non valide, Android OS ne peut pas trouver la vue d'action pour vos données. Vous avez donc validé que l'URL est valide ou non.
la source
Je pense que c'est le meilleur
Mettre le code ci-dessous en classe globale
la source
Cette méthode utilise une méthode pour vous permettre de saisir n'importe quelle chaîne au lieu d'avoir une entrée fixe. Cela enregistre certaines lignes de code si elles sont utilisées plusieurs fois, car vous n'avez besoin que de trois lignes pour appeler la méthode.
L'utilisation de cette méthode la rend universellement utilisable. L'informatique ne doit pas être placée dans une activité spécifique, car vous pouvez l'utiliser comme ceci:
Ou si vous souhaitez le démarrer en dehors d'une activité, vous appelez simplement startActivity sur l'instance d'activité:
Comme on le voit dans ces deux blocs de code, il y a une vérification nulle. C'est comme s'il renvoie null s'il n'y a pas d'application pour gérer l'intention.
Cette méthode est par défaut HTTP si aucun protocole n'est défini, car il existe 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 essayez d'utiliser HTTPS et il n'est pas là . Tout site Web peut toujours forcer HTTPS, donc ces côtés vous amènent à HTTPS de toute façon
Étant donné que cette méthode utilise des ressources externes pour afficher la page, vous n'avez pas besoin de déclarer l'autorisation INternet. L'application qui affiche la page Web doit le faire
la source
// Écouteur OnClick
// Votre méthode d'utilisation
la source
Allez simplement avec un court pour ouvrir votre URL dans le navigateur:
la source
La réponse de Kotlin:
J'ai ajouté une extension
Uri
pour rendre cela encore plus facileEn bonus, voici une fonction d'extension simple pour convertir en toute sécurité une chaîne en Uri.
la source
J'ai donc cherché cela depuis longtemps parce que toutes les autres réponses ouvraient l'application par défaut pour ce lien, mais pas le navigateur par défaut et c'est ce que je voulais.
J'ai finalement réussi à le faire:
BTW, vous pouvez remarquer
context
n'importe quoi, parce que je l'ai utilisé pour une méthode d'utilisation statique, si vous faites cela dans une activité, ce n'est pas nécessaire.la source
Vérifiez si votre URL est correcte. Pour moi, il y avait un espace indésirable avant l'URL.
la source
Essayez ceci .. travaillé pour moi!
code xml: -
--------- OU------------------
la source