路径错误无效:获取外部存储器大小

Shi*_*din 7 android

当我调用它来获取外部存储器详细信息时,我收到如下错误.

05-07 16:55:07.710: E/AndroidRuntime(22624): FATAL EXCEPTION: main java.lang.IllegalArgumentException: Invalid path: /storage/emulated/0
05-07 16:55:07.710: E/AndroidRuntime(22624):    at android.os.StatFs.doStat(StatFs.java:46)
05-07 16:55:07.710: E/AndroidRuntime(22624):    at android.os.StatFs.<init>(StatFs.java:39)
Run Code Online (Sandbox Code Playgroud)

在我将我的机器人更新到SAMSUNG Galaxy S3 4.3之前,这是有效的.我跟着这篇文章.这是我的代码:

// getting available memory
public static String getAvailableExternalMemorySize() {
    if (externalMemoryAvailableBool()) {
        // File path =
        // Environment.getExternalStorageDirectory().getAbsolutePath();
        StatFs stat = new StatFs(Environment.getExternalStorageDirectory()
                .getAbsolutePath());
        long blockSize = stat.getBlockSize();
        long availableBlocks = stat.getAvailableBlocks();
        return formatSize(availableBlocks * blockSize);

    } else {
        return ERROR;
    }

}

// getting total memory
public static String getTotalExternalMemorySize() {

    if (externalMemoryAvailableBool()) {
        File path = Environment.getExternalStorageDirectory();
        StatFs stat = new StatFs(path.getPath());
        long blockSize = stat.getBlockSize();
        long totalBlocks = stat.getBlockCount();
        return formatSize(totalBlocks * blockSize);
    } else {
        return ERROR;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想获得外部存储卡的可用和总内存.

小智 1

这是为了帮助那些正在寻找相同崩溃签名的人。由于这个问题在谷歌搜索时出现在最前面,而且我没有看到任何明确的可接受的答案。

@sandrstar 的建议是正确的。我的应用程序遇到了同样的崩溃,我只需添加 READ_EXTERNAL_STORAGE 权限即可解决该问题。虽然我的情况似乎只在 4.4 设备上发生/报告崩溃。

背后的原因解释如下: http://developer.android.com/reference/android/Manifest.permission.html#READ_EXTERNAL_STORAGE

  • 有同样的问题。添加权限没有帮助。我的SD卡的路径是/mnt/media_rw/extSdCard (3认同)