2012-05-16 14 views
7

Ich habe ein WebView, das Social-Media-Seiten lädt. Ich habe die Zurück-Schaltfläche überschrieben, um die Methode goBack auf der WebView aufzurufen, bis canGoBack()false zurückgibt. Dann ruft es super.onBackPressed(). Das Problem ist, dass Twitter und YouTube Javascript so verwenden, dass canGoBack()true zurückgibt, wenn Sie nicht wirklich schnell auf die Zurück-Schaltfläche tippen.Android WebView CanGoBack immer wahr

Ich habe versucht, die ursprüngliche URL mit der aktuellen URL Überprüfung, aber die Seite hat eine andere URL als die, die in übergeben werden.

Ist eine Möglichkeit, jemand kennt die Zurück-Taste rufen Sie die WebView ist zu haben goBack Methode, bis Sie am Anfang sind, dann rufen Sie super.onBackPressed?

Antwort

0

Nun, es ist nicht ideal, aber Sie können den Navigationsverlauf manuell verfolgen, indem Sie ein Array verwenden (oder einfach eine Ganzzahl vergrößern oder verkleinern) und die aktuelle URL jedes Mal drücken und die letzte URL daraus löschen Wenn Sie die Zurück-Taste drücken und das Array leer ist (oder die Ganzzahl 0 ist), rufen Sie super.onBackPressed().
Um Code auszuführen, wenn sich die URL ändert, können Sie die Methode boolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request) des WebViewClient (link to the documentation) überschreiben.
Auf diese Weise kann das JavaScript der Webseite nicht stören, wie Sie mit der Zurück-Schaltfläche umgehen.