2011-03-26 54 views
6

我試圖將數據存儲在SD卡上,根據指南here我應該使用getExternalFilesDir()(API 8級),我真的想這樣做,但呼籲
File directory = context.getExternalFilesDir(null);保持回國null,我使用我的主要活動作爲上下文。
然後我試圖恢復使用File dir = Environment.getExternalStorageDirectory();,它正確返回SD根,但顯然我無法創建提示「/安卓/數據/包名/文件/」目錄:Android的外部數據存儲的問題

File root = Environment.getExternalStorageDirectory(); 
    File dir = new File(root, GlobalConstants.EXTERNAL_SAVE_DIR); 
    boolean canCreate = dir.mkdirs(); 

在這段代碼canCreate是錯誤的(EXTERNAL_SAVE_DIR顯然是/ Android/data/package_name/files /)。

有什麼我失蹤了,也許我應該問清單上的權限(我什麼也沒找到)?我已閱讀getExternalFilesDir()有一個內容在應用程序更新時被刪除的錯誤,我並不在意這一點,我寧願使用它而不是另一個,因爲我試圖符合API 8,我喜歡這個想法它爲我處理目錄名稱。

有什麼想法?

回答

21

您需要添加以下到您的清單:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> 

否則你不能寫入SD卡。如果您使用Eclipse,則可以使用清單編輯器的權限選項卡添加它。

+0

該死的,我不知道我是怎麼錯過的,我查過了! – capitano666 2011-03-26 20:13:01

+0

還值得一提的是,這些文件不是在編寫時自動創建的,而是必須使用'file.createNewFile()' – capitano666 2011-03-26 20:41:29

+9

我不明白爲什麼文檔沒有在數據存儲部分提及此權限。 +1它解決了我的問題。 – Emerald214 2011-06-16 03:58:31