我正在尝试调试我在应用中遇到的问题。问题是getExternalFiles(dir)在我的Android应用程序中返回null但我不知道为什么。我有必要的权限。这是一个存在于Android(2.3.5及更高版本)的多个设备和版本上的错误。如果您需要更多信息,请与我们联系。
问题的代码行是:
path = context.getExternalFilesDir(null)+“/ database / mydata.db”;
或
path = context.getFilesDir()。getAbsolutePath()+“/ database / mydata.db”;
谢谢。
答案 0 :(得分:4)
context.getExternalFilesDir(null)
返回null
是完全有效的回复。
来自文档:
<强>返回强>
在外部存储上保存应用程序文件的目录的路径。如果当前未安装外部存储器,则返回
null
,因此无法确保路径存在;您需要在可用时再次调用此方法。
因此看起来它失败的设备有一个当前不可用的外部SD卡(用户已安装,移除它等)。
您必须使用Environment.getExternalStorageState()
等内容检查此案例,并在不存在的情况下进行相应处理。
答案 1 :(得分:3)
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
return true;
}
return false;
答案 2 :(得分:3)
可能是权限问题 尝试添加它:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />