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

所以我有以下问题,

下面的代码行为我的应用程序的某些用户抛出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.

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

解决方法:

这很奇怪. 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();
}
上一篇:欠了好久的CRM帖子,双11来读。


下一篇:Android NullPointerException GetDatabaseLocked