Я думаю, это глупая ошибка, но я не могу помочь себе здесь ... Это мое первое Android-приложение. Я пытаюсь сохранить некоторые данные на эмулированной SD-карте, чтобы пользователь мог легко получить данные.Android: getExternalFilesDir - Путь не отображается на ПК
Этот класс должен написать некоторые поля данных на SD-карту
private final List<DataField> dataFields;
private final File exportFile;
private DateFormat simpleDate = new SimpleDateFormat("yyyyMMddhhmm");
private CsvExporter(List<DataField> dataFields) {
this.dataFields = dataFields;
exportFile = new File(getTargetFolderPath(), getTargetFileName());
}
private String getTargetFileName() {
return "export_" + (simpleDate.format(new Date())) + ".csv";
}
private File getTargetFolderPath() {
//return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File targetFolder = getExternalFilesDir(null);
if (!targetFolder.exists()){
if (!targetFolder.mkdirs()){
Log.e("CsvWriter","Could not create targetFolder " + targetFolder);
}}
Log.d("CsvWriter","TargetFolder is " + targetFolder);
for (File f: targetFolder.listFiles()){
Log.d("CsvWriter","Found file " + f);
}
return targetFolder;
}
private void initFile() throws IOException {
if (!exportFile.exists()) {
if (!exportFile.createNewFile()){
Log.e("CsvWriter","Could not create targetFile " +exportFile);
}
}
Log.d("CsvWriter","targetFile is " +exportFile);
}
public File doExport() {
try {
initFile();
List<String[]> data = convertToStrings();
writeData(data);
readData();
return exportFile;
} catch (IOException e) {
throw new RuntimeException("Unable to create or write to csv-File", e);
}
}
Я отладки приложения на планшете Asus. Пока все работает нормально. Папка была создана в первый раз и существует сейчас. Файл записывается и также может читаться программно. Если я открою устройство с монитором устройства Android, я увижу файлы /mnt/shell/emulated/0/Android/data/my.package.name/files/. Это было полностью ожидаемо, и я счастлив, что это работает так гладко. Тем не менее, когда я установить андроид-устройства на моем компьютере, моя папка не видна под /Android/data/my.package.name/files
android.permission.WRITE_EXTERNAL_STORAGE
меня включен в моем AndroidManifest.xml
You может видеть другой подход, когда я выбираю папку загрузки в качестве моей цели. Снова я вижу файлы при просмотре дерева каталогов с монитором устройства Android (/ shell/emulated/0/Download /), но не вижу файлы, когда я открываю папку «Загрузить» на устройстве на моем компьютере.
Что я делаю неправильно? Isnt getExternalFilesDir должен возвращать папку, видимую поверх usb?
Edit: Вот скриншот моего адм и мой FileBrowser ...
Edit2: Я решил проблему. Спасибо :) Фиксированный doExport():
public File doExport() {
try {
initFile();
List<String[]> data = convertToStrings();
writeData(data);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + getTargetFolderPath())));
//readData();
return exportFile;
} catch (IOException e) {
throw new RuntimeException("Unable to create or write to csv-File", e);
}
}
Я настоятельно рекомендую прочитать this question
u означает, что вы найдете данные под ur app имя пакета – KOTIOS
@adcom: я не понимаю ваш вопрос .. – samjaf