Android Environment類的介面詳解

來源:互聯網
上載者:User

Android Environment類的介面詳解

Android應用開發中,常使用Environment類去擷取外部儲存目錄,在訪問外部儲存之前一定要先判斷外部儲存是否已經是可使用(已掛載&可使用)狀態,
並且需要在AndroidManifest.xml檔案中添加外部儲存讀和寫的許可權。
Environment類中提供了幾個靜態常量用於標識外部儲存的狀態,這些狀態都是String類型
MEDIA_BAD_REMOVAL 在沒有掛載前儲存媒體已經被移除。
MEDIA_CHECKING 正在檢查儲存媒體。
MEDIA_MOUNTED 儲存媒體已經掛載,並且掛載點可讀/寫。
MEDIA_MOUNTED_READ_ONLY 儲存媒體已經掛載,掛載點唯讀。
MEDIA_NOFS 儲存媒體是空白或是不支援的檔案系統。
MEDIA_REMOVED 儲存媒體被移除。
MEDIA_SHARED 儲存媒體正在通過USB共用。
MEDIA_UNMOUNTABLE 儲存媒體無法掛載。
MEDIA_UNMOUNTED 儲存媒體沒有掛載。
可以通過靜態方法getExternalStorageState()來擷取外部儲存的狀態,如果程式需要在外部儲存裡面讀寫資料,必須要先判斷:

if(Environment.MEDIA_MOUNTED.equals(
Environment.getExternalStorageState())
|| !Environment.isExternalStorageRemovable())

然後,添加外部儲存讀和寫的許可權:

        

在Environment中還提供了Android標準目錄的路徑,以String類型提供。
DIRECTORY_ALARMS 系統提醒鈴聲存放的標準目錄。
DIRECTORY_DCIM 相機拍攝照片和視頻的標準目錄。
DIRECTORY_DOWNLOADS 下載的標準目錄。
DIRECTORY_MOVIES 電影存放的標準目錄。
DIRECTORY_MUSIC 音樂存放的標準目錄。
DIRECTORY_NOTIFICATIONS 系統通知鈴聲存放的標準目錄。
DIRECTORY_PICTURES 圖片存放的標準目錄
DIRECTORY_PODCASTS 系統廣播存放的標準目錄。
DIRECTORY_RINGTONES 系統鈴聲存放的標準目錄。

static File getDataDirectory() 獲得data的目錄(/data)。
static File getDownloadCacheDirectory() 獲得下載快取目錄。(/cache)
static File getExternalStorageDirectory() 獲得外部儲存媒體目錄。(/mnt/sdcard or /storage/sdcard0)
static File getRootDirectory() 獲得系統主目錄(/system)

除了用Environment擷取儲存目錄之外,還可以通過把路徑寫死的方式,比如要讀取外部儲存/mnt/sdcard目錄下的檔案,可以在程式中直接用全路徑,
但是這樣做是很不好的,應該Android實在是太開放了,外部儲存的目錄的什麼還是要韌體製作商才知道,但是有一點是毋庸置疑的,就是Android架構層裡面
已經是指定好了Environment.getDownloadCacheDirectory()的返迴路徑。所以,盡量用這種方式來擷取和儲存資料,以免韌體廠商不同而造成路徑的差異。

Android的實際開發中還用了兩個非常重要的緩衝目錄,一個是應用程式自己的緩衝空間,另一個是外部儲存為該應該程式提供的緩衝空間。有什麼差別?
使用過LruCache和DisLruCache的童鞋應該知道。
這兩個方法是通過內容物件Context擷取的,只要應用程式被卸載,這兩個目錄下的檔案都要被清空。
context.getCacheDir() 擷取應用程式自己的緩衝目錄
context.getExternalCacheDir() 擷取應用程式在外部儲存的儲存目錄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.