2012-04-11 115 views
20

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

从我的研究中,任何有类似问题的人都会错过WRITE_EXTERNAL_STORAGE,从来没有得到答案,或者在谈论Froyo中的错误。这些都不适用 - 再次,它可以在其他设备上正常工作,我拥有WRITE_EXTERNAL_STORAGE权限,甚至可以在几分钟前使用此设备。

任何想法可能会导致此问题,或者如何以编程方式阻止它?

回答

22

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

+3

为我工作。没有比操作系统中的heisenbug更糟的了。 – 2012-10-03 08:48:49

+0

我会注意到,从我做过的其他测试和开发中获得的摩托罗拉Xoom家庭版存在很多bug,并且软件构建相当糟糕。另一种更流行的Xooms很好。希望2012年第四季度冰淇淋三明治更新将有所帮助。 – 2012-10-03 14:39:14

+6

我受到Nexus 7设备上的相同问题的影响。重启有帮助,但这个问题很奇怪。 – 2013-03-04 18:34:47

6

在运行2.3.6(内核2.6.35.7-FF1)的Samsung SCH-1405(VZW Galaxy II)上出现同样的问题。没有问题获得外部文件目录几个月,然后巴姆,它开始返回NULL。重新启动的电话和问题消失了。不是一个好兆头。

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

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

0

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