如何检查安卓设备上的可用空间?在SD卡上?

2022-08-31 21:08:14

如何检查Android设备上还剩下多少MB或GB?我使用的是 JAVA 和 Android SDK 2.0.1。

是否有任何系统服务会公开类似的东西?


答案 1

雅罗斯拉夫的答案将给出SD卡的大小,而不是可用空间。StatFs将返回正常程序仍然可以访问的块数。这是我正在使用的函数:getAvailableBlocks()

public static float megabytesAvailable(File f) {
    StatFs stat = new StatFs(f.getPath());
    long bytesAvailable = (long)stat.getBlockSize() * (long)stat.getAvailableBlocks();
    return bytesAvailable / (1024.f * 1024.f);
}

上面的代码引用了截至 2014 年 8 月 13 日已弃用的一些函数。我在下面复制更新的版本:

public static float megabytesAvailable(File f) {
    StatFs stat = new StatFs(f.getPath());
    long bytesAvailable = 0;
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2)
        bytesAvailable = (long) stat.getBlockSizeLong() * (long) stat.getAvailableBlocksLong();
    else
        bytesAvailable = (long) stat.getBlockSize() * (long) stat.getAvailableBlocks();
    return bytesAvailable / (1024.f * 1024.f);
}

答案 2

试试这个代码

StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());

long bytesAvailable = (long)stat.getBlockSize() *(long)stat.getBlockCount();
long megAvailable   = bytesAvailable / 1048576;

System.out.println("Megs: " + megAvailable);

更新:

getBlockCount()- SD卡的返回大小;

getAvailableBlocks()- 返回正常程序仍然可以访问的块数(谢谢Joe)


推荐