Как записать файлы во внешнее публичное хранилище в Android, чтобы они были видны из Windows?
Мое приложение должно сохранять файлы в том месте, где при подключении телефона / планшета к компьютеру их можно увидеть через проводник системных файлов.
Вот как я реализовал запись файлов:
protected String mDir = Environment.DIRECTORY_DOCUMENTS;
protected File mPath = Environment.getExternalStoragePublicDirectory(mDir);
protected void writeLogFile(String filename) {
File f = new File(mPath, filename + ".txt");
f.getParentFile().mkdirs();
try (BufferedWriter bw = new BufferedWriter(new FileWriter(f, false))) {
// Details omitted.
} catch (Exception e) {
e.printStackTrace();
return;
}
makeText("Wrote " + f.getAbsolutePath());
}
Вот что я вижу, когда подключаю свой планшет Sony Xperia Z4 к Windows (обратите внимание на отсутствующую папку документов):
Это каталог, в который записан файл (используя вышеприведенную реализацию):
Что не так с моей реализацией?
1 ответ
Что не так с моей реализацией?
MediaStore
еще не обнаружил ваши вновь созданные файлы. То, что вы видите в Windows - и во многих приложениях "галереи" на устройстве - основано на том, что MediaStore
проиндексировал.
использование MediaScannerConnection
И его scanFile()
способ рассказать MediaStore
о вашем файле, как только вы записали свои данные на диск:
public void scanFile(Context ctxt, File f, String mimeType) {
MediaScannerConnection
.scanFile(ctxt, new String[] {f.getAbsolutePath()},
new String[] {mimeType}, null);
}