getExternalFilesDir()返回null(不是权限问题)

20

我已经在开发一个应用程序了,一直在多个设备上测试。突然间,在Motorola Xoom Family Edition (Honeycomb 3.1)上停止工作。每次我尝试运行应用程序时,都会在调用getExternalFilesDir()时失败,因为该调用返回null而不是File。

通过我的研究,有类似问题的人可能要么缺少 WRITE_EXTERNAL_STORAGE 权限,要么从未得到答案,或者在谈论Froyo中的错误。但对我来说这些都不适用--而且它在其他设备上运行良好,我已经拥有 WRITE_EXTERNAL_STORAGE 权限,而且甚至在几分钟前也能在这个设备上正常运行。

你有什么想法可能导致这个问题,或如何以编程方式防止它?

3个回答

22

我重新启动了平板电脑后,问题消失了。这可能只是一些奇怪的小毛病,极其罕见,可以通过简单的重启解决;但我希望不是这样,因为我想要一个可靠的方法来预防这种情况,而不仅仅是指望那些遇到这种问题的用户能够理解。


3
对我很有帮助。操作系统中没有比Heisenbug更糟糕的了。 - Yaroslav Mytkalyk
我要注意到,从我所做的其他测试和开发来看,摩托罗拉Xoom Family Edition存在许多漏洞,并且软件方面构建得相当糟糕。其他更受欢迎的Xoom则没有这个问题。希望2012年第四季度的Ice Cream Sandwich更新能够有所帮助。 - Chad Schultz
6
我在Nexus 7设备上遇到了同样的问题。重启帮助解决了问题,但这个问题很奇怪。 - pawel.urban
1
在Nexus 5上也是一样的,这真的很令人不安,因为它是一个相当关键的方法... - Yoann Hercouet

7
在三星SCH-1405(VZW Galaxy II)上运行2.3.6(内核2.6.35.7-FF1)也存在同样的问题。数月来获取外部文件目录没有任何问题,突然间返回NULL。重新启动手机后问题消失了,这不是个好兆头。
可能的原因是我一直在切换USB调试模式以截屏,并且在从Mac上拔出USB电缆之前未卸载手机文件系统。这是我的新行为。
当问题存在时,从android.os.Environment.getExternalStorageState() 返回的结果为“shared”,但是当手机重启时,结果为“mounted”。因此,当手机认为外部存储是“shared”时,它不允许应用程序访问外部存储。这只是猜测。

0

如果设备处于“大容量存储”模式,就会出现这种情况。如果您将其更改为MTP或“仅充电”(取决于设备),则应该可以正常工作。这是因为外部数据存储技术上未挂载到设备而是挂载到计算机。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接