From 5763ab5d1210f070572ee2b07e0d161ba267307e Mon Sep 17 00:00:00 2001 From: Adrian Ulrich Date: Mon, 5 Apr 2021 08:15:49 +0200 Subject: [PATCH] Do not use java.nio.Path on devices < android-O Turns out that this was only added in API26 (but is present in Java 7) --- .../android/vanilla/FileUtils.java | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/ch/blinkenlights/android/vanilla/FileUtils.java b/app/src/main/java/ch/blinkenlights/android/vanilla/FileUtils.java index cb03a36d..712721ce 100644 --- a/app/src/main/java/ch/blinkenlights/android/vanilla/FileUtils.java +++ b/app/src/main/java/ch/blinkenlights/android/vanilla/FileUtils.java @@ -258,15 +258,27 @@ public class FileUtils { public static ArrayList getFallbackDirectories(Context context, File dir) { HashSet result = new HashSet<>(); - Path prefix = dir.toPath(); - for (File f : context.getExternalMediaDirs()) { - Path p = f.toPath(); - if (p.getNameCount() <= prefix.getNameCount()) - continue; - if (!p.startsWith(prefix)) - continue; - Path sp = p.subpath(prefix.getNameCount(), prefix.getNameCount()+1); - result.add(new File(dir, sp.toString())); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + Path prefix = dir.toPath(); + for (File f : context.getExternalMediaDirs()) { + Path p = f.toPath(); + if (p.getNameCount() <= prefix.getNameCount()) + continue; + if (!p.startsWith(prefix)) + continue; + Path sp = p.subpath(prefix.getNameCount(), prefix.getNameCount()+1); + result.add(new File(dir, sp.toString())); + } + } else { + // java.nio.Paths was only added in API 26 *sigh*. + switch (dir.toString()) { + case "/": + result.add(new File("/storage")); + break; + case "/storage/emulated": + result.add(new File("/storage/emulated/0")); + break; + } } return new ArrayList(result); }