diff --git a/packages/SystemUI/res/layout/long_screenshot.xml b/packages/SystemUI/res/layout/long_screenshot.xml
index 8a2c8f09948d2..5a33046f49dcc 100644
--- a/packages/SystemUI/res/layout/long_screenshot.xml
+++ b/packages/SystemUI/res/layout/long_screenshot.xml
@@ -38,20 +38,21 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/preview" />
-
+ app:layout_constraintBottom_toTopOf="@id/preview" />
finishAndRemoveTask());
-
mSave.setOnClickListener(this::onClicked);
mEdit.setOnClickListener(this::onClicked);
mShare.setOnClickListener(this::onClicked);
+ // Only show the delete button if we have something to delete (should typically be the case)
+ if (getIntent().getData() != null) {
+ mDelete.setOnClickListener(this::onClicked);
+ } else {
+ mDelete.setVisibility(View.GONE);
+ }
+
mPreview.addOnLayoutChangeListener(
(v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) ->
updateImageDimensions());
@@ -321,6 +328,7 @@ public class LongScreenshotActivity extends Activity {
mSave.setEnabled(enabled);
mEdit.setEnabled(enabled);
mShare.setEnabled(enabled);
+ mDelete.setEnabled(enabled);
}
private void doEdit(Uri uri) {
@@ -368,6 +376,11 @@ public class LongScreenshotActivity extends Activity {
} else if (id == R.id.share) {
mUiEventLogger.log(ScreenshotEvent.SCREENSHOT_LONG_SCREENSHOT_SHARE);
startExport(PendingAction.SHARE);
+ } else if (id == R.id.delete) {
+ mBackgroundExecutor.execute(() -> {
+ getContentResolver().delete(getIntent().getData(), null);
+ finishAndRemoveTask();
+ });
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
index 5a3d3f9c6f3e5..cf898e0afdf48 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotController.java
@@ -264,6 +264,7 @@ public class ScreenshotController {
private Animator mScreenshotAnimation;
private RequestCallback mCurrentRequestCallback;
+ private Uri mLatestUriSaved;
private final Handler mScreenshotHandler = new Handler(Looper.getMainLooper()) {
@Override
@@ -546,7 +547,6 @@ public class ScreenshotController {
mAccessibilityManager.sendAccessibilityEvent(event);
}
-
if (mScreenshotView.isAttachedToWindow()) {
// if we didn't already dismiss for another reason
if (!mScreenshotView.isDismissing()) {
@@ -563,6 +563,7 @@ public class ScreenshotController {
.getWindowInsets().getDisplayCutout());
mScreenBitmap = screenshot;
+ mLatestUriSaved = null;
if (!isUserSetupComplete()) {
Log.w(TAG, "User setup not complete, displaying toast only");
@@ -693,6 +694,7 @@ public class ScreenshotController {
longScreenshot));
final Intent intent = new Intent(mContext, LongScreenshotActivity.class);
+ intent.setData(mLatestUriSaved);
intent.setFlags(
Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
@@ -882,6 +884,8 @@ public class ScreenshotController {
resetTimeout();
+ mLatestUriSaved = imageData.uri;
+
if (imageData.uri != null) {
mScreenshotHandler.post(() -> {
if (mScreenshotAnimation != null && mScreenshotAnimation.isRunning()) {