Loading core/java/android/provider/MediaStore.java +8 −0 Original line number Diff line number Diff line Loading @@ -533,6 +533,14 @@ public final class MediaStore { + "/object/" + fileId + "/references"); } /** * Used to trigger special logic for directories. * @hide */ public static final Uri getDirectoryUri(String volumeName) { return Uri.parse(CONTENT_AUTHORITY_SLASH + volumeName + "/dir"); } /** * Fields for master table for all media files. * Table also contains MediaColumns._ID, DATA, SIZE and DATE_MODIFIED. Loading core/java/com/android/internal/content/FileSystemProvider.java +18 −2 Original line number Diff line number Diff line Loading @@ -129,21 +129,35 @@ public abstract class FileSystemProvider extends DocumentsProvider { } final File file = FileUtils.buildUniqueFile(parent, mimeType, displayName); final String childId; if (Document.MIME_TYPE_DIR.equals(mimeType)) { if (!file.mkdir()) { throw new IllegalStateException("Failed to mkdir " + file); } childId = getDocIdForFile(file); addFolderToMediaStore(getFileForDocId(childId, true)); } else { try { if (!file.createNewFile()) { throw new IllegalStateException("Failed to touch " + file); } childId = getDocIdForFile(file); } catch (IOException e) { throw new IllegalStateException("Failed to touch " + file + ": " + e); } } return getDocIdForFile(file); return childId; } private void addFolderToMediaStore(File visibleFolder) { assert(visibleFolder.isDirectory()); final ContentResolver resolver = getContext().getContentResolver(); final Uri uri = MediaStore.Files.getDirectoryUri("external"); ContentValues values = new ContentValues(); values.put(MediaStore.Files.FileColumns.DATA, visibleFolder.getAbsolutePath()); resolver.insert(uri, values); } @Override Loading Loading @@ -193,7 +207,9 @@ public abstract class FileSystemProvider extends DocumentsProvider { private void moveInMediaStore(File oldVisibleFile, File newVisibleFile) { if (newVisibleFile != null) { final ContentResolver resolver = getContext().getContentResolver(); final Uri externalUri = MediaStore.Files.getContentUri("external"); final Uri externalUri = newVisibleFile.isDirectory() ? MediaStore.Files.getDirectoryUri("external") : MediaStore.Files.getContentUri("external"); ContentValues values = new ContentValues(); values.put(MediaStore.Files.FileColumns.DATA, newVisibleFile.getAbsolutePath()); Loading Loading
core/java/android/provider/MediaStore.java +8 −0 Original line number Diff line number Diff line Loading @@ -533,6 +533,14 @@ public final class MediaStore { + "/object/" + fileId + "/references"); } /** * Used to trigger special logic for directories. * @hide */ public static final Uri getDirectoryUri(String volumeName) { return Uri.parse(CONTENT_AUTHORITY_SLASH + volumeName + "/dir"); } /** * Fields for master table for all media files. * Table also contains MediaColumns._ID, DATA, SIZE and DATE_MODIFIED. Loading
core/java/com/android/internal/content/FileSystemProvider.java +18 −2 Original line number Diff line number Diff line Loading @@ -129,21 +129,35 @@ public abstract class FileSystemProvider extends DocumentsProvider { } final File file = FileUtils.buildUniqueFile(parent, mimeType, displayName); final String childId; if (Document.MIME_TYPE_DIR.equals(mimeType)) { if (!file.mkdir()) { throw new IllegalStateException("Failed to mkdir " + file); } childId = getDocIdForFile(file); addFolderToMediaStore(getFileForDocId(childId, true)); } else { try { if (!file.createNewFile()) { throw new IllegalStateException("Failed to touch " + file); } childId = getDocIdForFile(file); } catch (IOException e) { throw new IllegalStateException("Failed to touch " + file + ": " + e); } } return getDocIdForFile(file); return childId; } private void addFolderToMediaStore(File visibleFolder) { assert(visibleFolder.isDirectory()); final ContentResolver resolver = getContext().getContentResolver(); final Uri uri = MediaStore.Files.getDirectoryUri("external"); ContentValues values = new ContentValues(); values.put(MediaStore.Files.FileColumns.DATA, visibleFolder.getAbsolutePath()); resolver.insert(uri, values); } @Override Loading Loading @@ -193,7 +207,9 @@ public abstract class FileSystemProvider extends DocumentsProvider { private void moveInMediaStore(File oldVisibleFile, File newVisibleFile) { if (newVisibleFile != null) { final ContentResolver resolver = getContext().getContentResolver(); final Uri externalUri = MediaStore.Files.getContentUri("external"); final Uri externalUri = newVisibleFile.isDirectory() ? MediaStore.Files.getDirectoryUri("external") : MediaStore.Files.getContentUri("external"); ContentValues values = new ContentValues(); values.put(MediaStore.Files.FileColumns.DATA, newVisibleFile.getAbsolutePath()); Loading