Android WebView, comment gérer les redirections dans l’application au lieu d’ouvrir un navigateur

Donc, maintenant, dans mon application, l’URL à laquelle j’accède a une redirection et, lorsque cela se produit, WebView ouvrira un nouveau navigateur, au lieu de restr dans mon application. Existe-t-il un moyen de modifier les parameters afin que View redirige vers l’URL comme d’habitude, mais rest dans mon application au lieu d’ouvrir un nouveau navigateur?

Modifier:

Je veux l’URL de redirection, je ne sais simplement pas comment le créer, donc la seule façon d’arriver à cette URL est de passer par une redirection vers celle que je veux.

Par exemple: lorsque vous allez ici: http://www.amazon.com/gp/aw/s/ref=is_box_/k=9780735622777 notez comment il redirecta l’URL vers le produit réel. Dans mon application, si je l’ouvre dans un nouveau navigateur, cela ira très bien, mais si je le garde dans mon application avec un WebView, il apparaîtra comme s’il faisait une recherche sur k = 9780735622777, comme ceci: http://www.amazon.com/gp/aw/s/ref=is_s_?k=k%3D9780735622777&x=0&y=0 . OU, il ouvrira la vue dans le navigateur et montrera ce qui est approprié. Cependant, je veux tout garder dans mon application.

Créez un WebViewClient et remplacez la méthode shouldOverrideUrlLoading .

webview.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, Ssortingng url){ // do your handling codes here, which url is the requested url // probably you need to open that url rather than redirect: view.loadUrl(url); return false; // then it is not handled by default action } }); 

Selon la documentation officielle, un clic sur n’importe quel lien dans WebView lance une application qui gère les URL, qui est par défaut un navigateur. Vous devez remplacer le comportement par défaut comme celui-ci

  myWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, Ssortingng url) { return false; } }); 

Il suffit d’append un WebViewClient personnalisé par défaut. Cela fait que WebView gère toutes les URL chargées elles-mêmes.

 mWebView.setWebViewClient(new WebViewClient()); 

Vous devrez définir votre méthode WebviewClient de remplacement à mustOverrideUrlLoading pour votre site Web avant de charger l’URL.

 mWebView.setWebViewClient(new WebViewClient() { @SuppressWarnings("deprecation") @Override public boolean shouldOverrideUrlLoading(WebView webView, Ssortingng url) { return shouldOverrideUrlLoading(url); } @TargetApi(Build.VERSION_CODES.N) @Override public boolean shouldOverrideUrlLoading(WebView webView, WebResourceRequest request) { Uri uri = request.getUrl(); return shouldOverrideUrlLoading(uri.toSsortingng()); } private boolean shouldOverrideUrlLoading(final Ssortingng url) { Log.i(TAG, "shouldOverrideUrlLoading() URL : " + url); // Here put your code return true; // Returning True means that application wants to leave the current WebView and handle the url itself, otherwise return false. } }); 

Vérifiez l’exemple de code pour gérer les URL de redirection et ouvrez PDF sans téléchargement, dans Webview. https://gist.github.com/ashishdas09/014a408f9f37504eb2608d98abf49500

Créez une classe qui implémente webviewclient et ajoutez le code suivant qui permet de modifier la chaîne d’URL comme indiqué ci-dessous. Vous pouvez voir ces exemples

 public class myWebClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, Ssortingng url) { view.loadUrl(url); return true; } } 

Sur votre constructeur, créez un object de vue Web comme indiqué ci-dessous.

  web = new WebView(this); web.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); 

Ensuite, ajoutez le code suivant pour effectuer le chargement des URL à l’intérieur de votre application

  WebSettings settings=web.getSettings(); settings.setJavaScriptEnabled(true); web.loadUrl("http://www.facebook.com"); web.setWebViewClient(new myWebClient()); web.setWebChromeClient(new WebChromeClient() { // // } 

Téléchargez la démo