Android中訪問sdcard路徑的幾種方式
阿新 • • 發佈:2019-02-04
以前的Android(4.1之前的版本)中,SDcard路徑通過“/sdcard”或者“/mnt/sdcard”來表示,而在JellyBean(安卓4.1)系統中修改為了" /storage/sdcard0",還會有多個SDcard的情況。目前為了保持和之前程式碼的相容,SDcard路徑做了Link對映。為了使程式碼更加健壯並能相容以後的Android版本和新裝置,安卓4,1後sdcard中會有系統自動生成的儲存特定內容的的檔案目錄,從而可以使用一些特定函式來獲取對應目錄。
今天我們就簡單介紹幾種訪問SDcard路徑的幾種方式:
本次演示獲取的圖片路徑如下:
完整路徑為“/storage/emulated/0/Download/tianxingjiuge.jpg
下面我們通過將本機“/storage/emulated/0/Download/tianxingjiuge.jpg”圖片載入到APP中ImageView的演示來介紹這幾種載入方式:
佈局檔案上方為一個Button,下方為imagView,不做過多闡述了,java實現程式碼如下:
第三種方式中使用Environment.getExternalStoragePublicDirectory(String type)函式,該函式可以返回特定型別的目錄,目前支援如下型別:public class MainActivity extends AppCompatActivity { ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv= (ImageView) findViewById(R.id.iv); } public void load(View view){ //第一種:直接引用全部的目錄(4.1之前使用,之後不建議這樣用) // Bitmap bm = BitmapFactory.decodeFile("/storage/emulated/0/Download/tianxingjiuge.jpg"); //第二種:/storage/emulated/0這一段的路徑可以用Environment.getExternalStorageDirectory() // Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + // "/Download/tianxingjiuge.jpg"); //第三種:使用Environment.getExternalStoragePublicDirectory(String type)函式呼叫不同型別的檔案目錄 Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOWNLOADS) + "/tianxingjiuge.jpg"); iv.setImageBitmap(bm); } }
本次圖片儲存在Download目錄下,所以使用Environment.DIRECTORY_DOWNLOADS。• DIRECTORY_ALARMS //警報鈴聲 • DIRECTORY_DCIM //相機拍攝的圖片和視訊 • DIRECTORY_DOWNLOADS //下載檔案儲存 • DIRECTORY_MOVIES //電影的儲存,比如通過google play下載的電影 • DIRECTORY_MUSIC //音樂儲存 • DIRECTORY_NOTIFICATIONS //通知音樂儲存 • DIRECTORY_PICTURES //下載的圖片 • DIRECTORY_PODCASTS //用於儲存podcast(部落格)的音訊檔案 • DIRECTORY_RINGTONES //儲存鈴聲