以前的Android(4.1之前的版本)中,SDcard路徑通過“/sdcard”或者“/mnt/sdcard”來表示,而在JellyBean(安卓4.1)系統(tǒng)中修改為了" /storage/sdcard0",還會有多個SDcard的情況。目前為了保持和之前代碼的兼容,SDcard路徑做了Link映射。為了使代碼更加健壯并能兼容以后的Android版本和新設備,安卓4,1后sdcard中會有系統(tǒng)自動生成的保存特定內(nèi)容的的文件目錄,從而可以使用一些特定函數(shù)來獲取對應目錄。
今天我們就簡單介紹幾種訪問SDcard路徑的幾種方式:
本次演示獲取的圖片路徑如下:
完整路徑為“/storage/emulated/0/Download/tianxingjiuge.jpg”


下面我們通過將本機“/storage/emulated/0/Download/tianxingjiuge.jpg”圖片加載到APP中ImageView的演示來介紹這幾種加載方式:

布局文件上方為一個Button,下方為imagView,不做過多闡述了,java實現(xiàn)代碼如下:
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)函數(shù)調用不同類型的文件目錄 Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOWNLOADS) + "/tianxingjiuge.jpg"); iv.setImageBitmap(bm); }}第三種方式中使用Environment.getExternalStoragePublicDirectory(String type)函數(shù),該函數(shù)可以返回特定類型的目錄,目前支持如下類型:
• 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。
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網(wǎng)!
新聞熱點
疑難解答