【发布时间】:2015-11-19 20:29:58
【问题描述】:
Android API 中是否有 SD 卡的唯一标识符,如何获取?如何区分手机中的不同 SD 卡?我需要SD卡的ID,请告诉我,谢谢。
【问题讨论】:
标签: android local-storage sd-card
Android API 中是否有 SD 卡的唯一标识符,如何获取?如何区分手机中的不同 SD 卡?我需要SD卡的ID,请告诉我,谢谢。
【问题讨论】:
标签: android local-storage sd-card
简短的回答是,到目前为止,Android 中还没有直接的 Java API。
如果你真的需要它,一种方法是运行以下命令并分析输出(你可以使用终端模拟器应用程序来测试这些):
mount
这将列出已挂载的分区,通常在其输出中会有一个/mnt/sdcard 及其相关的/dev/sdb1。您可以处理输出并找到您感兴趣的 sd 卡分区。
blkid
这需要root权限,即先运行su命令。这将打印块设备信息,/dev/sdb1 左右会有一个与之关联的 UID。
【讨论】:
您可以使用以下方法获取 SD 卡 ID
public String getSDCardUniqueId()
{
String sd_cid = null;
try {
File file = new File("/sys/block/mmcblk1");
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();
//System.out.println(sd_cid);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sd_cid;
}
【讨论】: