Поскольку Android навязывает использование инфраструктуры доступа к хранилищу с помощью доступа к хранилищу в определенных областях, приложение не может использовать прямую операцию java .io.file для перемещения файлов.
Цель состоит в том, чтобы переместить некоторые указанные c элемент мультимедиа, который запрашивается из базы данных mediastore в другой указанный каталог c (тот же раздел исходного файла), которому пользователь уже предоставил разрешения rw приложению.
Однако, когда я пытаюсь создать экземпляр DocumentFile, используя метод
DocumentFile fromTreeUri(@NonNull Context context, @NonNull Uri treeUri)
. В этом случае родительский DocumentFile созданного экземпляра будет нулевым. И метод
Uri moveDocument(@NonNull ContentResolver content, @NonNull Uri sourceDocumentUri, @NonNull Uri sourceParentDocumentUri, @NonNull Uri targetParentDocumentUri)
требует, чтобы родительский родительский элемент перемещал файл документа. Я знаю, что в конце концов я могу скопировать источник в целевой объект, читая / записывая потоки ввода-вывода, но это неэффективно. Итак, как я могу выполнить sh в рекомендованном порядке?
Дополнительный вопрос: есть ли способ переместить контент из медиасторма в другое место, как я могу удалить его из базы данных без удаления? базовый файл сущности?