Проверка 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-карта добавляется в качестве каталога в эту внешнюю память.

С точки зрения программистов, это боль, но мы мало что можем с этим поделать.

Другие вопросы по тегам