#android #storage #android-sdcard #archos
#Android #Хранение #android-sdcard #archos
Вопрос:
Я не уверен, в чем источник проблемы — более старая версия Android с ошибкой или я делаю что-то не так, но моя проблема в том, что независимо от того, что я делаю, Android сообщает, что SD-карта смонтирована. Даже если это физически не в планшете (archos 7o)..
public boolean saveToDisk(String filename, String header) {
/* first check to see if the SD card is mounted */
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
//throw some exception so we can display an error message
// XXX
return false;
}
try {
File root = Environment.getExternalStorageDirectory();
File dir = new File(root.getAbsolutePath() "/bioz");
if (!dir.exists()) {
dir.mkdirs();
}
File file = new File(dir, filename);
....
Первый тест всегда имеет значение true, getExternalStorageDirectory() отвечает /mnt/storage, а проверка на наличие /mnt/storage/bioz указывает, что каталог существует.
Есть идеи, что происходит? Я делаю что-то не так, API сломан или что-то еще?
Спасибо, Реза
Ответ №1:
Внешнее хранилище — это не то же самое, что SD-карта, по крайней мере, не на всех устройствах. Устройства, имеющие внутреннюю флэш-память (например, мой Nexus S), представляют угрозу как «внешнее хранилище».
Теперь устройства, имеющие как внутреннюю флэш-память, так и SD-карту, используют внутреннюю флэш-память в качестве внешней памяти, а SD-карта добавляется в качестве каталога под этой внешней памятью.
С точки зрения программистов это боль, но мы мало что можем с этим поделать.
Комментарии:
1. Мой Acer Iconia (Android 3.2) снова обрабатывает его по-другому, у него есть внутреннее хранилище как / sdcard / и / mnt / sdcard /, но настоящая SD-карта отображается только в /mnt/ external_sd
2. @phalacee: спасибо за информацию. Да, это одна из областей, где SDK является спорным.
3. итак, какова правильная стратегия с точки зрения записи на SD-карту?
4. я запустил телефон и проверил файловую систему, кажется, она отображается как /mnt/storage / sdcard — это очень раздражает. Думаю, решение будет зависеть от конкретного устройства…