2011-09-27 100 views
0
public void initCache(Context context) 
{ 
    this.context = context; 
    //Find the dir to save cached images 
    if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) 
     cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"myapp"); 
    else 
     cacheDir=context.getCacheDir(); 
    if(!cacheDir.exists()) 
     cacheDir.mkdirs(); 
} 

我在清單文件中擁有正確的權限,同時我還安裝了第sd卡。但儘管如此,我的應用程序正在寫入內部存儲。我正在使用摩托羅拉Atrix。在android中寫入SD卡

+0

所以第一個IF失敗? – LambergaR

+0

'android.os.Environment.getExternalStorageState()'的值是什麼?這可能會讓你知道發生了什麼。 –

回答

0

Environment.getExternalStorageState()返回路徑內部SD安裝像「的/ mnt/SD卡」點

否,Environment.getExternalStorageDirectory()是指任何與設備製造商認爲是「外部存儲」。在某些設備上,這是可移動媒體,如SD卡。在某些設備上,這是設備上閃光燈的一部分。在這裏,「外部存儲」是指「安裝在主機上時可通過USB Mass Storage模式訪問的東西」,至少對於Android 1.x和2.x.

但問題是關於外部SD。如何獲得像「/ mnt/sdcard/external_sd」這樣的路徑(它可能因設備而異)?

除了外部存儲,Android沒有「外部SD」的概念,如上所述。

如果設備製造商選擇將外部存儲設備設置爲板載閃存並且還具有SD卡,則需要聯繫該製造商以確定您是否可以使用SD卡(不保證)以及什麼規則是使用它的,比如使用什麼路徑。