From c6fedb9e172d3a943e50598889a0c5d51d398332 Mon Sep 17 00:00:00 2001 From: Adrian Ulrich Date: Mon, 22 Oct 2018 21:03:24 +0200 Subject: [PATCH] do not index hidden files or folders. --- .../android/medialibrary/MediaScanner.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaScanner.java b/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaScanner.java index 0ba862ee..206bac3d 100644 --- a/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaScanner.java +++ b/app/src/main/java/ch/blinkenlights/android/medialibrary/MediaScanner.java @@ -426,6 +426,9 @@ public class MediaScanner implements Handler.Callback { if (new File(dir, ".nomedia").exists()) return; + if (isDotfile(dir)) + return; + File[] dirents = dir.listFiles(); if (dirents == null) return; @@ -450,6 +453,9 @@ public class MediaScanner implements Handler.Callback { if (isBlacklisted(file)) return false; + if (isDotfile(file)) + return false; + long dbEntryMtime = mBackend.getColumnFromSongId(MediaLibrary.SongColumns.MTIME, songId) * 1000; // this is in unixtime -> convert to 'ms' long songFlags = mBackend.getColumnFromSongId(MediaLibrary.SongColumns.FLAGS, songId); long fileMtime = file.lastModified(); @@ -646,6 +652,17 @@ public class MediaScanner implements Handler.Callback { } + private static final Pattern sDotfilePattern = Pattern.compile("^\\..*$", Pattern.CASE_INSENSITIVE); + /** + * Returns true if the file is a hidden dotfile. + * + * @param file to inspect + * @return boolean + */ + private boolean isDotfile(File file) { + return sDotfilePattern.matcher(file.getName()).matches(); + } + // MediaScanPlan describes how we are going to perform the media scan class MediaScanPlan { class Step {