Search code examples
javascriptandroidcordovaback-button

How to prevent Android from closing web-application when backbutton is pressed?


I am developing a HTML5 web-application and compiling it with Cordova (phonegap) 1.7.

I want to override the Android backbutton so that I can call window.history.back() instead of closing the application (default Android). How can I prevent Android from killing the defaultactivity on back button pressed?

I get the "Back button pressed!!!!" in logcat, so the method is fired before the application is closed.

This is what I have so far:

        // Wait for Cordova to load
        //
        document.addEventListener("deviceready", onDeviceReady, false);

        // Cordova is ready
        //
        function onDeviceReady() {

            document.addEventListener("backbutton", function(e) {

                console.log("Back button pressed!!!!");                 
                window.history.back();


            }, false);

        }

EDIT: I am willing to accept an answer explaining a way to simulate the window.history.back() directly from the DefaultActivity.java android class if that is possible!


Solution

  • I solved my own question by adding the code below to the DefaultActivity.java file to prevent the default android behavior, and keeping the JavaScript code as stated in the question:

    @Override
    public void onBackPressed() {
       return;
    }
    

    I hope this helps someone in the future with the same problem!