diff options
Diffstat (limited to 'src/com/android/contacts/activities')
3 files changed, 16 insertions, 7 deletions
diff --git a/src/com/android/contacts/activities/CompactContactEditorActivity.java b/src/com/android/contacts/activities/CompactContactEditorActivity.java index fcbb70ee7..c45c261b3 100644 --- a/src/com/android/contacts/activities/CompactContactEditorActivity.java +++ b/src/com/android/contacts/activities/CompactContactEditorActivity.java @@ -60,7 +60,7 @@ public class CompactContactEditorActivity extends ContactEditorBaseActivity { @Override public void onBackPressed() { if (mFragment != null) { - mFragment.save(ContactEditor.SaveMode.CLOSE); + mFragment.save(ContactEditor.SaveMode.CLOSE, /* backPressed =*/ true); } } } diff --git a/src/com/android/contacts/activities/ContactEditorActivity.java b/src/com/android/contacts/activities/ContactEditorActivity.java index a9b75d989..800a26756 100644 --- a/src/com/android/contacts/activities/ContactEditorActivity.java +++ b/src/com/android/contacts/activities/ContactEditorActivity.java @@ -54,7 +54,7 @@ public class ContactEditorActivity extends ContactEditorBaseActivity @Override public void onBackPressed() { if (mFragment != null) { - mFragment.save(ContactEditor.SaveMode.COMPACT); + mFragment.save(ContactEditor.SaveMode.COMPACT, /* backPressed =*/ true); } } } diff --git a/src/com/android/contacts/activities/ContactEditorBaseActivity.java b/src/com/android/contacts/activities/ContactEditorBaseActivity.java index ec2f9b67b..41b0c6b67 100644 --- a/src/com/android/contacts/activities/ContactEditorBaseActivity.java +++ b/src/com/android/contacts/activities/ContactEditorBaseActivity.java @@ -153,14 +153,17 @@ abstract public class ContactEditorBaseActivity extends ContactsActivity /** * Saves or creates the contact based on the mode, and if successful * finishes the activity. + * + * @param backPressed whether the save was initiated as a result of a back button press + * or because the framework stopped the editor Activity */ - boolean save(int saveMode); + boolean save(int saveMode, boolean backPressed); /** * Invoked after the contact is saved. */ void onSaveCompleted(boolean hadChanges, int saveMode, boolean saveSucceeded, - Uri contactLookupUri, Bundle updatedPhotos); + Uri contactLookupUri, Bundle updatedPhotos, boolean backPressed); /** * Invoked after the contact is joined. @@ -238,7 +241,9 @@ abstract public class ContactEditorBaseActivity extends ContactsActivity ContactEditor.SaveMode.CLOSE), intent.getBooleanExtra(ContactSaveService.EXTRA_SAVE_SUCCEEDED, false), intent.getData(), - (Bundle) intent.getParcelableExtra(ContactSaveService.EXTRA_UPDATED_PHOTOS)); + (Bundle) intent.getParcelableExtra(ContactSaveService.EXTRA_UPDATED_PHOTOS), + intent.getBooleanExtra(ContactEditorFragment.INTENT_EXTRA_SAVE_BACK_PRESSED, + false)); } else if (ACTION_JOIN_COMPLETED.equals(action)) { mFragment.onJoinCompleted(intent.getData()); } @@ -268,11 +273,15 @@ abstract public class ContactEditorBaseActivity extends ContactsActivity @Override public void onSaveFinished(Intent resultIntent) { + final boolean backPressed = resultIntent == null ? false : resultIntent.getBooleanExtra( + ContactEditorBaseFragment.INTENT_EXTRA_SAVE_BACK_PRESSED, false); if (mFinishActivityOnSaveCompleted) { setResult(resultIntent == null ? RESULT_CANCELED : RESULT_OK, resultIntent); } else if (resultIntent != null) { - ImplicitIntentsUtil.startActivityInApp(ContactEditorBaseActivity.this, - resultIntent); + if (backPressed) { + ImplicitIntentsUtil.startActivityInApp(ContactEditorBaseActivity.this, + resultIntent); + } } finish(); } |