Я использую строку WifiInfo.getMacAddress
, как показано на моем мобильном устройстве или другом мобильном устройстве, которое я смог использовать, то есть в формате 01:02:03:04:05:06
Но один из пользователей моего приложения только что сообщил о сбое в Toshiba Folio100
, мой анализ MAC-адресов не удался. Поскольку у меня нет файлов журналов, а отчет анонимен, я не могу связаться с этим человеком, поэтому я спрашиваю, знаете ли вы, как он закодирован в таком устройстве.
Я предполагаю, что это может быть как 010203040506
, но я не уверен.
Хотя я не могу прокомментировать "Toshiba Folio", я настоятельно рекомендую вам пересмотреть, как вы анализируете строку MAC-адреса.
Я написал код много лет назад, чтобы получить MAC-адреса от сетевых адаптеров на ПК - так как он использовал драйверы для ПК, формат может варьироваться в зависимости от производителя. Документы для WifiInfo.getMACAddress() на самом деле не дают гарантии того, как возвращается эта строка, поэтому рассмотрим готовность ко всем возможностям.
Я видел следующие форматы...
01:02:03:04:05:06 // Delimited with ':' and padded to 2 chars
1:2:3:4:5:6 // Delimited but if < 16, there was no leading '0'
010203040506 // No delimiters but octets ALWAYS pre-padded with '0' when < 16
ПРИМЕЧАНИЕ. Также буквенные символы могут иметь верхний или нижний регистр (хотя и согласованный в каждом случае, т.е. весь верхний или все нижний регистр). Пример...
0A0B0C0D0E0F
0a0b0c0d0e0f
A:B:C:D:E:F
a:b:c:d:e:f
Чтобы справиться с вышеизложенным, я сначала принудительно привел строку toLower().
Затем я проверил наличие ":". Если бы он существовал, я бы разделил строку на массив, и тогда я бы проверил длину каждой "октетной строки" в массиве, и если length = 1, то дополнение не использовалось, поэтому я бы префикс "0". Наконец, я собрал строку, объединив каждый элемент массива, используя ':' в качестве разделителя.
Если строка не содержит ':', то я бы подтвердил, что ее длина = 12, в этот момент я бы перестроил строку, используя каждую пару символов, и разделил ее на ":".
Если строка не была разделена и ее длина равна 12, тогда было бы невозможно правильно разобрать, и я должен был предположить, что запрос строки MAC-адреса потерпел неудачу, и я сообщил о плохом MAC-адресе.