Comment puis-je ouvrir une URL dans Android du navigateur web à partir de mon application?
Comment ouvrir une URL à partir de 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 je suis une Exception:
No activity found to handle Intent{action=android.intent.action.VIEW data =www.google.com
- Je pense que c'est à cause de ceci: android-developers.blogspot.com/2009/12/...
- Pourquoi cela ne fonctionne pas sur certains appareils? même si il y a un navigateur web, il va à ActivityNotFoundException.
- Je vois le même problème que @Manu. L'installation de base sur un Nexus 6, du chrome, mais les liens provoquer une exception.
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Qui fonctionne très bien pour moi.
Comme manquant "http://" je venais de faire quelque chose comme ceci:
Je serait aussi probablement pré-remplir votre EditText que l'utilisateur tape une URL avec des "http://".
http://
de couleurs-l'exception ci suggère que votre URL est le manque de régime.if (!url.startsWith("http://") && !url.startsWith("https://"))
est une erreur commune qui peut conduire vous à des url comme file:// et de briser quelques bonnes usecases. Essayez d'analyser uri avec la classe URI et de contrôle est-il un schéma. Si non, ajouter "http://" 😉UrlValidator.getInstance().isValid(url)
resolveCheck
. Voir le officiel docs : Attention: Si il n'y a pas d'applications sur l'appareil qui peut recevoir l'intention implicite, votre application crash quand il appelle startActivity(). Pour vérifier qu'une application existe pour recevoir de l'intention, appel resolveActivity() sur votre Intention d'objet.un bon moyen d'y parvenir est avec le code suivant:
qui pourrait être changé pour une courte version du code de ...
ou :
le plus court! :
bon codage!
En 2.3, j'ai eu plus de chance avec
La différence étant l'utilisation de
Intent.ACTION_VIEW
plutôt que de la Chaîne"android.intent.action.VIEW"
Réponse Simple
Vous pouvez voir l'échantillon officiel de Développeur Android.
Comment il fonctionne
Veuillez consulter le constructeur de
Intention
:Vous pouvez passer
android.net.Uri
exemple pour le 2ème paramètre, et une nouvelle Intention est créé sur la base de données d'url.Et puis, il suffit d'appeler
startActivity(Intent intent)
pour démarrer une nouvelle Activité, qui est livré avec l'Intention avec l'URL donnée.Faire j'ai besoin de la
if
vérifier déclaration?Oui. Le docs dit:
Bonus
Vous pouvez écrire en une seule ligne lors de la création de l'Intention de l'instance comme ci-dessous:
Essayez ceci:
ou si vous le souhaitez puis navigateur web ouvert dans votre activité puis faire comme ceci:
et si vous souhaitez utiliser la commande de zoom de votre navigateur, puis vous pouvez utiliser:
Si vous voulez montrer à l'utilisateur un dialogue avec tous les navigateur de la liste, alors il peut choisir préféré, voici un exemple de code:
http
ouhttps
, et en java, il est une bonne pratique pour déclarer " la magie des cordes comme des constantes.context.startActivity
. Très utile lors de l'appel à partir d'une classe externeTout comme les autres solutions ont écrit (qui fonctionnent bien), je tiens à répondre la même chose, mais avec une astuce que je pense que la plupart préfèrent utiliser.
Dans le cas où vous souhaitez que l'application que vous commencez à ouvrir dans une nouvelle tâche, indepandant de votre propre, au lieu de rester sur la même pile, vous pouvez utiliser ce code:
Il est aussi un moyen d'ouvrir l'URL dans google Chrome Onglets Personnalisés . Exemple de Kotlin :
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
est obsolèteautre option Charger l'Url dans la Même Application à l'aide de Webview
Vous pouvez aussi aller dans cette voie
En xml :
Dans du code java :
Dans le Manifeste n'oubliez pas d'ajouter des autorisations internet...
Webview peut être utilisé pour charger l'Url dans votre applicaion.
L'URL peut être fournie par l'utilisateur en mode texte ou vous pouvez coder en dur.
Aussi n'oubliez pas d'internet autorisations dans AndroidManifest.
Une courte version du code de...
Au sein de votre bloc try,collez le code suivant,Android Intention utilise directement le lien dans l'URI(Uniform Resource identifier) des accolades pour indiquer l'emplacement de votre lien.
Vous pouvez essayer ceci:
La réponse de MarkB est droit. Dans mon cas, je suis à l'aide de Xamarin, et le code à utiliser avec C# et Xamarin est:
Cette information est prise en charge à partir de: https://developer.xamarin.com/recipes/android/fundamentals/intent/open_a_webpage_in_the_browser_application/
Chrome onglets personnalisés sont maintenant disponibles:
La première étape est d'ajouter les Onglets Personnalisés Bibliothèque de prise en charge de votre construction.gradle fichier:
Et puis, pour ouvrir un chrome onglet personnalisé:
Pour plus d'info:
https://developer.chrome.com/multidevice/android/customtabs
Simples et les Meilleures Pratiques
Méthode 1:
Méthode 2:
Basé sur la réponse de Mark B et les commentaires ci-dessous:
android.webkit.URLUtil
a la méthodeguessUrl(String)
fonctionne parfaitement bien (même avecfile://
oudata://
) depuisApi level 1
(Android 1.0). Utiliser comme:Dans l'Activité de l'appel:
Consultez le programme complet
guessUrl
code pour plus d'info.Simple, le site web de la vue via intention,
utiliser ce code simple toview votre site web dans l'application android.
Ajouter internet de l'autorisation dans le fichier de manifeste,
Que l'erreur s'est produite en raison d'URL non valide, système d'exploitation Android ne peut pas trouver d'action en vue de vos données. Donc, vous devez vérifier que l'URL est valide ou pas.
Je pense que c'est le meilleur
Mettre de code ci-dessous dans la classe globale
Cette méthode utilise une méthode, pour vous permettre de saisir une Chaîne de caractères au lieu d'avoir une entrée fixe. Cela permet de gagner quelques lignes de code si elle est utilisée de façon répétée le nombre de fois où, comme vous l'avez seulement besoin de trois lignes pour appeler la méthode.
À l'aide de cette méthode, il est universellement utilisable. IL n'a pas à être placé dans une activité spécifique, que vous pouvez l'utiliser comme ceci:
Ou si vous souhaitez démarrer à l'extérieur d'une activité, il vous suffit d'appeler startActivity sur l'activité de l'instance:
Comme on le voit dans ces deux blocs de code il y a un null-case. C'est qu'elle retourne null si il n'y a pas d'app pour gérer l'intention.
Cette méthode par défaut pour HTTP si il n'y a pas de protocole défini, comme il ya des sites qui n'ont pas de certificat SSL(ce dont vous avez besoin pour une connexion HTTPS) et ceux qui vont arrêter de travailler si vous tentez d'utiliser le protocole HTTPS et il n'y est pas. Tout site web peut encore forcer à HTTPS, de sorte que les côtés des terres-vous à l'adresse HTTPS de toute façon
Parce que cette méthode utilise des ressources de l'extérieur pour afficher la page, il n'est pas nécessaire pour vous de déclarer le INternet autorisation. L'application affiche la page web de a à faire
//OnClick Auditeur
//Votre Util Méthode
Vérifier si votre url est correcte.
Pour moi, il n'était pas désirée de l'espace avant d'url.
Essayer ce..a Fonctionné pour moi!
code xml :-
--------- OU------------------
Ok,j'ai vérifié chaque réponse, mais ce que l'application a deeplinking avec la même URL que l'utilisateur veut utiliser?
Aujourd'hui j'ai eu ce cas et la réponse est
browserIntent.setPackage("browser_package_name");
par exemple :
Merci!
Essayer celui-ci OmegaIntentBuilder
Introduction De Base:
https:// est l'aide que l'on dans le "code" de sorte que nul n'entre peut les lire. Cela permet de conserver vos données à l'abri des pirates.
http:// est juste en utilisant le partage de but, il n'est pas garanti.
Au Sujet De Votre Problème:
XML conception:
De L'Activité De Conception:
Android Manifest.Xml autorisations:
Vous faites face à des Problèmes lors de la mise en œuvre de cette:
Si vous voulez le faire avec XML non par programme que vous pouvez utiliser sur votre TextView:
Allez simplement à court d'ouvrir votre Url dans le Navigateur: