不能访问SD卡的情况

来源:互联网 发布:歼20 歼31 知乎 编辑:程序博客网 时间:2024/04/20 10:36

1,问题描述: 购买  中兴V955作为手机,但是为了节约成本(手机系统虚拟的SD卡空间为1.7G,满足实际要求)没有该买外部存储卡。自己写程序将图片及大量的数据保存在SD卡中,程序中使用

if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { // 文件可用使用外部存储File f = new File(Environment.getExternalStorageDirectory(),PICFILEPATH);if (!f.exists()) {f.mkdirs();}
判断和检测SD卡,检测的结果为V955没有外部存储SD卡(实际中也没有装SD)。找了很多方法,都不能访问到SD卡。最后通过eclipse的DDMS发现中兴V955的存储结构为/mnt/sdcard2,因为没有外部SD卡,所以通过Environment.getExternalStorageDirectory()不能访问/mnt/sdcard(实际不存在),通过

String file = "/mnt/sdcard2/" + PICFILEPATH;File f = new File(file);if (!f.exists()) {f.mkdirs();}

来完成对手机虚拟SD卡的访问。为了保证程序在有SD卡的手机中能够使用,可做如下判断

public static File getPicBaseFile() {if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { // 文件可用使用外部存储File f = new File(Environment.getExternalStorageDirectory(),PICFILEPATH);if (!f.exists()) {f.mkdirs();}return f;} else if ((new File("/mnt/sdcard2")).exists()) {  //特殊的手机,如中兴V955,存储卡为sdcard2String file = "/mnt/sdcard2/" + PICFILEPATH;File f = new File(file);if (!f.exists()) {f.mkdirs();}return f;} else {return null;}}

最终满足软件需求。

小结:如果手机自带外部存储或者虚拟存储,可通过上述的方式进行检查SD卡路径检查,不同的手机/mnt/sdcard2的方式不一样,有的可能为/mnt/sdcard0,可以通过eclipse的DDMS来查看SD卡的访问路径。







原创粉丝点击