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

问题描述 投票:2回答:1

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

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

尽管我可以通过调用android.net.ConnectivityManager.requestNetwork来控制它。但是它似乎不能可靠地工作。如果所有其他应用可以访问移动数据,在我的应用中调用requestNetwork是否会产生影响?

这甚至是我们可以控制的东西吗?我在具有不同制造商和android版本的多种设备上对此进行了测试,它们的行为均不同。

例如像素3a正常工作。一段时间后,我收到有关离线Wi-Fi的通知。如果我忽略它,它将继续工作。如果我按“是”,则表明我已离线并已连接到Wi-Fi。

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

以下是不同设备的一些示例:enter image description here

android android-wifi
1个回答
0
投票

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

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

此方法返回操作系统的连接管理器。因此,您将ConnectivityManager置于“粘滞”模式也将影响其他应用。

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

© www.soinside.com 2019 - 2024. All rights reserved.