为什么我的Pixel 2上的Wifi Mac地址发生变化(Android Pie)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (437)

我正在开发一个Wifi Direct应用程序。几周以来,我在我的应用程序中硬编码了我的测试设备(Pixel 2,Android Pie)的Wifi MAC地址,以便于连接。

昨晚,我开始在一段稳定的代码中得到连接错误,这段代码已经有一段时间未被触及了。我注意到我Pixel 2上的'About Phone'中的MAC地址已经改变 - 它曾经是“42:XX:XX:XX:XX:XX”,现在是“40:XX:XX:XX:XX” :XX”。

更令人担忧的是,Pixel 2正在通过Wifi Direct向旧的 MAC(以“42”开头)广告。在附近的设备发现Pixel 2之后,尝试连接到旧地址(“42”)或新地址(“40”)会立即失败,WifiP2pManager.ActionListener会传递给WifiP2pManager.connect,失败原因== WifiP2pManager.ERROR。

所以我的一般问题是......

1.为什么我的像素2上的WiFi MAC地址似乎随机变化?。请注意,这是设置中显示的Wifi MAC,而不是来自WifiInfo.getMacAddress()的虚拟值

2.为Wifi Direct同行做广告时,为什么我的手机广播的MAC地址与设置中显示的MAC地址不同?这是一个应该报告的操作系统级错误吗?如何将手机恢复到一致状态(希望没有重新映像)?

3.如何在Wifi Direct发现期间唯一识别像Pixel 2这样的广告Wifi Direct手机?WifiP2pDevice.deviceName可以由用户更改。WifiP2pDevice.deviceAddress显然不是静态的,可以由系统更改。我是否被迫尝试连接并执行某种握手来识别设备,或者是否可以通过Wifi Direct广告单独识别设备(并且静态地在未来)?

感谢您的任何见解。

提问于
用户回答回答于

我最终不得不在手机的Wifi Direct设置中手动忘记以前的配对。这似乎重置了一些事情。然而,Wifi Direct开发者的以下后勤噩梦仍然存在:

  1. 你配对两个设备。设备会记住彼此的MAC地址,以便将来自动连接。
  2. 系统会更改其中一台设备上的MAC地址,而不会发出警告/广播/开发人员通知
  3. 您的设备无法在不忘记旧连接组的情况下进行配对。此外,在清除旧连接组之前,通告的MAC地址将不正确。

我想你可以通过编程方式忘记旧组,但你可能不得不使用反射...

扫码关注云+社区

领取腾讯云代金券