Wie steuere ich den Android WebView-Verlauf / Backstack?

8

Ich versuche herauszufinden, wie ich mit dem WebView-Backstack umgehen kann, ähnlich wie der Android-Webbrowser es behandelt, wenn die Zurück-Taste in der WebView meiner eigenen App gedrückt wird.

Das Problem hat mit Javascript-Weiterleitungen zu tun. Der WebView-Backstack scheint URLs zu enthalten, die einfach umgeleitet werden. Hier ist mein relevanter Code:

%Vor%

Wie Sie sehen können, wird durch Drücken der Zurück-Taste die vorherige URL im Stack ausgewählt, die nach Aufruf von sumberOverrideUrlLoading () in das WebView geladen wird. Ich mache eigentlich viel mehr in shallOverrideUrlLoading (), das für diese spezielle Frage nicht relevant ist, also "entferne meine WebViewClient-Implementierung" wird für mich nicht funktionieren. Wenn die vorherige URL eine JavaScript-Umleitung ist, wird diese URL geladen und Javascript leitet sofort zu der URL um, an der sich das WebView gerade befand. Ich kann Javascript nicht deaktivieren, da die Website davon abhängt. Ich kann die Website auch nicht ändern (Drittanbieter).

Das Ergebnis dieses Umleitungsproblems ist ein Teufelskreis für den Endbenutzer, der verzweifelt zurückdrückt, nur um etwas schneller zu sein als die Android-Webseitenverarbeitungs-Engine.

Hier wird es jetzt interessant: Der Android-Webbrowser behandelt den Zurück-Button ganz gut für Javascript-Weiterleitungen! Es folgt den Weiterleitungen, aber die Zurück-Schaltfläche tut, was ein Benutzer erwartet, dass es tut. Das bedeutet, dass dieses Szenario korrekt gehandhabt werden kann. Wie geht der Android-Webbrowser mit diesem Problem um?

    
Paula Bean 18.01.2013, 01:01
quelle

5 Antworten

4

Ihr onKeyDown sollte wie folgt aussehen

%Vor%

Hier wird myWebView in der Aktivität onCreate

deklariert     
Narasimha 22.05.2013 00:32
quelle
4

Erkennen, wenn URL-Laden vom Benutzer ausgelöst wird, und fügen diese stattdessen dem Backstack hinzu.

%Vor%     
sihrc 12.06.2014 16:56
quelle
1

Ich hatte ein ähnliches Problem mit Ihrem und habe herausgefunden, wie ich es herausfinden kann. Hier ist meine Antwort .

Wenn ich auf den ersten Link (www.new.a.) klicke, wird automatisch ein anderer Link (mobile.new.a) umgeleitet. Normalerweise leiten die Links zwei oder drei um, und meine Lösung wurde an fast allen Weiterleitungslinks bearbeitet. Ich hoffe, dass diese Antwort Ihnen helfen wird, Links umzulenken.

Ich habe es endlich herausgefunden. Sie benötigen einen WebViewClient mit vier APIs. Es gibt im WebViewClient shouldOverrideUrlLoading (), onPageStarted (), onPageFinished () und doUpdateVisitedHistory (). Alle APIs, die Sie benötigen, sind API 1, also machen Sie sich keine Sorgen.

Hier ist meine Antwort . Schau dir das an! :)

    
theWook 23.07.2014 01:33
quelle
0
%Vor%     
Umair Irshad 09.09.2016 14:13
quelle
0

Die richtige Antwort ist, false auf shouldOverrideUrlLoading() zurückzugeben, wie in Ссылка und Ссылка . Dadurch wird verhindert, dass Weiterleitungen zur Verlaufsliste hinzugefügt werden.

    
Soren Stoutner 17.05.2017 07:56
quelle

Tags und Links