東芝フォリオについて具体的にコメントすることはできませんが、MACアドレス文字列の解析方法を再検討することをお勧めします。
私は何年も前にPCのNICからMACアドレスを取得するためのコードを作成しました。カードのPCドライバーを使用していたため、形式はメーカーによって異なる可能性があります。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であることを確認します。この時点で、文字の各ペアを使用して文字列を再構築し、「:」で区切ります。
If the string wasn't delimited and its length wan't 12 then it would be impossible to parse correctly and I had to assume that requesting the MAC address string had failed and I reported a bad MAC address.