Так что я знаю, что есть API доступа к SD-карте, который позволяет нам записывать файлы через DocumentProvider и DocumentFiles. Я работал над съемными SD-картами. Меня всегда путали внешние и внутренние хранилища. Я всегда думал, что внешнее хранилище - это всегда SD-карта, но сегодня я узнал, что это не так.Запись файлов в леденец в эмулированном хранилище?
У меня есть три вопроса.
Вопрос1, как узнать, хранятся ли файлы во внешнем эмулированном хранилище или SD-карте? Одним из решений может быть поиск экземпляров «sdcard0» или «эмулирование» в пути к файлу. Будет ли это решение работать всегда? Я имею в виду на всех телефонах?
Вопрос 2 Что использовать для записи файлов в эмулированных хранилищах (несъемное внешнее хранилище) обычных файлов или DocumentFile?
Вопрос 3 Если решение Q2 является файлом документа, то почему это не работает?
private static String [] getExtSdCardPaths() { Пути списка = новый ArrayList <>();
for (File file : GlobalSongList.GetInstance().getApplicationContext().getExternalFilesDirs("external")) {
if (file != null && !file.equals(GlobalSongList.GetInstance().getApplicationContext().getExternalFilesDir("external"))) {
int index = file.getAbsolutePath().lastIndexOf("/Android/data");
if (index < 0) {
Log.w("StorageAccessAPI", "Unexpected external file dir: " + file.getAbsolutePath());
}
else {
String path = file.getAbsolutePath().substring(0, index);
try {
path = new File(path).getCanonicalPath();
}
catch (IOException e) {
// Keep non-canonical path.
}
paths.add(path);
}
}
}
return paths.toArray(new String[paths.size()]);
}
Итак, здесь используется Case, С моим приложением Я хочу отредактировать теги файлов Итак, у файлов есть пути, не так ли? теперь вы можете фактически создать documentFile из этого файла, как описано здесь, проверить второй ответ. Теперь это не работает для эмулируемого хранилища, которое я пытаюсь решить, задавая эти вопросы. –
Вот ссылка http://stackoverflow.com/questions/26744842/how-to-use-the-new-sd-card -access-api-present-for-lollipop –
Также, что вы подразумеваете под этим «Если вы явно хотите использовать внешнее хранилище, используйте внешнее хранилище» –