Android: 如何获取外置sd卡的存储空间?
Android: How to get storage of external sd-card?
我的设备有 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 的空闲空间。
问题是 api 无法访问 android 上的外部 SD 卡。 android >= 4.4 无法写入外置sd卡
你唯一可以做的事情(非常特别,不推荐用于 public 应用程序,但在受限环境中可行!),如果你确定设备是 < android 4.4:保留一份您目前在许多设备上看到的有效路径列表,并正确检查所有这些路径是否存在。也许你运气好。
我找到了读取可移动 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;
}
阅读以下链接后,您会有所了解。
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 卡或内部存储中的免费 space。
我的设备有 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 的空闲空间。
问题是 api 无法访问 android 上的外部 SD 卡。 android >= 4.4 无法写入外置sd卡
你唯一可以做的事情(非常特别,不推荐用于 public 应用程序,但在受限环境中可行!),如果你确定设备是 < android 4.4:保留一份您目前在许多设备上看到的有效路径列表,并正确检查所有这些路径是否存在。也许你运气好。
我找到了读取可移动 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;
}
阅读以下链接后,您会有所了解。
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 卡或内部存储中的免费 space。