How can you retrieve your phone internal storage from an app? I found MemoryInfo, but it seems that returns information on how much memory use your currently running tasks.
I had a hard time having mine works. So I would like to share my working code to save some guys some time.
Tested on a 32GB device and 1GB device.
// Return size is in Megabytes
public class DeviceMemory {
public static long getInternalStorageSpace()
{
StatFs statFs = new StatFs(Environment.getDataDirectory().getAbsolutePath());
//StatFs statFs = new StatFs("/data");
long total = ((long)statFs.getBlockCount() * (long)statFs.getBlockSize()) / 1048576;
return total;
}
public static long getInternalFreeSpace()
{
StatFs statFs = new StatFs(Environment.getDataDirectory().getAbsolutePath());
//StatFs statFs = new StatFs("/data");
long free = ((long)statFs.getAvailableBlocks() * (long)statFs.getBlockSize()) / 1048576;
return free;
}
public static long getInternalUsedSpace()
{
StatFs statFs = new StatFs(Environment.getDataDirectory().getAbsolutePath());
//StatFs statFs = new StatFs("/data");
long total = ((long)statFs.getBlockCount() * (long)statFs.getBlockSize()) / 1048576;
long free = ((long)statFs.getAvailableBlocks() * (long)statFs.getBlockSize()) / 1048576;
long busy = total - free;
return busy;
}
}