我想检查设备上是否有SD卡可用。现在Android设备提供内部设备内存,Android系统将路径Environment.getExternalStorageDirectory()
视为内存。因此,当我们检查SD卡状态系统时,它总是说它可用。如何区分这两种类型的内存?
答案 0 :(得分:2)
你可以获得州:
String state = Environment.getExternalStorageState();
然后,例如,如果要检查是否已安装SDCARD:
if (Environment.MEDIA_MOUNTED.equals(state))
您可以在http://developer.android.com/reference/android/os/Environment.html。
中找到更多信息有一篇很好的SO帖子here谈论通过USB检测已安装的SD卡。问候。
<强>更新强>
外部存储与SD卡不同,至少在所有设备上都没有。具有内部闪存的设备(例如我的Nexus 4)会将其视为“外部存储”。
现在,具有内部闪存和SD卡,威胁内部闪存作为外部存储器和SD卡的设备随后被添加为此外部存储器下的目录。
程序员认为这很痛苦,但我们无能为力。有一个很好的帖子here更多地关注External Storage
。
答案 1 :(得分:1)
答案 2 :(得分:1)
有一个代码可以检查存储卡是否可用。
File file=new File("/sys/block/mmcblk1");
String sd_cid = null;
try {
String memBlk;
if (file.exists() && file.isDirectory()) {
memBlk = "mmcblk1";
} else {
//System.out.println("not a directory");
memBlk = "mmcblk0";
}
Process cmd = Runtime.getRuntime().exec("cat /sys/block/"+memBlk+"/device/cid");
BufferedReader br = new BufferedReader(new InputStreamReader(cmd.getInputStream()));
sd_cid = br.readLine();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
如果sd_cid为null,则存储卡无效。
答案 3 :(得分:0)
Environment.isExternalStorageRemovable()
提供有关您的外部存储是否可移动的信息。如果返回true,则表示您的外部存储已被删除,因此这意味着设备上存在SD卡。