Android:从Application.onCreate()调用getExternalFilesDir(null)返回null

时间:2012-05-15 17:48:17

标签: android oncreate

在某些客户设备上,从getExternalFilesDir( null )调用getFilesDir()(很少Application.onCreate())会返回null。

文档没有说明无法从Application对象调用这些方法,并且在大多数设备上它们工作得很好。任何人都知道为什么这些方法会返回null,我应该从一个Activity对象中专门调用它们吗?

3 个答案:

答案 0 :(得分:7)

添加

<uses-permission
            android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
</uses-permission>

到您的清单。 为什么写不读(只读目录时) - 我不知道。我想每个应用程序都需要它,以便在第一次使用SD卡时创建目录。

答案 1 :(得分:0)

来自ContextWrapper.getExternalFilesDir

的文档
  

<强>返回

     

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

您是否在调用该方法之前检查是否已安装外部存储设备?

答案 2 :(得分:0)

我们的一些客户也得到了这个。幸运的是,它突然在我们的一个测试设备上重现。
经过一番嗅探后,我发现一个奇怪的文件出现在Android / data /下,就像应用程序包名称一样,但是大小为0.我无法删除或重命名它。该文件存在时,该应用程序无法访问外部存储 经过一些尝试后,我重新启动了设备并导航到Android /数据。我看到奇怪的文件消失了,出现了一个同名的文件夹。应用程序开始正常运行。
我认为这是Android应用程序安装程序中的错误。我将开始建议报告此问题的客户重新启动他们的设备。