在我的设备中,我有32GB内存和64GB SD卡。 我喜欢使用此方法获取外部自由大小(基于此线程Android get free size of internal/external memory):
public static long getAvailableExternalMemorySize() {
if (externalMemoryAvailable()) {
File path = Environment.getExternalStorageDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
} else {
return 0;
}
}
当我运行此代码时,它只显示内部存储器的空闲存储空间。 为什么它不显示外部SD卡大小? 在设备存储上我有11GB免费和在外部SD卡上有40GB免费。
答案 0 :(得分:0)
问题是在Android上没有访问外部SD卡的API。在android> = 4.4上无法写入外部SD卡。
你唯一可以做的事情(非常特别,不建议公共应用,但在受限制的环境中可行!),如果您确定设备是< android 4.4:保留你在许多设备上看到的工作路径列表,并检查所有路径是否存在。也许你很幸运。
答案 1 :(得分:0)
我找到了一个解决方案来读取可移动SD卡的存储:
此方法以字节形式返回可移动SD卡上的可用内存大小。
public static long getFreeExternalMemorySize() {
String secStore = System.getenv("SECONDARY_STORAGE");
File path = new File(secStore);
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize;
}
答案 2 :(得分:0)
阅读以下链接后,您可以了解一下。
http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
处理SD卡。在访问之前检查SD卡是否已安装。
http://developer.android.com/training/basics/data-storage/files.html#WriteExternalStorage
检查SD卡是否可写和可读。
http://developer.android.com/training/basics/data-storage/files.html#GetFreeSpace
获取SD卡或内部存储空间。