Найти ярлык тома SD на Android

Можно ли узнать метку тома SD-карты, вставленной в Android-устройство?

Я понимаю, что Android имеет только одно "внешнее хранилище" (как возвращается Environment.getExternalStorageDirectory()), но в дикой природе есть довольно много устройств, которые имеют внутреннюю флеш-память как "внешнее хранилище" и карту SD, смонтированную под этими или даже более дикими комбинациями (см. этот другой вопрос). Можно перечислять эти дополнительные устройства, читая /proc/mounts, но нам нужно что-то идентифицировать их с пользователем. Есть ли шанс получить их метки тома?

Я проверил, что Linux vfat driver игнорирует метку тома вообще и что blkid from util-linux читает сам vfat. Я также проверил, что, по крайней мере, на устройстве, которое у меня есть, блок-устройство SD-карты имеет режим 660 и владелец root.root, поэтому я не могу этого сделать. Таким образом, в основном это сводится к тому, есть ли какая-либо утилита, которая могла бы читать ее.

Ответ 1

Я нашел решение.

Самое простое решение - построить busybox и использовать его следующим образом: busybox blkid

Сложное решение - найти blkid для Android и найти то, что вам нужно в его исходном коде (функция blkid_dev_devname).

Ответ 2

Я не знаю, как он работает именно в android, но в Linux у меня есть сообщение ядра об установке sd-карты, где указано имя тома. Вы можете попробовать dmesg и cat/sys/devices/mmc... (или что-то подобное)

Ответ 3

Попробуйте разобрать вывод команды blkid. Это работает для меня, но я не уверен, что это прошивка зависит от функции или нет. Я получил permission denied с этой командой на AVD.

Ответ 4

Я не знаю, поможет ли это вам: если вы используете DDMS, вы можете увидеть папки системы. В моем случае я нашел SD-карту в:/mnt/media_rw.

Вы можете получить дополнительную информацию здесь и здесь

Надеюсь, это поможет.