diff --git a/fermata/src/main/java/me/aap/fermata/media/lib/BrowsableItemBase.java b/fermata/src/main/java/me/aap/fermata/media/lib/BrowsableItemBase.java index 704cdb3c..98447015 100644 --- a/fermata/src/main/java/me/aap/fermata/media/lib/BrowsableItemBase.java +++ b/fermata/src/main/java/me/aap/fermata/media/lib/BrowsableItemBase.java @@ -19,7 +19,6 @@ import java.util.Iterator; import java.util.List; import java.util.Random; -import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; import me.aap.fermata.R; @@ -285,7 +284,7 @@ private void setSeqNum(SortedItems sorted) { } private void shuffle(List l) { - Random rnd = ThreadLocalRandom.current(); + Random rnd = new Random(); for (int i = 0, s = l.size(); i < s; i++) { int next = rnd.nextInt(s - i); diff --git a/fermata/src/main/java/me/aap/fermata/ui/activity/MainActivity.java b/fermata/src/main/java/me/aap/fermata/ui/activity/MainActivity.java index eb8ed31a..aaec5db7 100644 --- a/fermata/src/main/java/me/aap/fermata/ui/activity/MainActivity.java +++ b/fermata/src/main/java/me/aap/fermata/ui/activity/MainActivity.java @@ -218,18 +218,23 @@ private FutureSupplier update(String uri, PreferenceStore ps, Pref> deletePref) { if (!BuildConfig.AUTO) return completedVoid(); try { + File tmp; File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); - if (dir == null) { + if ((tmp = createTempFile(dir)) == null) { App app = App.get(); File cache = app.getExternalCacheDir(); if (cache == null) cache = app.getCacheDir(); dir = new File(cache, "updates"); //noinspection ResultOfMethodCallIgnored dir.mkdirs(); + if ((tmp = createTempFile(dir)) == null) { + App.get().run(() -> showAlert(this, "Update failed - unable to create a temporary file")); + return completedVoid(); + } } - File f = File.createTempFile("Fermata-", ".apk", dir); + File f = tmp; synchronized (this) { List l = new ArrayList<>(Arrays.asList(ps.getStringArrayPref(deletePref))); @@ -262,4 +267,14 @@ private FutureSupplier update(String uri, PreferenceStore ps, return failed(ex); } } + + private static File createTempFile(File dir) { + try { + if (dir == null) return null; + return File.createTempFile("Fermata-", ".apk", dir); + } catch (Exception ex) { + Log.e(ex, "Failed to create a temporary file in the directory ", dir); + return null; + } + } } diff --git a/fermata/src/main/java/me/aap/fermata/ui/fragment/FoldersFragment.java b/fermata/src/main/java/me/aap/fermata/ui/fragment/FoldersFragment.java index 4a470370..3ee0944e 100644 --- a/fermata/src/main/java/me/aap/fermata/ui/fragment/FoldersFragment.java +++ b/fermata/src/main/java/me/aap/fermata/ui/fragment/FoldersFragment.java @@ -216,7 +216,7 @@ private void failedToLoadModule(@StringRes int name, Throwable ex) { App.get().getHandler().post(() -> { String n = getString(name); - Log.e(ex, "Failed to load add folder: ", name); + Log.e(ex, "Failed to add folder: ", name); if (ex instanceof InstallException) { UiUtils.showAlert(getContext(), getString(R.string.err_failed_install_module, n));