getExternalFilesDir(null)为某些用户返回null

时间:2014-12-13 20:39:13

标签: android nullpointerexception

所以我遇到的问题如下,

以下代码行为我的应用程序的某些用户抛出了NullPointerException,但我不知道为什么

String state = Environment.getExternalStorageState();
if(Environment.MEDIA_MOUNTED.equals(state))
    baseDir = getExternalFilesDir(null).getAbsolutePath();
else
    baseDir = getFilesDir().getAbsolutePath();

更具体的是这部分

baseDir = getExternalFilesDir(null).getAbsolutePath();

此代码在OnPostCreate()中调用,如果您想知道,我也拥有所需的权限。

因此getExternalFilesDir(null)由于某种原因返回null,即使它已被挂载。

我也搜索了一下SO,发现相同的帖子有同样的问题,但没有真正的答案只有好的一个是this一个。

这对于某些用户手机来说只是一个问题,还是在机器人结束时一般会出现问题?

1 个答案:

答案 0 :(得分:4)

这很奇怪。 android文档说它只在未挂载外部存储时返回null。我认为正确的是:

String state = Environment.getExternalStorageState();
if(Environment.MEDIA_MOUNTED.equals(state)) {
    File baseDirFile = getExternalFilesDir(null);
    if(baseDirFile == null) {
        baseDir = getFilesDir().getAbsolutePath();
    } else {
        baseDir = baseDirFile.getAbsolutePath();
    }
} else {
    baseDir = getFilesDir().getAbsolutePath();
}