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

时间:2012-04-11 22:19:44

标签: android

我已经在应用程序上工作了一段时间,并且已经在许多设备上进行了测试。突然,它停止了摩托罗拉Xoom系列版(Honeycomb 3.1)的工作。每次我尝试运行应用程序时,它都会在调用getExternalFilesDir()时失败,因为该调用将返回null而不是File。

根据我的研究,任何有类似问题的人要么错过WRITE_EXTERNAL_STORAGE,要么没有得到答案,要么就是在谈论Froyo中的错误。这些都不适用于此 - 再次,它在其他设备上运行正常,我有WRITE_EXTERNAL_STORAGE权限,它甚至在几分钟前就在这台设备上运行。

知道可能导致此问题的原因,或者如何以编程方式阻止它?

3 个答案:

答案 0 :(得分:22)

重新启动平板电脑后,问题就消失了。它可能只是一些奇怪的怪癖,极其罕见,并通过简单的重启来修复;我希望不是,因为我希望有一个可靠的方法来防止这种情况,而不是仅仅希望任何碰到错误的用户都能理解。

答案 1 :(得分:6)

运行2.3.6(内核2.6.35.7-FF1)的三星SCH-1405(VZW Galaxy II)上的问题相同。没有问题获取外部文件目录几个月然后bam,它开始返回NULL。重新启动手机,问题就消失了。不是一个好兆头。

可能的原因可能是我一直在将手机切换到USB调试模式以进行屏幕截图,并且在没有先从我的Mac上卸载手机文件系统的情况下从手机中拔出USB线。这是我的新行为。

当我查看android.os.Environment.getExternalStorageState()的返回结果时出现问题,我看到“共享”,但是当手机重新启动时,结果是“已挂载”。因此,当手机认为外部存储“共享”时,似乎不允许应用访问外部存储。这是推测。

答案 2 :(得分:0)

如果设备处于“大容量存储”模式,则会发生这种情况。如果您将其更改为MTP或“仅充电”,则视设备而定,它应该有效。这是因为外部数据存储在技术上并未安装到设备上,而是安装在您的计算机上。