Environment.getExternalStorageDirectory() is deprecated過時的替代方案

用新的Android SDK 29編譯的時候,Studio提示Environment.getExternalStorageDirectory()過時了,要用Context#getExternalFilesDir代替,Android Q以後Environment.getExternalStorageDirectory()返回的路徑可能無法直接訪問,所以改成了Context#getExternalFilesDir

所以Environment.getExternalStorageDirectory()可以改成:

getExternalFilesDir(null);

得到的路徑如下:

/storage/emulated/0/Android/data/yourPackageName/files

這個目錄會在應用被卸載的時候刪除,而且訪問這個目錄不需要動態申請STORAGE權限。

如果這個目錄不存在,系統會自動幫你創建,看下源碼:

getExternalFilesDir的參數可以傳以下幾種:

String?: The type of files directory to return. May be null for the root of the files directory or one of the following constants for a subdirectory: android.os.Environment#DIRECTORY_MUSICandroid.os.Environment#DIRECTORY_PODCASTSandroid.os.Environment#DIRECTORY_RINGTONESandroid.os.Environment#DIRECTORY_ALARMSandroid.os.Environment#DIRECTORY_NOTIFICATIONSandroid.os.Environment#DIRECTORY_PICTURES, or android.os.Environment#DIRECTORY_MOVIES. This value may be null.

例如我們傳一個

getExternalFilesDir(Environment.DIRECTORY_PICTURES);

得到的路徑如下:

/storage/emulated/0/Android/data/yourPackageName/files/Pictures

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章