Android WifiInfo.getMacAddress на Toshiba Folio

1

Я использую строку WifiInfo.getMacAddress, как показано на моем мобильном устройстве или другом мобильном устройстве, которое я смог использовать, то есть в формате 01:02:03:04:05:06

Но один из пользователей моего приложения только что сообщил о сбое в Toshiba Folio100, мой анализ MAC-адресов не удался. Поскольку у меня нет файлов журналов, а отчет анонимен, я не могу связаться с этим человеком, поэтому я спрашиваю, знаете ли вы, как он закодирован в таком устройстве.

Я предполагаю, что это может быть как 010203040506, но я не уверен.

Теги:
network-programming
android-networking

1 ответ

2
Лучший ответ

Хотя я не могу прокомментировать "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-адресе.

  • 0
    Я согласен с вами MisterSquonk. Я попытаюсь проанализировать ваши дела с помощью моего неправильного алгоритма и посмотреть, похоже ли исключение на то, которое получил пользователь. И я только что прочитал, что этот Toshiba Folio 100 почти снят с производства из-за слишком большого количества ошибок, поэтому я думаю, что сетевая часть не является стандартной, и поэтому это единственный случай, который видно в моем приложении, которое было протестировано на многих различных устройствах. , Тем временем я надеюсь, что смогу связаться хотя бы с одним пользователем Toshiba Folio100, чтобы проверить исправление.
  • 1
    Это сработало, спасибо!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню