From bd6a98725f8c1bd3efc3dd6d22f8a96bd94848c8 Mon Sep 17 00:00:00 2001 From: fkloft Date: Sat, 1 Mar 2014 13:40:01 +0100 Subject: [PATCH] Delete screenshot after intent has finished --- .../com/cradle/iitc_mobile/IITC_Mobile.java | 7 ++++++- .../iitc_mobile/share/ShareActivity.java | 19 +++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java index f974b9f4..264c9f2f 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java @@ -863,7 +863,12 @@ public class IITC_Mobile extends Activity // quality is ignored by PNG throw new IOException("Could not compress bitmap!"); } - startActivity(ShareActivity.forFile(this, file, "image/png")); + startActivityForResult(ShareActivity.forFile(this, file, "image/png"), new ResponseHandler() { + @Override + public void onActivityResult(final int resultCode, final Intent data) { + file.delete(); + } + }); } catch (final IOException e) { Log.e("Could not generate screenshot", e); } diff --git a/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java b/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java index 813d0f76..a869dd1d 100644 --- a/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java +++ b/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java @@ -21,6 +21,7 @@ import java.util.ArrayList; public class ShareActivity extends FragmentActivity implements ActionBar.TabListener { private static final String EXTRA_TYPE = "share-type"; + private static final int REQUEST_START_INTENT = 1; private static final String TYPE_FILE = "file"; private static final String TYPE_PERMALINK = "permalink"; private static final String TYPE_PORTAL_LINK = "portal_link"; @@ -85,6 +86,18 @@ public class ShareActivity extends FragmentActivity implements ActionBar.TabList .apply(); } + @Override + protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { + if (REQUEST_START_INTENT == requestCode) { + setResult(resultCode, data); + // parent activity can now clean up + finish(); + return; + } + + super.onActivityResult(requestCode, resultCode, data); + } + @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -132,6 +145,7 @@ public class ShareActivity extends FragmentActivity implements ActionBar.TabList addTab(mGenerator.getShareIntents(mTitle, uri, mime), R.string.tab_share, R.drawable.ic_action_share); } else { Log.w("Unknown sharing type: " + type); + setResult(RESULT_CANCELED); finish(); return; } @@ -186,8 +200,9 @@ public class ShareActivity extends FragmentActivity implements ActionBar.TabList public void launch(final Intent intent) { mComparator.trackIntentSelection(intent); mGenerator.cleanup(intent); - startActivity(intent); - finish(); + + // we should wait for the new intent to be finished so the calling activity (IITC_Mobile) can clean up + startActivityForResult(intent, REQUEST_START_INTENT); } @Override