2013-07-26 113 views
1

好的,所以我儘可能地做了大量的研究,試圖弄清楚我是否做錯了什麼,但Google或Android教程中的任何內容都不能真正回答我的情況。如何處理內置存儲和外部SD卡?

的情景:

比方說,我有一個自帶16GB的Android設備內置存儲。我們還假設該設備具有32GB SD標準。基本上,該設備總共有48GB的存儲空間。我的應用需要掃描設備上每個用戶可訪問的位置。換句話說,我需要能夠訪問和讀取普通用戶(非root用戶)可以讀取和寫入的每個地方。

我在做什麼現在:

我使用推薦Environment.getExternalStorageDirectory()指向我/mnt/sdcard

問題:

Environment.getExternalStorageDirectory()要給我訪問設備上的每個用戶可訪問的存儲?我很困惑,因爲可以有16GB的內置存儲和32GB的SD卡存儲,但Android如何處理這兩個單獨的位置?它是否簡單地將這兩者合併爲一個單獨的/mnt/sdcard還是我只能使用我的代碼行訪問兩個存儲目錄之一?

對不起,如果這聽起來像一個noob問題,但來自iPhone背景,其中唯一的存儲可用內部存儲,我真的被Android處理這種情況的方法難住。感謝你的幫助!

+1

http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()。從文檔中引用傳統上,這是一張SD卡,但它也可以作爲內置存儲設備實現,該設備不同於受保護的內部存儲設備,並且可以作爲文件系統安裝在計算機上。 – Raghunandan

回答

6

Environment.getExternalStorageDirectory()是否允許我訪問設備上的每個用戶可訪問的存儲?

不,它指向external storage

Android如何處理兩個不同的位置?

Android本身大多隻關心指定爲外部存儲的一個位置。任何超出設備特定範圍的內容都取決於製造商(或可能是ROM Mod維護者)。

這就是爲什麼你在目前的Android SDK中沒有看到任何東西來訪問所有可能被認爲是「外部存儲」的多個卷。

是否只是兩者結合成一個單一的/ mnt/SD卡

還是我只能夠訪問這兩個存儲目錄中的一個與我行碼?

是的。

UPDATE:我寫了a series of blog posts試圖幫助開發者理解Android的存儲情況。

+0

嘿,感謝您的超級快速回復!我基本上是在製作一個音樂播放器,所以我需要能夠訪問用戶傳送到他/她的設備的音樂文件。假設用戶的內置存儲器上有幾個文件,物理SD卡上有幾個文件。我如何訪問這兩個位置?從你的文章中聽起來像,我只使用Environment.getExternalStorageDirectory()時,只是針對這兩個位置之一。再次感謝! – NewGradDev

+0

@ user1666541:「我如何訪問這兩個位置?」 - 一個普通的音樂播放器不應該關心這些位置中的任何*。一個普通的音樂播放器應該通過'MediaStore'找到它的音樂。許多設備製造商增加了「MediaStore」來索引所有面向用戶的存儲位置,而不僅僅是官方的外部存儲。另外,它可以讓你免於自己掃描所有的東西。如果您不想使用'MediaStore',則除了設備的官方外部存儲設備之外,您沒有可靠的選項可訪問面向用戶的商店。 – CommonsWare

+0

這很有趣。直到幾個星期前我才使用'MediaStore',但是我切換到自己的自定義掃描儀,因爲我需要一些'MediaStore'不提供的功能。但我仍然不明白:如果用戶可以訪問他/她的SD卡和內置存儲的兩個單獨位置,我是否也不能訪問它們?再次感謝您的所有幫助。 – NewGradDev

相關問題