From 5e30e5e1deb8ded4fcc6d6a5ab8da51d79bcfb85 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Fri, 22 Mar 2019 11:35:17 +0000 Subject: [PATCH] Check external storage paths for null. --- .../account/AndroidAccountManager.java | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/bramble-android/src/main/java/org/briarproject/bramble/account/AndroidAccountManager.java b/bramble-android/src/main/java/org/briarproject/bramble/account/AndroidAccountManager.java index b2745aa8c..d2eda64b2 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/account/AndroidAccountManager.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/account/AndroidAccountManager.java @@ -13,13 +13,13 @@ import org.briarproject.bramble.util.IoUtils; import java.io.File; import java.util.HashSet; +import java.util.Set; import java.util.logging.Logger; import javax.annotation.Nullable; import javax.inject.Inject; import static android.os.Build.VERSION.SDK_INT; -import static java.util.Arrays.asList; class AndroidAccountManager extends AccountManagerImpl implements AccountManager { @@ -93,32 +93,42 @@ class AndroidAccountManager extends AccountManagerImpl LOG.warning("Could not clear shared preferences"); } // Delete files, except lib and shared_prefs directories - HashSet files = new HashSet<>(); + Set files = new HashSet<>(); File dataDir = new File(appContext.getApplicationInfo().dataDir); @Nullable File[] fileArray = dataDir.listFiles(); if (fileArray == null) { LOG.warning("Could not list files in app data dir"); } else { - files.addAll(asList(fileArray)); + for (File file : fileArray) { + String name = file.getName(); + if (!name.equals("lib") && !name.equals("shared_prefs")) { + files.add(file); + } + } } files.add(appContext.getFilesDir()); files.add(appContext.getCacheDir()); - files.add(appContext.getExternalCacheDir()); + addIfNotNull(files, appContext.getExternalCacheDir()); if (SDK_INT >= 19) { - files.addAll(asList(appContext.getExternalCacheDirs())); + for (File file : appContext.getExternalCacheDirs()) { + addIfNotNull(files, file); + } } if (SDK_INT >= 21) { - files.addAll(asList(appContext.getExternalMediaDirs())); + for (File file : appContext.getExternalMediaDirs()) { + addIfNotNull(files, file); + } } for (File file : files) { - String name = file.getName(); - if (!name.equals("lib") && !name.equals("shared_prefs")) { - IoUtils.deleteFileOrDir(file); - } + IoUtils.deleteFileOrDir(file); } // Recreate the cache dir as some OpenGL drivers expect it to exist if (!new File(dataDir, "cache").mkdirs()) LOG.warning("Could not recreate cache dir"); } + + private void addIfNotNull(Set files, @Nullable File file) { + if (file != null) files.add(file); + } }