Как использовать новый API доступа к SD-карте Lollipop для удаления и изменения файлов

Итак, у меня есть приложение, которое является музыкальным проигрывателем.

Много раз пользователь проигрывает песню и хочет ее удалить. Много раз он обнаруживает дубликаты файлов и, следовательно, хочет их удалить. У многих пользователей есть более тысячи песен, и это не будет подходящим решением, если пользователю нужно указать местоположение файла, который он хочет удалить.

Я наткнулся на это Как использовать представлен новый API доступа к SD-карте для Android 5.0 (Lollipop)?

и он говорит, как создавать файлы с учетом всего uri.

Но подходящим решением было бы, если бы он мог просто выбрать корневой каталог (SD CARD) вместо всего пути и предоставить необходимое разрешение, а приложение могло бы управлять остальным. Это именно то, чего я хочу добиться.

Учитывая, что у меня есть только путь к файлу, который нужно удалить, и uri корневого каталога из структуры доступа к SD-карте, как лучше всего удалить файл? это вообще возможно? или каждый раз, когда пользователю нужно удалить файл, ему также придется указывать местоположение этого файла?


person Ankit Srivastava    schedule 21.01.2016    source источник
comment
сторонняя библиотека не требуется, просто добавьте разрешение   -  person raj    schedule 21.01.2016
comment
@raj о чем ты? Это не сторонняя библиотека. Вы не можете удалять файлы традиционным способом, начиная с леденца.   -  person Ankit Srivastava    schedule 21.01.2016


Ответы (1)


Ссылка, которую вы упомянули (Как использовать новый API доступа к SD-карте, представленный для Lollipop), дает инструкции о том, как предложить пользователю выбрать корневой каталог с помощью ACTION_OPEN_DOCUMENT_TREE.

После того, как пользователь выберет корневой узел, ваш код будет иметь DocumentFile., представляющий корневой узел. Вы говорите, что у вас уже есть путь к файлу. Если это так, используйте сегменты пути к файлу и следуйте по пути вниз по иерархии, используя DocumentFile.html#listFiles().

Наконец, у вас будет DocumentFile, представляющий файл, который вы хотите удалить, а затем вызовите DocumentFile.html#delete()

person Peter Tran    schedule 09.06.2016