2010-11-05 36 views
25

我想作一個文件瀏覽器,會做兩兩件事: 1)允許用戶瀏覽和選擇一個目錄 2)允許用戶瀏覽他們的SD卡Android編程:從哪裏開始創建簡單的文件瀏覽器?

我看過的所有文件教程,但似乎無法找到任何? 有人可以通過解釋我的代碼需要做什麼纔能有一個簡單的文件瀏覽器或提供鏈接到教程/源代碼來幫助我嗎?

請和謝謝!

回答

26

如果你實際上對學習寫作自己感興趣,我建議你長時間閱讀File類文檔。這就是你將要完成大部分工作的地方。

在SD卡/ Android的其他外部存儲的情況下,你要首先檢查以確保試圖讀取它之前,外部存儲安裝和使用,使用Environment類:

String extState = Environment.getExternalStorageState(); 
//you may also want to add (...|| Environment.MEDIA_MOUNTED_READ_ONLY) 
//if you are only interested in reading the filesystem 
if(!extState.equals(Environment.MEDIA_MOUNTED)) { 
    //handle error here 
} 
else { 
    //do your file work here 
} 

一旦你已經確定了外部存儲的正確狀態,一個簡單的方式開始是使用文件的listFiles()方法,像這樣:

//there is also getRootDirectory(), getDataDirectory(), etc. in the docs 
File sd = Environment.getExternalStorageDirectory(); 
//This will return an array with all the Files (directories and files) 
//in the external storage folder 
File[] sdDirList = sd.listFiles(); 

然後就可以開始使用文件過濾器來縮小搜索結果:

FileFilter filterDirectoriesOnly = new FileFilter() { 
    public boolean accept(File file) { 
     return file.isDirectory(); 
    } 
}; 
File[] sdDirectories = sd.listFiles(filterDirectoriesOnly); 

從那裏,只是通過文檔閱讀找到你正在尋找用它做的事情的類型,然後你就可以把所有這些進入名單適配器工作等

希望這有助於!

+0

哦,順便說一下,我有一個工作文件保存和文件讀取腳本,我已經測試過,它的工作原理,我想我創建的文件瀏覽器只是返回你點擊的文件的Uri /你選擇的目錄。 – AlexPriceAP 2010-11-05 19:40:43

+0

在這種情況下,只需添加一個返回相應文件路徑的點擊處理程序(例如'sdDirectories [1] .getAbsolutePath()')。 – kcoppock 2010-11-05 20:16:06

+0

非常感謝,我即將開始製作!如果我遇到了麻煩,如果我請求你的幫助,會不會好呢,還是你不願意? :) – AlexPriceAP 2010-11-05 21:09:22

8

看看OI File Manager,這是一個開源的Android文件管理器。你可以得到源代碼here

+0

我真的會推薦*使用* OI文件管理器,而不是複製它。在我的應用程序中,我只需添加一個啓動OI文件管理器的按鈕來選擇一個文件,並且如果尚未安裝,請提供市場下載。 – EboMike 2010-11-05 18:36:22

+0

這就是我用ES File Explorer所做的那一刻,我很想讓自己真正做到。 – AlexPriceAP 2010-11-05 18:57:46

+5

如何確保用戶安裝了OI文件管理器?複製源代碼可以確保它被打包成你的.apk文件......只是傳播一個意圖就是越過你的手指和希望。 – 2010-12-01 20:50:55

21

這是一個很晚的答案,但我最近創建了一個android文件瀏覽器。 https://github.com/mburman/Android-File-Explore

它的確很簡單。本質上,它只需要將1個文件集成到您的應用程序中。

+0

感謝您的幫助,但我已經建立在kcoppock的代碼上,並完成了一段時間,但榮譽,但看起來像一個不錯的應用:) – AlexPriceAP 2011-07-19 23:36:19

+0

謝謝你,它工作完美! – 2014-02-20 12:46:27

+0

偉大的代碼+1,需要一些小的imporvements ... – uLYsseus 2014-08-26 03:45:25

相關問題