不能访问SD卡的情况

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,存储卡为sdcard2
			String 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卡的访问路径。







  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值