3
我已經得到了Android 2.3一個相當棘手的問題:我有收集用於調試和支持目的的各種日誌(my company做Linux的堅固的硬件)的應用程序,並已停止工作最近,因爲它沒有寫入SD卡。下面是我見過的症狀和我進行的調查:Android的SD卡寫入失敗,但不能始終如一
- 是跨多種類型具有不同的SD卡,所有這些都被檢查文件系統損壞(未發現問題)的多臺設備。
- 所有設備報告:Environment.getExternalStorageState()等於Environment.MEDIA_MOUNTED。
- 所有這些器件還報告說,Environment.getExternalStorageDirectory()。getAbsolutePath()。canWrite()是假的。
- 通過PackageManager.checkPermission(),我的應用報告它具有WRITE_EXTERNAL_STORAGE權限。
- OI文件管理器能夠創建目錄並移動SD卡上的文件;我的應用程序無法做到。
此代碼是足以導致失敗:
String sdcardDirectory = Environment.getExternalStorageDirectory().getAbsolutePath();
File directory = new File(sdcardDirectory + "/logger");
if(!directory.mkdirs()){
//fails here.
Log.w("Logger", "Could not create logger directory.");
}
因爲我有機會獲得該設備的鑰匙,我甚至至今爲標誌的平臺關鍵應用程序並運行它去作爲android.uid.system,沒有運氣。有人有主意嗎?
後您使用的是嘗試寫TEH外部SD – bbedward 2012-03-13 13:48:46
爾加的代碼。我只是將它編輯爲原始文章。 – Fishbreath 2012-03-13 14:03:02
如果你的設備上有「adb shell」,你可以在那裏創建文件/目錄嗎? 「ls -la」會告訴你SD卡目錄中的文件/文件夾具有正確的權限嗎? '-rwxrwxrwx 1 1000 1015 0 Mar 13 14:18 file''drwxrwxrwx 2 1000 1015 4096 Mar 13 14:19 folder'就是我所得到的。這些數字(1000和1015)也很重要,並且是'WRITE_EXTERNAL_STORAGE'權限所必需的(1015是Linux中的一個組,每個應用程序獲得該權限時都會獲得該組)。 – zapl 2012-03-13 14:21:06