Подтвердить что ты не робот

Как я могу получить серийный номер SD-карты в Android 7.0+?

В некоторых версиях Android и других вариантах Linux можно получить серийный номер смонтированной SD-карты, например. путем чтения содержимого /sys/class/mmc_host/mmc0/mmc0:0001/serial или /sys/block/mmcblk0/device/serial (конкретные номера могут отличаться). В моем тестировании это работало довольно надежно, если SD-карта вставлена ​​во встроенный слот для SD-карт (не установлен через USB-адаптер).

Но с Android 7.0 Nougat операционная система трекер ошибок, но, возможно, я не ищу права.

Чтобы убедиться, что вопрос ясен, я говорю о том, что может делать обычное (не системное) приложение, работающее на некорневом устройстве, с любыми разрешениями, которые приложение обычно может запрашивать и получать.

FYI, каталог /sbin, похоже, не читается, поэтому команды типа /sbin/udevadm не являются параметрами.

4b9b3361

Ответ 1

В Android N доступ к /sys nad/proc был значительно ограничен, это было сделано для обеспечения более сложных песочниц, где выполняются приложения. Это объясняется в https://issuetracker.google.com/issues/37091475 как преднамеренное. На самом деле он не сказал, что все данные в /sys недоступны, и Google открыт для доступа к другим файлам из этого местоположения:

Если в /sys есть определенные файлы, которые, как вы полагаете, должны быть доступны для приложений, но нет, пожалуйста, напишите новую ошибку, где запрос может быть оценен. Например, /sys/devices/system/cpu доступен для всех процессов, поэтому неточно сказать, что все /sys ограничены.

У меня плохое мнение, что Google делает изменения, похожие на Apple, где не разрешено получать аппаратные идентификаторы. Если это не разрешено, то вместо этого следует использовать идентификаторы учетных записей google. Но я знаю, что это не всегда возможно и потребует серьезных изменений в бизнес-логике (лицензирование и т.д.).

Надеемся, что ваш отчет будет рассмотрен положительно.

другое связанное SO Я нашел: Изменения файловой системы в Android Nougat

Ответ 2

Используйте StorageVolume.getUuid() в StorageVolume, который вы получаете из StorageManager.

Значение - идентификатор тома, назначенный во время форматирования карты, а его длина/формат зависит от типа файловой системы. Для FAT32 это XXXX-XXXX, для NTFS это длинная шестнадцатеричная строка, для внутренней массовой памяти она возвращает null.

Ответ 3

adb shell cat /sys/class/mmc_host/mmc1/mmc1:*/cid

Вы также можете попробовать

sudo hwinfo --disk

чтобы получить информацию о ваших дисках, включая карты SD.

Также попробуйте

sudo hdparm -I /dev/sdb | more

Ответ 4

Вы успешно решили эту проблему?