我对Android中的(免费)可用空间有疑问。如果我打开我的Android设置,我可以看到我的外部SD卡有大约9GB的可用空间。但如果我在Android应用程序中进行一些计算,我只能得到1GB。我使用以下几行:
double freeSpace = stats.getAvailableBlocks() * stats.getBlockSize() / 1024;
和
Environment.getExternalStorageDirectory().getUsableSpace();
这是什么原因?我只想获得可以使用的SD卡上的可用空间。
答案 0 :(得分:0)
在大多数现代Android设备上,外部存储是内置闪存的一部分,可通过USB线访问。虽然很久以前外部存储往往是通过微型SD卡实现的,但在4年内情况并非如此,而且今天相当罕见。因此,getExternalStorageDirectory()
可能不是您想要的。
如果您的设备运行Android 4.4+ - 特别是如果它附带Android 4.4+ - 那么如果getExternalFilesDirs()
返回2个以上的条目,则第二个和后续位置位于可移动存储上。原则上,您可以使用您的问题中的技术来尝试确定卡上的可用空间。话虽如此,我不知道这是否有效,因为我从未尝试过。
总体而言,可移动媒体主要用于设备制造商和预安装应用程序,而不是普通的SDK应用程序。