1. 程式人生 > >Android中訪問sdcard路徑的幾種方式

Android中訪問sdcard路徑的幾種方式

以前的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實現程式碼如下:

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);
    }
}
第三種方式中使用Environment.getExternalStoragePublicDirectory(String type)函式,該函式可以返回特定型別的目錄,目前支援如下型別:
• DIRECTORY_ALARMS //警報鈴聲
• DIRECTORY_DCIM //相機拍攝的圖片和視訊
• DIRECTORY_DOWNLOADS //下載檔案儲存
• DIRECTORY_MOVIES //電影的儲存,比如通過google play下載的電影
• DIRECTORY_MUSIC //音樂儲存
• DIRECTORY_NOTIFICATIONS //通知音樂儲存
• DIRECTORY_PICTURES //下載的圖片
• DIRECTORY_PODCASTS //用於儲存podcast(部落格)的音訊檔案
• DIRECTORY_RINGTONES //儲存鈴聲
本次圖片儲存在Download目錄下,所以使用Environment.DIRECTORY_DOWNLOADS。