问题描述
开发一款在 Android 设备上与内置设备通信的应用时遇到了以下问题:更新 Pixel 2 和 Pixel 3a 等设备到 Android 10 后,当连接到设备自带 WiFi 且没有互联网访问的情况下,WiFi 总会在一段时间(30 秒至5分钟内)后自动切换到另一个支持互联网的配置文件。即使禁用“打开 Wi-Fi 自动”、“Wi-Fi控制”以及“ Wi-Fi扫描”,这一问题依然存在。
解决方案
方案1 – 通过 Issue Tracker 报告并等待更新
问题已经作为 Bug 被报告给了 Google,并且已确认将在未来的版本中修复。建议保持关注 Android 的后续版本更新,以获取解决此问题的新固件或系统更新。
版本差异:请确保在最新版本的 Android 系统和设备上测试您的应用。
方案2 – 额外设置尝试 (未被证实有效)
尽管没有直接验证成功实现,根据社区反馈提供一些额外的配置调整方法如下:
1. 修改网络评级提供商(如果之前没有进行过):在 Android 10 总的 WiFi 设置中查看并更改“网络评级提供者”设置为“无”,可能会改变无网络连接的 WiFi 的优先级,以防止设备自动切换到其他具备互联网的配置。
2. 预设的 Wi-Fi 网络列表可以进行管理与调整:确保该无互联网连接的 WiFi 在设备预设列表中的位置不低于需要保持常连的其他重要网络。尝试手动保存当前连接后删除此WiFi,重新连接时会以较高优先级选择。
方案3 – 自定义应用逻辑来维持连接
如果更新 Android 系统版本仍然未能解决问题,可以考虑在应用内部实施特定的机制来监视并保持与无互联网 WiFi 的连接:
1. 创建Service监听网络变化:使用 ConnectivityManager
和网络广播接收器 (BroadcastReceiver) 监听网络变化情况。
2. 当检测到设备尝试切换网络时(例如收到 ACTION_NETWORK_CHANGED 或类似事件),则手动恢复之前的 WiFi 连接。可通过 WiFiManager
查找已连接 Wi-Fi SSID,然后重新建立关联。
方案4 – 使用第三方管理工具
考虑部署商业或开源的无线网络管理工具来维持特定网路连接,这样即使 Android 系统有所缺陷也能通过外部服务保证 WiFi 配置。
– 例如,使用像 ConnectivityManager
或第三方 SDK 提供服务,它们可能提供了更为灵活的断电检测和恢复策略。
总结:最简单有效的做法是在 Android 版本更新中等待修复发布。暂时的解决方案需要在应用层面进行维护并确保代码更新以覆盖更多场景。
建议开发团队密切监视相关 Issue Tracker 反馈,并保持设备对后续版本更新的高度兼容性与适配度。通过社区贡献和技术支持共同应对这类系统级的变化和挑战。