Почему в папке DOWNLOADS отображается история, но файлы уже исчезли, а файлы на самом деле там не отображаются

Я запускаю такой селектор (я пробовал разные вещи, как видно из закомментированных строк):

Intent intent = new Intent();
//sets the select file to all types of files
intent.setType("application/pdf|application/msword|text/*");
//intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
//intent.addCategory(Intent.CATEGORY_OPENABLE);
//allows to select data and return it
//intent.setAction(Intent.ACTION_GET_CONTENT); // show more 
intent.setAction(Intent.ACTION_OPEN_DOCUMENT); //show less 
activity.startActivityForResult(Intent.createChooser(intent, "Select File"), PICK_FILE_REQUEST);

С этим кодом меню отображаются следующим образом:

ОТКРЫТЬ ИЗ

Аудио

Недавний

Загрузки

Край галактики S6

Водить машину

Если я выбираю меню «Загрузки», отображается история файлов, но эти файлы вообще не могут быть найдены в телефоне?

Если я просматриваю «Galaxy S6 edge» и оттуда в папку «Загрузить», я вижу файлы на самом деле в телефоне.

Я заметил, что первый сценарий — «Загрузки» с «s» в конце, а второй сценарий — «Загрузка».

Как я могу это исправить? Есть ли способ программно удалить папку «Downloads», появляющуюся в меню вообще?


person Shawn    schedule 21.02.2018    source источник
comment
Я отлаживаю код и обнаружил, что при выборе файла в приведенных выше сценариях пути к ним, похоже, указывают на одну и ту же папку: /storage/emulated/0/Download/2004.pdf и /storage/emulated/0/Download/1998.pdf. . Первый файл вообще не существует в телефоне.   -  person Shawn    schedule 21.02.2018
comment
Я могу понять, почему удаленные файлы присутствуют в истории загрузок: я загрузил PDF-файл в «Загрузить», затем он появился как в меню «История загрузок», так и в папке «Загрузки»; затем я вручную удаляю этот PDF-файл с ПК при подключении телефона к ПК, затем он исчезает в папке «Загрузки» в телефоне, но все еще присутствует в истории загрузок. Итак, как я могу программно обновить историю загрузок, чтобы удаленные файлы вообще НЕ присутствовали?   -  person Shawn    schedule 22.02.2018


Ответы (1)


Кажется, что использование этой строки кода по умолчанию покажет «Внутреннее хранилище» в меню гамбургера:

intent.putExtra("android.content.extra.SHOW_ADVANCED", true);

Это из этого URL-адреса: Как чтобы по умолчанию отображать параметр внутреннего хранилища в намерении ActionOpenDocument

Что касается папки истории «Загрузки»: то, что я наблюдал ранее, было неточным. Оказалось, что файлы, загруженные в папку "Скачать" в телефоне, появятся и в папке истории "Скачатьs", а при удалении файла вручную из папки "Скачать" он не будет удален из " Загрузить папку истории s" автоматически.

Таким образом, похоже, что папка истории «Загрузкиs» ведет себя как ярлык и не очищается автоматически, когда фактический файл, на который он указывает, удаляется вручную. Скорее всего, это ожидаемое поведение. Думаю, так же, как ярлык в Windows. Следовательно, при выборе файла в папке истории «Загрузкиs», которая уже была удалена, будет генерироваться исключение NullPointerException, как и ожидалось, и мы должны обработать это исключение.

person Shawn    schedule 22.02.2018