Найти ярлык громкости SD-карты на Android
Можно ли узнать объемную метку SD-карты, вставленной в устройство Android?
Я понимаю, что в Android предусмотрено только одно "внешнее хранилище" (как Environment.getExternalStorageDirectory()
), но есть довольно много устройств в дикой природе, которые имеют внутреннюю флэш-память как "внешнее хранилище" и SD-карту, установленную под ту или иную более дикую комбинацию (см. этот другой вопрос). Можно перечислить эти дополнительные устройства, прочитав /proc/mounts
, но нам нужно что-то, чтобы идентифицировать их для пользователя. Есть ли шанс попасть на их объемные ярлыки?
Я проверил, что драйвер Linux vfat полностью игнорирует метку тома и что blkid
из util-linux читает сам vfat. Я также проверил, что, по крайней мере на моем устройстве, блочное устройство SD-карты имеет режим 660
и владелец root.root
так что я не могу этого сделать. Таким образом, в основном все сводится к тому, есть ли какая-либо утилита, которая могла бы прочитать его.
4 ответа
Я нашел решение.
Самое простое решение - это создать busybox и использовать его следующим образом: busybox blkid
Сложное решение - найти blkid для Android и найти то, что вам нужно, в его исходном коде (функция blkid_dev_devname).
Попробуйте разобрать вывод blkid
команда. У меня это работает, но я не уверен, зависит ли это от прошивки или нет. я получил permission denied
с этой командой на AVD.
Я не знаю, как это работает точно в Android, но в Linux у меня есть сообщение ядра о монтировании SD-карты, где указано имя тома. Вы можете попробовать dmesg и cat /sys/devices/mmc... (или что-то подобное)