PhoneGap, jQuery Mobile, Android und der Back-Button *UPDATED*

Posted on by Julian Stock.

Heute habe ich versucht, die Standardfunktionalität des Back-Buttons eines Samsung Galaxy S3 Mini in einer PhoneGap / jQuery Mobile Anwendung zu unterdrücken. Bei einem aktuellen Projekt arbeite ich an einer Single-Page-Mobile-App (bestehend aus nur einer index.html-Datei), die unter Apples iOS ohne Probleme läuft, da die Geräte nur über einen Home-Button verfügen. Auf Android-Geräten sieht das aber leider anders aus. Auf manchen Unterseiten, auf die man mittels Ankertag navigiert, soll man nicht in der Browserhistory zurückspringen können.

Ich verwende PhoneGap 2.8.1, jQuery Mobile 1.3.1 und ein Samsung Galaxy S3 Mini, gekauft vor ca. 3 Wochen.

Probiert habe ich verschiedene Problemlösungen, die plausibelsten waren meiner Meinung nach aber folgende:

JavaScript:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
  document.addEventListener("backbutton", onBackKeyDown, false);
}

function onBackKeyDown() {
  return false;
}

Java:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
  if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
    // do something on back.
    return true;
  }

  return super.onKeyDown(keyCode, event);
}

Leider hat nichts wie erwartet funktioniert. Sollte mir die Lösung irgendwann über die Füße laufen, werde ich diesen Beitrag hier updaten.

Update, 13.08.2013:

Die Problemlösung war ganz einfach: Ich hatte einfach nur die falsche cordova.js Datei verwendet, da ich das Projekt aus einem iOS-Projekt geklont habe. Um an die Android-Version der cordova.js zu kommen, musste ich einfach nur eine neue Android-PhoneGap-App erstellen und mir die entsprechende Datei herauskopieren. Nun läuft's ;)


Julian Stock
Webentwickler aus Lübeck · 35 Jahre

Social