2012-04-13 62 views
7

我正在開發一個需要寫入文件到SD卡的應用程序。我正在使用GetExternalStoragePublicDirectory()來確定要寫入的目錄。寫入文件到SD卡而不是USB存儲

我有兩款手機正在開發中。在運行Android 4.0.4(冰淇淋三明治)的Google Nexus S上,它將返回SD卡上的目錄。但是,在運行Android 2.3.5的Samsung Exhibit 2上,它直接寫入手機上的USB存儲設備。

有沒有辦法強制SD卡?

編輯:

我發現getExternalStoragePublicDirectory(),和getExternalStorageDirectory()總是返回 「到/ mnt/SD卡/」。這實際上不是SD卡的安裝位置。在三星展品2上,這是USB存儲位置。卡的安裝位置是「/ mnt/sdcard/external_sd」。有沒有辦法返回這個實際的SD位置?

我看到照相機和其他應用程序找到了一種方法。相機應用程序有一個「存儲」設置,選項「電話」和「存儲卡」。如果指定了「存儲卡」,圖像實際上存儲在SD卡上。

+1

+1「Android將在所有設備上始終運行相同」,我們更好地使用「平臺獨立開發」hahaha。 Motorola Defy:sdcard-ext(不是下劃線) – 2012-09-19 13:30:53

回答

2

有沒有辦法回到這個實際SD位置?

不,抱歉,不在當前的Android SDK中。

我看到相機和其他應用程序找到了一種方法。

大多數情況下,它們將要麼被那些寫入由設備製造商,或通過MediaStore正在閱讀的信息,這應該指數兩個來源。

0

如果你想寫入SD卡只使用

File mySdCardPath = Environment.getExternalStorageDirectory(); 
File dir = new File (mySdCardPath.getAbsolutePath() + "/yourDirectoryName"); 
+1

所描述的解決方案在使用GetExternalPublicDirectory(「yourDirectoryName」)時在兩部手機上都具有相同的行爲。從GetExternalStorageDirectory()返回的目錄實際上是「/ mnt/sdcard」。顯然在三星展品2上,這是USB存儲。實際的SD卡位於「/ mnt/sdcard/external_sd」處。顯然這是一個已知的問題。請參閱:http://stackoverflow.com/q/5694933/758074 – 2012-04-13 23:46:31