- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用 WifiInfo.getMacAddress
字符串,如在我的 nexus one 或我能够使用的任何其他移动设备上看到的那样,即 01:02 的格式: 03:04:05:06
但是我的应用程序的一位用户刚刚报告在 Toshiba Folio100
上崩溃,我的 MAC 地址解析失败。由于我没有任何日志文件并且报告是匿名的,我无法联系到那个人,所以我在这里问你是否知道它是如何在这种设备中编码的。
我想它可能像 010203040506
但我不太自信。
最佳答案
虽然我不能具体评论 Toshiba Folio,但我会敦促您重新考虑如何解析 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,此时我会使用每对字符重建字符串并用“:”分隔。
如果字符串没有定界并且它的长度不是 12 那么就不可能正确解析,我不得不假设请求 MAC 地址字符串失败并且我报告了一个错误的 MAC 地址。
关于东芝 Folio 上的 Android WifiInfo.getMacAddress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4580302/
API 31 已弃用 getIpAddress() 需要帮助从回调实现中获取地址 val networkCallback = object : ConnectivityManager.NetworkC
在关注此 guide 之后,我已经为此工作了几天在线的。我正在使用目标 API 30(在使用 Android 11 的设备上构建)。尝试使用 networkCapabilities 获取 Wifi S
我正在制作一个使用互联网的应用程序。 我正在使用 WiFiInfo 类了解可用网络的状态,并使用 WifiManager 启用和管理可用的 Wi-fi 连接。 但结果是Unknown ssid。我还修
我创建了一个需要处理 WiFi 的应用程序。我有这段代码 this.wifiManager = (WifiManager) this.context.getSystemService(Context.
我需要找到我所连接的 AP 的 MacAddress。做了一些研究,最后为了做到这一点,我使用了以下线程中的一个 fragment :Wifi getSSID() returns null 代码如下所
我一直在使用 WifiInfo.getMacAddress 字符串,如在我的 nexus one 或我能够使用的任何其他移动设备上看到的那样,即 01:02 的格式: 03:04:05:06 但是我的
我试图隐藏 wifimanager 和 wifiinfo (android),但我不明白为什么我有段错误,我看到 wifimanager 运行良好,但是当我尝试调用 wifiinfo 的某些方法时,我
当我的 BroadcastReceiver 直接接收到 WIFI_STATE_ENABLED 时,WifiInfo 的 SSID 值为空。但是,当我添加一个 Thread.Sleep() 800 毫秒
我有一个订阅 list 中的 android.net.wifi.STATE_CHANGE 事件的 BroadcastReceiver。 在我的广播接收器中,我想提取我连接的网络的 SSID,然后用它做
如果我使用 API 27 编译但目标 API 25,我将正确获取这些值。如果我将 targetSdkVersion 设置为 27,则不会正确检索这些值。 针对 SDK 25 或更少,值是正确的,但针对
当我想通过 WifiManager.connectionInfo 获取有关当前 wifi 连接的信息时,我得到 这个: 'getter for connectionInfo: WifiInfo!' i
根据 getSSID 方法的文档: Returns the service set identifier (SSID) of the current 802.11 network. If the SS
我从 Android 6.0 开始了解到: Android removes programmatic access to the device’s local hardware identifier
我是一名优秀的程序员,十分优秀!