consider images and videos too when listing directories

This commit is contained in:
tibbi 2016-06-05 23:01:12 +02:00
parent 75da6ec678
commit 39fa01ab96
1 changed files with 29 additions and 24 deletions

View File

@ -128,34 +128,39 @@ public class MainActivity extends AppCompatActivity
private Map<String, Directory> getDirectories() { private Map<String, Directory> getDirectories() {
final Map<String, Directory> directories = new LinkedHashMap<>(); final Map<String, Directory> directories = new LinkedHashMap<>();
final Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
final String[] columns = {MediaStore.Images.Media.DATA};
final String order = MediaStore.Images.Media.DATE_MODIFIED + " DESC";
final Cursor cursor = getContentResolver().query(uri, columns, null, null, order);
final List<String> invalidFiles = new ArrayList<>(); final List<String> invalidFiles = new ArrayList<>();
for (int i = 0; i < 2; i++) {
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
if (i == 1) {
uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
}
final String[] columns = {MediaStore.Images.Media.DATA};
final String order = MediaStore.Images.Media.DATE_MODIFIED + " DESC";
final Cursor cursor = getContentResolver().query(uri, columns, null, null, order);
if (cursor != null && cursor.moveToFirst()) { if (cursor != null && cursor.moveToFirst()) {
final int pathIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATA); final int pathIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
do { do {
final String path = cursor.getString(pathIndex); final String path = cursor.getString(pathIndex);
final File file = new File(path); final File file = new File(path);
final String fileDir = file.getParent(); final String fileDir = file.getParent();
if (!file.exists()) { if (!file.exists()) {
invalidFiles.add(file.getAbsolutePath()); invalidFiles.add(file.getAbsolutePath());
continue; continue;
} }
if (directories.containsKey(fileDir)) { if (directories.containsKey(fileDir)) {
final Directory directory = directories.get(fileDir); final Directory directory = directories.get(fileDir);
final int newImageCnt = directory.getPhotoCnt() + 1; final int newImageCnt = directory.getPhotoCnt() + 1;
directory.setPhotoCnt(newImageCnt); directory.setPhotoCnt(newImageCnt);
} else if (!toBeDeleted.contains(fileDir)) { } else if (!toBeDeleted.contains(fileDir)) {
final String dirName = Utils.getFilename(fileDir); final String dirName = Utils.getFilename(fileDir);
directories.put(fileDir, new Directory(fileDir, path, dirName, 1)); directories.put(fileDir, new Directory(fileDir, path, dirName, 1));
} }
} while (cursor.moveToNext()); } while (cursor.moveToNext());
cursor.close(); cursor.close();
}
} }
final String[] invalids = invalidFiles.toArray(new String[invalidFiles.size()]); final String[] invalids = invalidFiles.toArray(new String[invalidFiles.size()]);