我想以编程方式获取设备内部/外部存储空闲内存的大小.我正在使用这段代码:
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);
Run Code Online (Sandbox Code Playgroud)
而我得到的结果是:
11-15 10:27:18.844: E/(25822): Available MB : 7572
11-15 10:27:18.844: E/(25822): Format : 869MB
Run Code Online (Sandbox Code Playgroud)
问题是我想获得1,96GB现在的SdCard的免费记忆.如何修复此代码,以便获得免费大小?
欢迎大家
我已经在Stackoverflow和谷歌中尝试了与此相关的所有问题,但没有一个有效.我尝试了类似下一个链接,但它返回与内部存储相同:如何获得外部存储SD卡大小(带有挂载的SD卡)?
例如,如果我有大约12GB的内部存储空间和4GB SD卡存储空间,无论我使用什么方法,我总是得到与内部空间完全相同的SD空间数.
似乎在Stackoverflow中发布的旧方法仅适用于Android KitKat,但在下一个Android版本中不起作用.
有可能解决这个问题吗?