В моем устройстве у меня 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 ГБ бесплатно.
«Почему он не показывает внешний размер SD-карты?» - потому что Android SDK не поддерживает [произвольный доступ к съемному хранилищу] (https://commonsware.com/blog/2014/04/09/storage-situation-removable-storage.html). – CommonsWare
Вы можете попробовать запросить установку своего приложения на внешнюю память, поэтому при хранении файлов их можно сохранить на SD-карте. См.: Http://developer.android.com/guide/topics/data/install-location.html –
Так что я не могу получить размер внешней карты SD-карты? Как работают настройки -> Хранение на Android, если нет возможности прочитать хранилище? – MSeiz5