我發現當我使用下面的代碼時,它在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;
}
listFiles不是遞歸。它列出了一個目錄的內容,但不包括子目錄的內容。你確定你有/ sdcard裏面的文件以mp3或wav結尾嗎? – Blackbelt
它在子目錄中。我不知道它只讀取主目錄w/out子目錄。我怎樣才能做到這一點? –