Android:如何获得外置SD卡的存储?

时间:2015-04-27 12:47:13

标签: android storage external sd-card android-sdcard

在我的设备中,我有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免费。

3 个答案:

答案 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卡或内部存储空间。