Minor improvements on LocalPreferences.
BUG: 30900628
Change-Id: I09ee88152fbcefd0a301e52599e1c71e2f96557d
(cherry picked from commit da1fc0a9c23697cc255efdccc47862bd1277da3f)
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,