Android получит бесплатный размер внутренней / внешней памяти - PullRequest
84 голосов
/ 15 ноября 2011

Я хочу получить размер свободной памяти на внутренней / внешней памяти моего устройства программным способом. Я использую этот кусок кода:

StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount();
long megAvailable = bytesAvailable / 1048576;
Log.e("","Available MB : "+megAvailable);

File path = Environment.getDataDirectory();
StatFs stat2 = new StatFs(path.getPath());
long blockSize = stat2.getBlockSize();
long availableBlocks = stat2.getAvailableBlocks();
String format =  Formatter.formatFileSize(this, availableBlocks * blockSize);
Log.e("","Format : "+format);

и результат, который я получаю:

11-15 10:27:18.844: E/(25822): Available MB : 7572
11-15 10:27:18.844: E/(25822): Format : 869MB

Проблема в том, что я хочу получить свободную память SdCard, которая сейчас 1,96GB. Как я могу исправить этот код, чтобы я мог получить бесплатный размер?

Ответы [ 11 ]

0 голосов
/ 19 февраля 2016

По поводу внешней меноры есть еще один способ:File external = Environment.getExternalStorageDirectory(); free:external.getFreeSpace(); total:external.getTotalSpace();

...