Как переместить элемент содержимого медиа-хранилища в другой каталог с помощью DocumentContract.moveDocument ()? - PullRequest
1 голос
/ 08 марта 2020

Поскольку 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 в рекомендованном порядке?

Дополнительный вопрос: есть ли способ переместить контент из медиасторма в другое место, как я могу удалить его из базы данных без удаления? базовый файл сущности?

...