所以我遇到的问题如下,
以下代码行为我的应用程序的某些用户抛出了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一个。
这对于某些用户手机来说只是一个问题,还是在机器人结束时一般会出现问题?
答案 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();
}