2013-08-02 60 views
1

我發現當我使用下面的代碼時,它在AVD上工作,但是當我在物理設備或Bluestack上打開它時,即使該音樂文件位於SD卡上,該列表也是空的。任何人都知道發生了什麼事?無法使用ExternalStorageDirectory獲取文件

而且,如果你知道如何讓它從內部存儲器讀取文件,我將不勝感激,因爲我發現 - 許多手機有大容量內存,而且他們不使用SD卡(有些甚至可以' T)。

下面的代碼:

static Uri[] mUris; 
static String[] mFiles = null; 
public static String[] getMusic(){ 

    File music = Environment.getExternalStorageDirectory(); 

    // File asd = Environment. 

    // String[] savedFiles = getApplicationContext().fileList(); 

    File[] musicList = music.listFiles(new FilenameFilter() { 

     @Override 
     public boolean accept(File dir, String name) { 
      // TODO Auto-generated method stub 
      return ((name.endsWith(".mp3")||(name.endsWith(".wav")))); 
     } 
    }); 

    mFiles = new String[musicList.length]; 
    for(int i=0; i<musicList.length;i++) { 
     mFiles[i]=musicList[i].getAbsolutePath(); 
    } 

    return mFiles; 
} 
+1

listFiles不是遞歸。它列出了一個目錄的內容,但不包括子目錄的內容。你確定你有/ sdcard裏面的文件以mp3或wav結尾嗎? – Blackbelt

+0

它在子目錄中。我不知道它只讀取主目錄w/out子目錄。我怎樣才能做到這一點? –

回答

0

我建議你先找到SD卡的可用空間 閱讀本文檔可以幫助你 http://developer.android.com/reference/android/os/StatFs.html

+0

我不認爲從內部記憶讀取是好的partice – KOTIOS

+0

我不知道我應該使用什麼找出可用空間。 @ Stacks28:嗯,有些設備沒有SD卡,所以我也需要這個。 –

+0

多數民衆贊成在說什麼1.找到如果SD卡可用2.如果你想放在SD卡然後我建議檢查可用空間 – KOTIOS

相關問題