2012-03-16 51 views
1

所以我注意到,從設備到設備,內部與外部有很多不同的配置。在我的Evo上,只有內部存儲器和外部SD卡,但是在同一年的Droid Incredible中,有內部存儲器,內部SD卡(〜8GB)和外部SD卡(默認1GB)。據推測還有其他配置,並會有更多的即將到來。Android - 查找所有內部和外部存儲

但是,我所能找到的關於枚舉可用存儲介質數量的東西看起來像Environment,您可以在其中執行諸如getExternalStorageDirectory()之類的操作,該操作返回File,而不是File []或類似的東西。有沒有一種更安全,通用的方法來枚舉所有可用的存儲介質?您只需導航到/ mnt /並在那裏獲取列表以查看所有已安裝的卷?

回答

1

有沒有一種更安全,通用的方法來枚舉所有可用的存儲介質?

從SDK的角度來看,有內部儲存空間(getFilesDir())和有外部存儲(Environment.getExternalStorageDirectory())。在Android 1.x/2.x上,這些將是獨立的分區;在Android 3.0+上,它們將是一個單獨的分區。

根據定義,除了SDK提供的內容之外做任何事情都是不安全的。沒有關於分區名稱的保證,它們的角色是什麼,是否可以從中讀取,是否可以寫入分區名稱等等。即使您要構建一個包含所有可能性(模型,操作系統版本,分區和他們的狀態),該數據庫將會永久過期相對於新設備和OS版本。

可能能夠通過MediaStore訪問其他分區上的媒體文件。例如,除了板載外部存儲設備之外,一些提供SD卡的設備製造商會將SD卡的文件編入索引,因此SD卡中包含的任何媒體文件都會顯示在MediaStore中。這可能允許您使用其他製造商提供的分區(例如SD卡)上的內容,但AFAIK MediaStore無法讓您在這些分區上放置新文件。