Make photo selection handler available and pass photo URI on rotation
The root cause is that if we rotate screen before photo is taken/picked from
album, mPhotoSelectionHandler will be null after rotation. In addition, we
also need to restore photo URI after rotation to avoid opening Photos app
with a null URI.
Bug: 25895614
Change-Id: I625af9932a2c7f7b6c4531cc2e52973ff6c5efc7
diff --git a/src/com/android/contacts/activities/CompactContactEditorActivity.java b/src/com/android/contacts/activities/CompactContactEditorActivity.java
index 0de20e7..dc16049 100644
--- a/src/com/android/contacts/activities/CompactContactEditorActivity.java
+++ b/src/com/android/contacts/activities/CompactContactEditorActivity.java
@@ -44,6 +44,7 @@
private static final String STATE_PHOTO_MODE = "photo_mode";
private static final String STATE_IS_PHOTO_SELECTION = "is_photo_selection";
private static final String STATE_ACTION_BAR_TITLE = "action_bar_title";
+ private static final String STATE_PHOTO_URI = "photo_uri";
/**
* Displays a PopupWindow with photo edit options.
@@ -147,6 +148,7 @@
mPhotoMode = savedState.getInt(STATE_PHOTO_MODE);
mIsPhotoSelection = savedState.getBoolean(STATE_IS_PHOTO_SELECTION);
mActionBarTitleResId = savedState.getInt(STATE_ACTION_BAR_TITLE);
+ mPhotoUri = Uri.parse(savedState.getString(STATE_PHOTO_URI));
// Show/hide the editor and photo selection fragments (w/o animations)
mFragment = (CompactContactEditorFragment) getFragmentManager()
@@ -179,12 +181,16 @@
outState.putInt(STATE_PHOTO_MODE, mPhotoMode);
outState.putBoolean(STATE_IS_PHOTO_SELECTION, mIsPhotoSelection);
outState.putInt(STATE_ACTION_BAR_TITLE, mActionBarTitleResId);
+ outState.putString(STATE_PHOTO_URI,
+ mPhotoUri != null ? mPhotoUri.toString() : Uri.EMPTY.toString());
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (mPhotoSelectionHandler != null &&
- mPhotoSelectionHandler.handlePhotoActivityResult(requestCode, resultCode, data)) {
+ if (mPhotoSelectionHandler == null) {
+ mPhotoSelectionHandler = (CompactPhotoSelectionHandler) getPhotoSelectionHandler();
+ }
+ if (mPhotoSelectionHandler.handlePhotoActivityResult(requestCode, resultCode, data)) {
return;
}
super.onActivityResult(requestCode, resultCode, data);