Anroid獲取內置外置SD卡路徑以及讀寫測試

最近項目有一個新需求是要把應用的大文件下載到外置SD卡,自己研究了一下安卓如何獲取內置和外置SD卡路徑以及進行文件讀寫,以下是自己的總結。

在網上找的方法都感覺不太好,比較亂,所以自己就查了一下安卓的官方API。官方API路徑是:file:///C:/Android/android-sdk-windows/docs/guide/topics/data/data-storage.html,把C:/Android/android-sdk-windows替換爲你電腦上SDK的安裝路徑。我是用的火狐瀏覽器的脫機模式查看的(這裏一定要選擇脫機模式,否則頁面會去嘗試聯網,但是谷歌又被牆了,所以會無法加載)。

下面我挑一些重要的步驟進行說明(圖片截取自網頁):

①,獲取權限:

如上圖所示:如果你需要讀取SD卡內容,需要的權限爲:READ_EXTERNAL_STORAGE,如果你需要寫入數據到SD卡,需要的權限爲:WRITE_EXTERNAL_STORAGE。如果你的應用讀寫權限都需要,那麼只需要聲明寫的權限即可。需要注意的是,從安卓4.4系統開始,如果你的應用僅僅需要保存你應用的私有數據,那麼不需要聲明這兩個權限。以上這種情況你可以這樣來聲明權限:
<manifest ...>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
                     android:maxSdkVersion="18" />
    ...
</manifest>
②,檢查存儲卡是否可用:

最重要的一點就是:當你需要對存儲卡進行讀寫操作時,首先需要確認存儲卡是否處於可讀或者可寫的狀態。獲取存儲卡狀態的方法爲:Environment.getExternalStorageState()。存儲卡可讀的狀態爲:Environment.MEDIA_MOUNTED_READ_ONLY,既可讀又可寫的狀態爲:Environment.MEDIA_MOUNTED。
③:獲取應用私有的存儲卡路徑:

從安卓4.4開始,你可以通過調用getExternalFilesDirs()來獲取一個數組,這個數組裏面存儲了手機的內外置SD卡路徑。但是建議使用ContextCompat.getExternalFilesDirs()方法,這個方法同樣支持4.3及以下系統,但是在4.3及以下系統裏面並不能得到外置SD卡路徑,只會返回內置SD卡路徑。
④,獲取存儲卡的公共存儲路徑:
當你的應用需要存儲一些非私有數據(可以被其他應用操作的數據,比如下載的圖片,音樂等)時,不能用應用的私有路徑,應該使用公共路徑,以便可以被其他應用訪問。調用的方法爲:Environment.getExternalStoragePublicDirectory();
------------------------------------------------------------------草稿未完--------------------------------------------------------------------------
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章