Android: каталог, созданный динамически, не отображается пользователю

Я попытался создать каталог динамически, используя mkdirs(), и он успешно создал каталог и скопировал файлы в созданный каталог. Можно увидеть новый каталог в планшете (xoom), но когда я подключаюсь к своему ПК для копирования некоторых файлов, каталог не появляется.

что я могу сделать?

EDT: Вот что я сделал:

File dirs = new File(Environment.getExternalStorageDirectory()+"/MyDir/");
    dirs.mkdirs();

Что не так?

EDT2: я пробовал все в этой теме (http://stackoverflow.com/questions/6218572/creating-a-folder-programmatically-on-a-xoom) и не работал. Предложения?

PS: я нашел приложение, которое повторно сканирует SD-карту. Если я создаю каталог и использую это приложение, оно работает отлично. Кто-нибудь знает, как повторно сканировать SD-карту?


person JannGabriel    schedule 27.08.2012    source источник
comment
Вам нужно сохранить файл/каталог на SD-карте, чтобы он был виден на ПК, а не в папке данных приложения.   -  person Marcio Covre    schedule 27.08.2012
comment
если я перезапущу свой xoom, снова подключу его к ПК, отключу и снова подключу... появится папка. Кто-нибудь знает, как заставить его работать? ПОЖАЛУЙСТА?   -  person JannGabriel    schedule 31.08.2012


Ответы (3)


Я решил эту проблему, выполнив следующую строку, которая была рекомендована в ответе выше, а также в https://stackoverflow.com/a/8606529/2482894

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + Environment.getExternalStorageDirectory())));
person leo9r    schedule 23.08.2013

Довольно старый пост, но я решил добавить ответ, который не требует добавления URI.

// initiate media scan and put the new things into the path array to
// make the scanner aware of the location and the files you want to see
MediaScannerConnection.scanFile(context, new String[] {filePath}, null, null);
person Android    schedule 16.10.2014

Некоторые планшеты (я думаю, xoom входит в их число), которые имеют внутреннюю память и SD-карту, имеют другой способ хранения файлов. getExternalStorage указывает на папку /mnt/SDCard, но это внутренняя память, чтобы добраться до SDCard путь /mnt/SDCard/SDCard (странно я знаю).

Поэтому вам нужно увидеть реальное монтирование SDCard на вашем планшете и увидеть значение Environment.getExternalStorageDirectory(), иначе вы будете сохранять не на SDCard, а в файловой системе планшета.

РЕДАКТИРОВАТЬ: Вероятно, это проблема с медиа-драйвером xoom, он должен сканировать SD-карту, когда пользователь монтирует на ПК.

Чтобы повторно отсканировать SD-карту, которую вы можете отключить и подключить, используйте приложение «Галерея» для обновления SD-карты или программный вызов sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath())));

person Marcio Covre    schedule 27.08.2012
comment
Хм. у моего планшета он находится в /mnt/externalSD (это может быть externSD или extSD - здесь не хватает памяти). Внутренняя память находится в /mnt/sdcard. - person Drake Clarris; 27.08.2012
comment
Может на JB и поправили, а на HoneyComb папки были такие. - person Marcio Covre; 27.08.2012
comment
дело в том, что я создал на ПК папку, а затем динамически создал другую. Когда я ищу папки в планшете, оба каталога находятся в одном месте, но когда я ищу с моего ПК, просто показывает тот, который я создал первым, а не тот, который создан динамически - person JannGabriel; 28.08.2012