连接到离线 Wi-Fi 并继续使用移动数据(也适用于所有其他应用程序)

2023-11-23

我有一个应用程序需要通过 Wi-Fi 连接到硬件。为此,硬件提供了离线 Wi-Fi 热点。热点的 DHCP 不会为我们提供网关或 DNS,因此我们立即知道它仅供离线使用。

最终用户在工作时必须始终保持 Wi-Fi 连接,以便接收传感器数据并在数据出现问题时发出警报。但与此同时,我们不想强迫最终用户的移动设备离线。他应该能够将他的移动数据用于我们和他拥有的所有其他应用程序。

我虽然我可以通过调用来控制它android.net.ConnectivityManager.requestNetwork。但它似乎工作不可靠。会打电话requestNetwork in my app影响如果所有其他应用程序可以访问移动数据吗?

这是我们可以控制的吗?我在不同制造商和 Android 版本的多台设备上进行了测试,它们的行为都不同。

例如。 Pixel 3a 运行良好。一段时间后,我收到有关 Wi-Fi 离线的通知。如果我忽略它,它就会继续工作。如果我按“是”,我将处于离线状态并连接到 Wi-Fi。

华为P20 Lite似乎火了OnLost我的移动数据事件NetworkCallback每次我要求的时候。就像每次我重新连接时它都会尝试取消移动连接,因为我在 wifi 中。某些设备提供“智能开关”(三星)或“Wi-Fi+”(华为)模式,但默认情况下并未启用。要求用户打开它似乎很麻烦,因为他们可能不想在不同的场景中使用它。

Here are some examples for the different devices: enter image description here


使用时requestNetwork()要坚持使用离线 wifi 网络,您需要一个实例ConnectivityManager。您可以通过以下方式获取:

final ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

此方法返回操作系统的连接管理器。因此,其他应用程序也会受到您设置的“粘性”模式的影响ConnectivityManager in.

不幸的是,我认为应用程序不可能强制操作系统保持与离线 Wifi 网络的连接,同时继续使用移动数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

连接到离线 Wi-Fi 并继续使用移动数据(也适用于所有其他应用程序) 的相关文章

随机推荐