2015-04-27 2 views
0

В моем устройстве у меня 32 ГБ встроенной памяти и 64 ГБ на SD-карте. Я хотел бы получить внешний свободный размер с помощью этого метода (на основе этой нити Android get free size of internal/external memory):Android: Как получить внешнюю SD-карту?

public static long getAvailableExternalMemorySize() { 
    if (externalMemoryAvailable()) { 
     File path = Environment.getExternalStorageDirectory(); 
     StatFs stat = new StatFs(path.getPath()); 
     long blockSize = stat.getBlockSize(); 
     long availableBlocks = stat.getAvailableBlocks(); 
     return availableBlocks * blockSize; 

    } else { 
     return 0; 
    } 
} 

Когда я запускаю этот код он только показывает мне бесплатное хранение внутренней памяти. Почему он не показывает внешний размер SD-карты? На устройстве хранения У меня есть 11 ГБ бесплатно и на внешней SD-карте есть 40 ГБ бесплатно.

+1

«Почему он не показывает внешний размер SD-карты?» - потому что Android SDK не поддерживает [произвольный доступ к съемному хранилищу] (https://commonsware.com/blog/2014/04/09/storage-situation-removable-storage.html). – CommonsWare

+1

Вы можете попробовать запросить установку своего приложения на внешнюю память, поэтому при хранении файлов их можно сохранить на SD-карте. См.: Http://developer.android.com/guide/topics/data/install-location.html –

+0

Так что я не могу получить размер внешней карты SD-карты? Как работают настройки -> Хранение на Android, если нет возможности прочитать хранилище? – MSeiz5

ответ

0

Я нашел решение, чтобы прочитать хранение съемной SD-карты:

Этот метод retourns свободный объем памяти на съемной SD-карты в байте.

public static long getFreeExternalMemorySize() { 
     String secStore = System.getenv("SECONDARY_STORAGE"); 
     File path = new File(secStore); 
     StatFs stat = new StatFs(path.getPath()); 

     long blockSize = stat.getBlockSize(); 
     long availableBlocks = stat.getAvailableBlocks(); 

     return availableBlocks * blockSize; 
} 
0

Проблема в том, что нет апи для доступа к внешним SD-картам на Android. On android> = 4.4 внешние SD-карты не могут быть записаны.

Единственное, что вы могли бы сделать (ОЧЕНЬ СПЕЦИАЛЬНО, не рекомендуется для общедоступных приложений, но выполнимо в ограниченной среде!), Если вы уверены, что устройства: < android 4.4: Сохраните список путей, которые вы видели работать до сих пор на многих устройствах и проверять все их на наличие должным образом. Может, тебе повезет.

0

Вы можете получить представление о нем после прочтения следующих ссылок.

http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

для обработки карт памяти SD Card. Перед подключением убедитесь, что SD-карта установлена.

http://developer.android.com/training/basics/data-storage/files.html#WriteExternalStorage

Проверить сд карты для записи и для чтения.

http://developer.android.com/training/basics/data-storage/files.html#GetFreeSpace

, чтобы получить свободное пространство в SDCard или внутренней памяти.