diff --git a/src/com/android/documentsui/LocalPreferences.java b/src/com/android/documentsui/LocalPreferences.java
index 32d0082..b3db037 100644
--- a/src/com/android/documentsui/LocalPreferences.java
+++ b/src/com/android/documentsui/LocalPreferences.java
@@ -22,6 +22,7 @@
 import android.annotation.Nullable;
 import android.content.Context;
 import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
 import android.os.UserHandle;
 import android.preference.PreferenceManager;
 
@@ -84,6 +85,11 @@
     @Retention(RetentionPolicy.SOURCE)
     public @interface PermissionStatus {}
 
+    /**
+     * Clears all preferences associated with a given package.
+     *
+     * <p>Typically called when a package is removed or when user asked to clear its data.
+     */
     static void clearPackagePreferences(Context context, String packageName) {
         clearScopedAccessPreferences(context, packageName);
     }
@@ -115,11 +121,18 @@
     private static void clearScopedAccessPreferences(Context context, String packageName) {
         final String keySubstring = "|" + packageName + "|";
         final SharedPreferences prefs = getPrefs(context);
+        Editor editor = null;
         for (final String key : prefs.getAll().keySet()) {
             if (key.contains(keySubstring)) {
-                prefs.edit().remove(key).apply();
+                if (editor == null) {
+                    editor = prefs.edit();
+                }
+                editor.remove(key);
             }
         }
+        if (editor != null) {
+            editor.apply();
+        }
     }
 
     private static String getScopedAccessDenialsKey(String packageName, String uuid,
