20

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

根据我的研究,任何有类似问题的人要么缺少 WRITE_EXTERNAL_STORAGE,从未得到答案,要么正在谈论 Froyo 中的错误。这些都不适用于这里——再说一次,它在其他设备上也能正常工作,我有 WRITE_EXTERNAL_STORAGE 权限,直到几分钟前它甚至还在这个设备上工作。

知道什么可能导致这个问题,或者如何以编程方式防止它?

4

3 回答 3

22

重新启动平板电脑后问题就消失了。这可能只是一些极其罕见的奇怪怪癖,只需重新启动即可解决;我希望不会,因为我希望有一个可靠的方法来防止这种情况发生,而不是仅仅希望遇到这个错误的任何用户都能理解。

于 2012-04-11T22:20:50.690 回答
7

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

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

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

于 2012-11-02T12:48:37.737 回答
0

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

于 2017-02-14T20:27:01.493 回答