Zurück Button in WebView App
Der Zurück Button in einer WebView App schießt standardmäßig die App. Dieses Verhalten ist für die Navigation auf einer Webseite nicht sinnvoll, deshalb müssen wir eine kleine Änderung an der Programmierung machen. In den letzten Artikeln zum Thema Android WebView App habe ich ja bereits gezeigt wie einfach es ist eine solche App zu bauen.
Zurück Button in WebView App
Das WebView Element von Android ist recht flexibel, es bietet bereits sehr viele Funktionen an die man nur richtig einsetzen muss. Eine dieser Funktionen ist die goBack() Methode, mit der lädt man die zuletzt geöffnete URL. Diese Methode entspricht deshalb exakt dem Verhalten der Zurück-Taste im Browser.
Wir müssen nun lediglich goBack() aufrufen, wenn man die Android Taste Zurück klickt. In der Android Activity kann man durch das Überschreiben der onKeyDown Funktion auf alle Tastenevents reagieren. Wir müssen nur den korrekten KeyEvent kennen. Die Zurück Taste hat den Namen KEYCODE_BACK. Sollte also diese Taste gedrückt worden sein, rufen wir die zuletzt gezeigte Seite erneut auf. In dem Fall, dass die aktuell angezeigte Seite die erste Seite in der History ist machen wir gar nichts.
Der vollständige Code sieht wie folgt aus:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(event.getAction() == KeyEvent.ACTION_DOWN) { switch(keyCode) { case KeyEvent.KEYCODE_BACK: if(wv.canGoBack()) { wv.goBack(); } else { finish(); } return true; } } return super.onKeyDown(keyCode, event); }
Falls die Taste mit dem KeyEvent KEYCODE_BACK geklickt wurde ändern wir das Verhalten des WebView Elements. Dieses ist als Klassenvariable mit dem Namen wv angelegt. Aus diesem Grund können wir recht einfach aus der Methode darauf zugreifen. Wichtig ist, dass wir am Ende der Funktion die onKeyDown der Parent Klasse aufrufen, sonst würde alle anderen Tastenevents die abgearbeitet würden nicht mehr verarbeitet. Im schlimmsten Fall würde die App dann nicht mehr korrekt funktionieren.
Fazit
Man kann in einer WebView Android App recht einfach das Verhalten der Tasten des Smartphones oder Tablets verändern. Dazu muss man lediglich die onKeyDown Methode überschreiben und die benötigten KEYCODE KeyEvents abfragen und gegebenenfalls eigenen Code ausführen.