在某些客户设备上,从getExternalFilesDir( null )
调用getFilesDir()
(很少Application.onCreate()
)会返回null。
文档没有说明无法从Application对象调用这些方法,并且在大多数设备上它们工作得很好。任何人都知道为什么这些方法会返回null,我应该从一个Activity对象中专门调用它们吗?
答案 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应用程序安装程序中的错误。我将开始建议报告此问题的客户重新启动他们的设备。