diff --git a/src/com/android/providers/media/PermissionActivity.java b/src/com/android/providers/media/PermissionActivity.java
index 0845fdd..041d89f 100644
--- a/src/com/android/providers/media/PermissionActivity.java
+++ b/src/com/android/providers/media/PermissionActivity.java
@@ -25,6 +25,7 @@
 
 import android.app.Activity;
 import android.app.AlertDialog;
+import android.app.ProgressDialog;
 import android.content.ContentProviderOperation;
 import android.content.ContentResolver;
 import android.content.ContentValues;
@@ -43,6 +44,7 @@
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
+import android.os.Handler;
 import android.provider.MediaStore;
 import android.provider.MediaStore.MediaColumns;
 import android.text.TextUtils;
@@ -95,8 +97,11 @@
     private String volumeName;
     private ApplicationInfo appInfo;
 
+    private ProgressDialog progressDialog;
     private TextView titleView;
 
+    private static final Long LEAST_SHOW_PROGRESS_TIME_MS = 300L;
+
     private static final String VERB_WRITE = "write";
     private static final String VERB_TRASH = "trash";
     private static final String VERB_UNTRASH = "untrash";
@@ -174,6 +179,8 @@
         titleView = (TextView) findViewByPredicate(dialog.getWindow().getDecorView(), (view) -> {
             return (view instanceof TextView) && view.isImportantForAccessibility();
         });
+
+        progressDialog = new ProgressDialog(this);
     }
 
     private void onPositiveAction(DialogInterface dialog, int which) {
@@ -181,6 +188,8 @@
         ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
         ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false);
 
+        progressDialog.show();
+        final long startTime = System.currentTimeMillis();
         new AsyncTask<Void, Void, Void>() {
             @Override
             protected Void doInBackground(Void... params) {
@@ -230,7 +239,18 @@
             @Override
             protected void onPostExecute(Void result) {
                 setResult(Activity.RESULT_OK);
-                finish();
+                // Don't dismiss the progress dialog too quick, it will cause bad UX.
+                final long duration = System.currentTimeMillis() - startTime;
+                if (duration > LEAST_SHOW_PROGRESS_TIME_MS) {
+                    progressDialog.dismiss();
+                    finish();
+                } else {
+                    Handler handler = new Handler(getMainLooper());
+                    handler.postDelayed(() -> {
+                        progressDialog.dismiss();
+                        finish();
+                    }, LEAST_SHOW_PROGRESS_TIME_MS - duration);
+                }
             }
         }.execute();
     }
