J'ai chargé une URL externe dans mon WebView
. Maintenant, ce dont j'ai besoin, c'est que lorsque l'utilisateur clique sur les liens de la page chargée, il doit fonctionner comme un navigateur normal et ouvrir le lien de la même manière WebView
. Mais c'est ouvrir le navigateur par défaut et y charger la page?
J'ai activé JavaScript. Mais ça ne marche toujours pas. Ai-je oublié quelque chose?
WebViewClient
et n'a pas besoin de sous-classement si c'est tout ce que vous faites. Je l'ai fait fonctionner juste en faisantmyWebView.setWebViewClient(new WebViewClient());
dans certains cas, vous pourriez avoir besoin d'un remplacement de onLoadResource si vous obtenez une redirection qui ne déclenche pas la méthode de chargement d'URL. dans ce cas, j'ai essayé ce qui suit:
la source
La documentation officielle indique que cliquer sur un lien dans une WebView lancera une application qui gère les URL. Vous devez remplacer ce comportement par défaut
ou s'il n'y a pas de logique conditionnelle dans la méthode, faites-le simplement
la source
Ajoutez ces 2 lignes dans votre code -
la source
La méthode a
boolean shouldOverrideUrlLoading(WebView view, String url)
été déconseillée dans l'API 24. Si vous prenez en charge de nouveaux périphériques, vous devez les utiliserboolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request)
.Vous pouvez utiliser les deux en faisant quelque chose comme ceci:
la source
La réponse d'Arulx Z était exactement ce que je cherchais.
J'écris une application avec Navigation Drawer avec recyclerview et webviews, pour garder la navigation Web à l'intérieur de l'application sans cliquer sur les hyperliens (donc ne pas lancer le navigateur Web externe). Pour cela il suffira de mettre les 2 lignes de code suivantes:
mWebView.setWebChromeClient(new WebChromeClient()); mWebView.setWebViewClient(new WebViewClient());
exactement sous votre instruction WebView.
Voici un exemple de mon code WebView implémenté:
De cette façon, chaque lien cliqué sur le site Web se chargera dans votre WebView. (Utilisation d'Android Studio 1.2.2 avec tous les SDK mis à jour)
la source