对于某些用户,getExternalFilesDir(null)返回null

Dok*_*kki 3 android nullpointerexception

所以我有以下问题,

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

String state = Environment.getExternalStorageState();
if(Environment.MEDIA_MOUNTED.equals(state))
    baseDir = getExternalFilesDir(null).getAbsolutePath();
else
    baseDir = getFilesDir().getAbsolutePath();
Run Code Online (Sandbox Code Playgroud)

更具体地讲这部分

baseDir = getExternalFilesDir(null).getAbsolutePath();
Run Code Online (Sandbox Code Playgroud)

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

所以getExternalFilesDir(null)由于某种原因会返回null,即使将其挂载也是如此。

我还在SO上进行了一些搜索,发现了具有相同问题的相关帖子,但没有真正的答案,只有一个很好的答案是这个

那么这仅仅是某些用户电话上的问题还是Android终端上的一般问题?

小智 5

这很奇怪。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();
}
Run Code Online (Sandbox Code Playgroud)