Android WifiInfo.getMacAddress на Toshiba Folio - PullRequest
1 голос
/ 02 января 2011

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

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

Полагаю, это может быть похоже на 010203040506, но я не настолько уверен в этом.

1 Ответ

2 голосов
/ 03 января 2011

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

Затем я проверил наличие ':'.Если бы она существовала, я бы разбил строку на массив, а затем проверил бы длину каждой «строки октетов» в массиве, а если длина = 1, то заполнение не использовалось, поэтому я бы добавил префикс «0».Наконец, я бы собрал строку, объединив каждый из элементов массива, используя «:» в качестве разделителя.

Если строка не содержит «:», то я бы подтвердил, что ее длина = 12, вв этот момент я бы перестроил строку, используя каждую пару символов, и разделил ее символом ':'.

Если строка не была разделена, а ее длина не равна 12, то было бы невозможно выполнить правильный анализ, и яЯ должен был предположить, что запрос строки MAC-адреса не удался, и я сообщил о неверном MAC-адресе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...