Android中访问sdcard路径的几种方式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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实现代码如下:
1public class MainActivity extends AppCompatActivity {
2 ImageView iv;
3 @Override
4protected void onCreate(Bundle savedInstanceState) {
5super.onCreate(savedInstanceState);
6 setContentView(yout.activity_main);
7 iv= (ImageView) findViewById(R.id.iv);
8 }
9public void load(View view){
10//第⼀种:直接引⽤全部的⽬录(4.1之前使⽤,之后不建议这样⽤)
11// Bitmap bm = BitmapFactory.decodeFile("/storage/emulated/0/Download/tianxingjiuge.jpg");
12//第⼆种:/storage/emulated/0这⼀段的路径可以⽤Environment.getExternalStorageDirectory()
13// Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() +
14// "/Download/tianxingjiuge.jpg");
15//第三种:使⽤Environment.getExternalStoragePublicDirectory(String type)函数调⽤不同类型的⽂件⽬录
16 Bitmap bm = BitmapFactory.decodeFile(Environment.getExternalStoragePublicDirectory
17 (Environment.DIRECTORY_DOWNLOADS) + "/tianxingjiuge.jpg");
18 iv.setImageBitmap(bm);
19 }
20 }
第三种⽅式中使⽤Environment.getExternalStoragePublicDirectory(String type)函数,该函数可以返回特定类型的⽬录,⽬前⽀持如下类型:
1 • DIRECTORY_ALARMS //警报铃声
2 • DIRECTORY_DCIM //相机拍摄的图⽚和视频
3 • DIRECTORY_DOWNLOADS //下载⽂件保存
4 • DIRECTORY_MOVIES //电影的保存,⽐如通过google play下载的电影
5 • DIRECTORY_MUSIC //⾳乐保存
6 • DIRECTORY_NOTIFICATIONS //通知⾳乐保存
7 • DIRECTORY_PICTURES //下载的图⽚
8 • DIRECTORY_PODCASTS //⽤于保存podcast(博客)的⾳频⽂件
9 • DIRECTORY_RINGTONES //保存铃声
本次图⽚保存在Download⽬录下,所以使⽤Environment.DIRECTORY_DOWNLOADS。