Android Environment類的介面詳解

2021-07-09 07:25:53 字數 1933 閱讀 7693

稿

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.i***ternalstorageremovable())

然後,新增外部儲存讀和寫的許可權:?

12

在environment中還提供了android標準目錄的路徑,以string型別提供。

directory_alarms 系統提醒鈴聲存放的標準目錄。

directory_downloads 

directory_movies 電影存放的標準目錄。

directory_music **存放的標準目錄。

directory_notifications 系統通知鈴聲存放的標準目錄。

directory_pictures 存放的標準目錄

directory_podcasts 系統廣播存放的標準目錄。

directory_ringtones 系統鈴聲存放的標準目錄。

static file getdatadirectory() 獲得data的目錄(/data)。

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() 獲取應用程式在外部儲存的儲存目錄

springcloud zipkin介面詳解

1 介面主要為 find a trace 查詢追溯 dependencies 依賴 2 首頁裡面主要承載了trace的查詢功能,根據不同的條件,搜尋出資料來 3 trace詳情介面 這個圖中,需要注意的是相對時間和呼叫行為 呼叫行為分如下四種 cs client send 客戶端已經提出了請求。這就...

python介面類 Python中的介面類與抽象類

介面類 物件導向中的繼承有兩種用途 1 可以通過繼承做到 重用,並完成擴充套件 2 介面繼承。所謂的介面繼承就是定義乙個介面類 inte ce,介面類中定義了一些介面 就是函式,但這些函式都沒有具體的實現 子類繼承介面類,並且實現介面中的功能 介面繼承可以使得外部呼叫者無需關心具體的實現細節,可用相...

String類的intern 方法的例題詳解

ps 1.8和1.6版本的intern方法的做法會有所不同 jdk 1.8 將這個字串物件嘗試放入串池,如果有則並不會放入,如果沒有則放入串池,會把串 池中的物件返回 jdk1.6 將這個字串物件嘗試放入串池,如果有則並不會放入,如果沒有會把此物件複製乙份,放入串池,會把串池中的物件返回 基於1.8...