From 48efd7d136d5c42717849a6805a7aa6a4fb18243 Mon Sep 17 00:00:00 2001 From: zhuw Date: Wed, 3 Aug 2016 10:05:00 +0800 Subject: Gallery: Fix crash after rename or delete photo out of gallery 1. Fix Null Pointer Exception in ProcessingService and FilterShowActivity. 2. Modify PhotoPage to finish itself when receive null data from FilterShowActivity. Change-Id: I8e6e101ea3e98c1bdd87ab7b5499d63c7f348f2b CRs-Fixed: 1042815 --- src/com/android/gallery3d/app/PhotoPage.java | 6 +++++- src/com/android/gallery3d/filtershow/FilterShowActivity.java | 5 ++++- .../android/gallery3d/filtershow/pipeline/ProcessingService.java | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java index 0c82944d8..5d4e439a5 100755 --- a/src/com/android/gallery3d/app/PhotoPage.java +++ b/src/com/android/gallery3d/app/PhotoPage.java @@ -1434,7 +1434,11 @@ public abstract class PhotoPage extends ActivityState implements mRecenterCameraOnResume = false; switch (requestCode) { case REQUEST_EDIT: - setCurrentPhotoByIntent(data); + if (data.getData() == null) { + onUpPressed(); + } else { + setCurrentPhotoByIntent(data); + } break; /*case REQUEST_CROP: if (resultCode == Activity.RESULT_OK) { diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java index cfce7c54a..a8564e727 100644 --- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java +++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java @@ -134,6 +134,8 @@ import com.android.gallery3d.util.GalleryUtils; import com.android.photos.data.GalleryBitmapPool; import com.thundersoft.hz.selfportrait.makeup.engine.MakeupEngine; +import static android.app.Activity.RESULT_OK; + public class FilterShowActivity extends FragmentActivity implements OnItemClickListener, OnShareTargetSelectedListener, DialogInterface.OnShowListener, DialogInterface.OnDismissListener, PopupMenu.OnDismissListener{ @@ -249,7 +251,8 @@ public class FilterShowActivity extends FragmentActivity implements OnItemClickL long requestId = bundle.getLong(ProcessingService.KEY_REQUEST_ID); //only handle own request if (requestId == mRequestId) { - Uri saveUri = Uri.parse(bundle.getString(ProcessingService.KEY_URL)); + String url = bundle.getString(ProcessingService.KEY_URL); + Uri saveUri = url == null ? null : Uri.parse(url); boolean releaseDualCam = bundle.getBoolean(ProcessingService.KEY_DUALCAM); completeSaveImage(saveUri, releaseDualCam); } diff --git a/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java b/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java index 86d4c92c1..b5e9609e2 100644 --- a/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java +++ b/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java @@ -285,7 +285,7 @@ public class ProcessingService extends Service { if (exit) { // terminate now Bundle bundle = new Bundle(); - bundle.putString(KEY_URL, result.toString()); + bundle.putString(KEY_URL, result == null ? null : result.toString()); bundle.putLong(KEY_REQUEST_ID, requestId); bundle.putBoolean(KEY_DUALCAM, releaseDualCam); broadcastState(SAVE_IMAGE_COMPLETE_ACTION, bundle); -- cgit v1.2.3