Проверка Android на наличие SD-карты всегда возвращает true
Я не уверен, что источник проблемы - более старая версия 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);
....
Первый тест всегда верен, getExternalStorageDirectory() отвечает с помощью /mnt/storage, а тест на наличие /mnt/storage/bioz указывает, что каталог существует.
Есть идеи, что происходит? Я делаю что-то не так, API сломан или что-то еще?
Спасибо Реза
1 ответ
Внешнее хранилище отличается от SD-карты, по крайней мере, не на всех устройствах. Устройства, которые имеют внутреннюю флэш-память (например, мой Nexus S), угрожают этому как "внешнее хранилище".
Теперь устройства, которые имеют как внутреннюю флеш-память, так и SD-карту, создают угрозу внутренней флеш-памяти как внешней памяти, а SD-карта добавляется в качестве каталога в эту внешнюю память.
С точки зрения программистов, это боль, но мы мало что можем с этим поделать.