144 votes

WebView Android, comment gérer les redirections en application au lieu de l'ouverture d'un navigateur

Donc, pour l'instant dans mon application de l'URL je suis d'accéder a une redirection, et lorsque cela arrive, la WebView va ouvrir une nouvelle fenêtre de navigateur, au lieu de rester dans mon application. Est il possible que je peux modifier les paramètres de sorte que la Vue sera redirigé vers l'URL de la forme normale, mais rester dans mon application, au lieu d'ouvrir un nouveau navigateur?

Edit:

Je veux la redirection d'URL, je ne sais pas comment le créer, donc le seul moyen pour se rendre à l'adresse URL est par le biais de l'un qui va provoquer une redirection vers celui que je veux.

Par exemple: Quand vous allez ici: http://www.amazon.com/gp/aw/s/ref=is_box_/k=9780735622777 remarquez comment il va rediriger l'URL du produit réel. Dans mon application, si je l'ouvre dans une nouvelle fenêtre de navigateur, il suffit de bien, mais si je le garde dans mon application avec une WebView, il s'affiche comme s'il s'agissait de faire une recherche pour k=9780735622777, comme ceci: http://www.amazon.com/gp/aw/s/ref=is_s_?k=k%3D9780735622777&x=0&y=0 . OU, il va ouvrir la vue dans le navigateur et de montrer ce qui est approprié. Cependant, je tiens à garder tout dans mon application.

270voto

xandy Points 13480

Créer un WebViewClient, et de remplacer les shouldOverrideUrlLoading méthode.

webview.setWebViewClient(new WebViewClient() {
    public boolean shouldOverrideUrlLoading(WebView view, String 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
   }
});

31voto

abbas Points 483

Selon le responsable de la documentation, un clic sur un lien dans une WebView lance une application qui gère les Url, qui est par défaut d'un navigateur. Vous avez besoin de remplacer le comportement par défaut comme ceci

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X