mirror of
https://github.com/apache/cordova-android.git
synced 2025-01-19 15:12:51 +08:00
Improve closing an HTML page and returning to previous page.
This commit is contained in:
parent
a4d66c63a4
commit
ebb9f09168
@ -59,6 +59,14 @@ App.prototype.clearHistory = function() {
|
||||
PhoneGap.exec(null, null, "App", "clearHistory", []);
|
||||
};
|
||||
|
||||
/**
|
||||
* Go to previous page displayed.
|
||||
* This is the same as pressing the backbutton on Android device.
|
||||
*/
|
||||
App.prototype.backHistory = function() {
|
||||
PhoneGap.exec(null, null, "App", "backHistory", []);
|
||||
};
|
||||
|
||||
/**
|
||||
* Override the default behavior of the Android back button.
|
||||
* If overridden, when the back button is pressed, the "backKeyDown" JavaScript event will be fired.
|
||||
@ -91,6 +99,8 @@ App.prototype.addWhiteListEntry = function(origin, subdomains) {
|
||||
|
||||
PhoneGap.addConstructor(function() {
|
||||
navigator.app = new App();
|
||||
navigator.app.origHistoryBack = window.history.back;
|
||||
window.history.back = navigator.app.backHistory;
|
||||
});
|
||||
}());
|
||||
}
|
||||
|
@ -44,6 +44,9 @@ public class App extends Plugin {
|
||||
}
|
||||
else if (action.equals("clearHistory")) {
|
||||
this.clearHistory();
|
||||
}
|
||||
else if (action.equals("backHistory")) {
|
||||
this.backHistory();
|
||||
}
|
||||
else if (action.equals("overrideBackbutton")) {
|
||||
this.overrideBackbutton(args.getBoolean(0));
|
||||
@ -144,9 +147,19 @@ public class App extends Plugin {
|
||||
|
||||
/**
|
||||
* Clear web history in this web view.
|
||||
* This does not have any effect since each page has its own activity.
|
||||
*/
|
||||
public void clearHistory() {
|
||||
((DroidGap)this.ctx).clearHistory();
|
||||
// TODO: Kill previous activities?
|
||||
}
|
||||
|
||||
/**
|
||||
* Go to previous page displayed.
|
||||
* This is the same as pressing the backbutton on Android device.
|
||||
*/
|
||||
public void backHistory() {
|
||||
((DroidGap)this.ctx).endActivity();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -174,7 +187,7 @@ public class App extends Plugin {
|
||||
*/
|
||||
public void exitApp() {
|
||||
((DroidGap)this.ctx).setResult(Activity.RESULT_OK);
|
||||
((DroidGap)this.ctx).onDestroy();
|
||||
((DroidGap)this.ctx).endActivity();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -716,13 +716,6 @@ public class DroidGap extends PhonegapActivity {
|
||||
|
||||
if (this.appView != null) {
|
||||
|
||||
// Make invisible
|
||||
DroidGap.this.runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
DroidGap.this.setVisible(false);
|
||||
}
|
||||
});
|
||||
|
||||
// Make sure pause event is sent if onPause hasn't been called before onDestroy
|
||||
this.appView.loadUrl("javascript:try{PhoneGap.onPause.fire();}catch(e){};");
|
||||
|
||||
@ -816,7 +809,7 @@ public class DroidGap extends PhonegapActivity {
|
||||
|
||||
// Finish current activity
|
||||
if (clearPrev) {
|
||||
this.finish();
|
||||
this.endActivity();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1300,6 +1293,13 @@ public class DroidGap extends PhonegapActivity {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* End this activity by simulating backbutton keypress
|
||||
*/
|
||||
public void endActivity() {
|
||||
super.onKeyDown(KeyEvent.KEYCODE_BACK, new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when a key is pressed.
|
||||
*
|
||||
@ -1408,7 +1408,7 @@ public class DroidGap extends PhonegapActivity {
|
||||
// If terminating app, then shut down this activity too
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
this.setResult(Activity.RESULT_OK);
|
||||
this.onDestroy();
|
||||
this.endActivity();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user