在某些客户设备上调用getExternalFilesDir( null )
(并且很少getFilesDir()
) fromApplication.onCreate()
返回 null。
文档没有说明不能从 Application 对象调用这些方法,并且在大多数设备上它们都可以正常工作。任何人都知道为什么这些方法会返回 null 并且我应该从 Activity 对象中专门调用它们吗?
添加
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
</uses-permission>
到您的清单。为什么写不读(仅读取目录时)-我不知道。我想每个应用程序都需要它才能在第一次使用 sdcard 时创建目录。
来自ContextWrapper.getExternalFilesDir的文档
退货
返回外部存储上保存应用程序文件的目录的路径。如果当前未安装外部存储,则返回 null,因此无法确保路径存在;当它可用时,您将需要再次调用此方法。
您是否在调用该方法之前检查以确保已安装外部存储?
我们的一些客户也得到了这个。幸运的是,它突然在我们的一台测试设备上重现。
经过一番嗅探,我发现 Android/data/ 下出现了一个奇怪的文件,名称与应用程序包名称类似,但大小为 0。我无法删除或重命名它。虽然此文件存在,但该应用程序无法访问外部存储。
经过一些尝试,我重新启动了设备并导航到 Android/data。只见奇怪的文件消失了,出现了一个同名的文件夹。应用程序开始正常运行。
我认为这是 Android 应用程序安装程序中的一个错误。我将开始建议报告此问题的客户重新启动他们的设备。