Подтвердить что ты не робот

Папка, добавленная в android, не видимая через USB

Я пытаюсь сохранить фотографии в подпапках в Android. Вот немного моего кода:

File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
path = new File(path, "SubDirName");
path.mkdirs();

(Я пробовал getExternalStorageDirectory вместо getExternalStoragePublicDirectory и папку Pictures вместо DCIM.)

Дело в том, что любая вложенная папка, которую я добавляю, включая ее содержимое, не отображается в проводнике Windows, когда устройство подключено через USB. Однако это проявляется в Android File Manager.

Я пробовал трансляцию намерения ACTION_MEDIA_MOUNTED на родителя нового каталога. Это не сработало.

Если я добавлю файл в Windows, он появится на Android. Если я добавлю файл на Android через Диспетчер файлов, он появится в Windows. Если я добавлю файл программно, он появится в Диспетчере файлов Android, но не в Проводнике Windows. И мне нужно получить его из Windows, и я не хочу, чтобы конечный пользователь должен был создать папку вручную.

Что я делаю неправильно?

4b9b3361

Ответ 1

Даже тема кажется старой. Я столкнулся с такой же проблемой, и перезагрузка устройства Android или ПК не является практичным решением для пользователей.:) Эта проблема связана с использованием протокола MTP (я ненавижу этот протокол). Что вам нужно сделать, так это начать повторное сканирование доступных файлов, и вы можете сделать это, используя класс MediaScannerConnection:

// snippet taken from question
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
path = new File(path, "SubDirName");
path.mkdirs();

// 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(this, new String[] {path.toString()}, null, null);

Ответ 2

Этот способ не работает для меня иногда. Ну вот полное решение.

// snippet taken from question
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
path = new File(path, "SubDirName");
path.mkdirs();

// fix
path.setExecutable(true);
path.setReadable(true);
path.setWritable(true);

// 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(this, new String[] {path.toString()}, null, null);

Ответ 3

Единственное, что сработало для меня, это:

Intent mediaScannerIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
Uri fileContentUri = Uri.fromFile(path);
mediaScannerIntent.setData(fileContentUri);
this.sendBroadcast(mediaScannerIntent);

Кредит fooobar.com/questions/200934/...

Ответ 4

Если вы добавите папку на SD-карту с ПК прямо на карту через устройство чтения карт, оно не будет отображаться в проводнике Windows при подключении к телефону, решение состоит в том, чтобы скопировать или переместить одну и ту же папку с помощью программы Android-менеджера файлов, а затем он будет указан в индексе SD-карты при подключении к ПК.

Ответ 5

Я решил эту проблему, переключив настройку телефона:

1) После того, как Dir создал и/или сохранил файл, Chang из режима (MTP) в режим USB (SD Card) на мгновение, дождитесь установки sd-карты на ПК, так что будет отображаться Dir и файл.

2) Вернитесь в режим (MTP) снова, где последний файл все еще отображается.

3) при повторном сохранении файла u вам нужно снова переключиться на USB-порт, чтобы увидеть его.

Ответ 6

просто создайте каталог на компьютере, затем скопируйте его на накопитель sd card/phone.

вы можете сначала вставить содержимое в папку и сначала скопировать или просто папку. поскольку папка создается с ПК, любой контент можно просто скопировать непосредственно на внутренние/внешние мобильные устройства. для зашитого содержимого они не могут быть непосредственно распакованы и скопированы, к сожалению, вам сначала нужно разархивировать их.

удачи и хорошего дня!:)