Delete screenshot after intent has finished

This commit is contained in:
fkloft 2014-03-01 13:40:01 +01:00
parent b30c1e4aa3
commit bd6a98725f
2 changed files with 23 additions and 3 deletions

View File

@ -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);
}

View File

@ -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