context.getExternalFilesDir(null)为null

时间:2013-12-12 15:41:22

标签: java android

我正在尝试调试我在应用中遇到的问题。问题是getExternalFiles(dir)在我的Android应用程序中返回null但我不知道为什么。我有必要的权限。这是一个存在于Android(2.3.5及更高版本)的多个设备和版本上的错误。如果您需要更多信息,请与我们联系。

问题的代码行是:

path = context.getExternalFilesDir(null)+“/ database / mydata.db”;

path = context.getFilesDir()。getAbsolutePath()+“/ database / mydata.db”;

谢谢。

3 个答案:

答案 0 :(得分:4)

context.getExternalFilesDir(null)返回null是完全有效的回复。

来自文档:

  

<强>返回

     

在外部存储上保存应用程序文件的目录的路径。如果当前未安装外部存储器,则返回null,因此无法确保路径存在;您需要在可用时再次调用此方法。

http://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)

因此看起来它失败的设备有一个当前不可用的外部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" />