diff --git a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java index 18335b6586a83..fcd45f223825f 100644 --- a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java +++ b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java @@ -273,10 +273,12 @@ public class ExternalStorageProvider extends DocumentsProvider { flags |= Document.FLAG_DIR_SUPPORTS_CREATE; flags |= Document.FLAG_SUPPORTS_DELETE; flags |= Document.FLAG_SUPPORTS_RENAME; + flags |= Document.FLAG_SUPPORTS_MOVE; } else { flags |= Document.FLAG_SUPPORTS_WRITE; flags |= Document.FLAG_SUPPORTS_DELETE; flags |= Document.FLAG_SUPPORTS_RENAME; + flags |= Document.FLAG_SUPPORTS_MOVE; } } @@ -408,6 +410,21 @@ public class ExternalStorageProvider extends DocumentsProvider { new String[] { path, path }); } + @Override + public String moveDocument(String sourceDocumentId, String targetParentDocumentId) + throws FileNotFoundException { + final File before = getFileForDocId(sourceDocumentId); + final File after = new File(getFileForDocId(targetParentDocumentId), before.getName()); + + if (after.exists()) { + throw new IllegalStateException("Already exists " + after); + } + if (!before.renameTo(after)) { + throw new IllegalStateException("Failed to move to " + after); + } + return getDocIdForFile(after); + } + @Override public Cursor queryDocument(String documentId, String[] projection) throws FileNotFoundException {