所以我有以下问题,
下面的代码行为我的应用程序的某些用户抛出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();
}