WebView historique de retour sans redirections
J'ai mis en place webview android et onKeyDown méthode pour la touche retour. (Elle met en œuvre webview.goBack();
)
Mon problème est exactement semblable à la question dans ce post ci-dessous (pas de réponses)
Comment faire pour contrôler la WebView Android histoire/pile de retour?
PROBLÈME Quand je presse le bouton de retour, webview
sélectionne l'URL précédente, mais si cette URL est en fait une redirection, il va dans ce cercle vicieux/boucle. Si vous regardez le chrome ou le navigateur par défaut, il gère correctement le dos sans revenir sur les redirections.
Comment cela peut-il être résolu?
Exemple: aller à gap.com. Ensuite, sélectionnez "Mon Écart de Carte de Crédit". Cela ouvre un lien de redirection et puis la dernière page. Maintenant quand je clique sur le dos, il ne va jamais à Gap.com la page d'accueil.
Des suggestions...
Informations supplémentaires: j'ai fait de mettre en œuvre la shouldOverrideUrlLoading
. Si je supprime cette méthode, il semble fonctionner très bien, mais avec cette méthode, il ne...
source d'informationauteur jrebecca1
Vous devez vous connecter pour publier un commentaire.
Je viens de testé sur des jellybean et il semble fonctionner.
Essentiellement, chaque fois qu'une nouvelle URL est chargé dans la WebView de conserver une copie de l'url.
Sur la prochaine demande d'URL, vérifiez qu'ils ne sont pas déjà sur cette page, si elles le sont, ensuite revenir en arrière dans la webview l'histoire d'une autre étape.
C'est en s'appuyant sur l'url passée en remplacement de l'étape en cours de la redirection d'url, plutôt que le dernier url redirigée.
J'espère que cette réponse si quelqu'un est toujours à la recherche pour elle.J'avais été à la chasse pour résoudre des problèmes similaires dans mon projet et a tenté plusieurs approches comme l'utilisation de
- WebView.HitTestResult
- Pousser l'url dans la liste
- onKeyDown et ainsi de suite...
Je pense que cela fonctionnerait si votre application se compose de seulement webview. Mais mon projet a eu une combinaison de maternelle et webview et poignées de certains indigènes schéma.
Essentiellement, la clé est de savoir comment vous substituez la méthode shouldOverrideUrlLoading. Depuis que j'ai voulu que mon app gère les urls et la webview pour gérer certains de ceux en particulier, l'arrière de la manipulation.J'ai utilisé un drapeau pour le retour des presses à quelque chose comme ..
De cette façon, chaque fois qu'il y a une redirection lorsque vous cliquez à nouveau, puis il retourne false, et donc se moque du comportement de la webview. Dans le même temps, vous vous assurez que les isBackPressed est défini à false, après le chargement de la page terminé.
Espérons que cette aide !!