2012-04-11 110 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或「僅收費」,則取決於設備,它應該可以工作。這是因爲外部數據存儲在技術上並未安裝到設備上,而是安裝到您的計算機上。