Нет Android API, который мог бы сделать это, о котором я знаю, и для общего решения, которое необходимо. Чтобы обеспечить некоторый фон, SD-карта подключена к hw-контроллеру, который специфичен для платформы устройства. Можно прочитать значение cid из файловой системы linux / sys, если вы знаете свою платформу. Следующий фрагмент работает на моем дроиде (платформа на основе TI omap), но не на платформах на базе Qualcomm MSM.
try {
BufferedReader input = new BufferedReader(new FileReader("/sys/devices/platform/mmci-omap-hs.0/mmc_host/mmc0/mmc0:aaaa/cid"));
String sd_cid = input.readLine();
Log.i("CID_APP", sd_cid);
} catch (Exception e) {
Log.e("CID_APP","Can not read SD-card cid");
}
На другой платформе искомый файл sys отличается. Это может даже отличаться между различными картами на одной платформе, так как я не смог проверить это. На устройствах, основанных на MSM, путь будет выглядеть примерно так: /sys/devices/platform/msm_sdcc.1/mmc_host/...
Поскольку у нас аппаратная зависимость от считывания CID SD-карты, должно быть обновление API Android, обеспечивающее общий доступ. Затем этот API должен быть реализован каждым производителем устройства для сопоставления с правильным драйвером контроллера SD-карты.