gpt4 book ai didi

java - Lollipop Bad WiFi 连接和回退到移动网络,如何检测?

转载 作者:行者123 更新时间:2023-11-30 02:30:27 24 4
gpt4 key购买 nike

Lollipop 有一个新功能,这对我来说是个大问题。当 WiFi 网络“连接”但没有互联网时,系统将透明地回退到移动数据。 http://www.androidpolice.com/2014/10/18/lollipop-feature-spotlight-android-now-defaults-to-mobile-data-when-wi-fi-has-no-internet-access-signal-icon-adds-a-for-no-connection/

由于我为我的公司制作的应用程序之一是 WiFi 测试应用程序,类似于 Fing 等,这会导致 Lollipop 出现问题。我需要在 WiFi 信号不好时发送数据包,以便定位和修复问题,例如 Traceroute、Ping 等。虽然外部 IP 可能无法工作,但在这种情况下,内部 IP 地址应该仍然可以访问。然而,随着连接自动回落到移动网络,这不再可能。

我还没有找到检测这个问题的任何解决方案。 NetworkInfo.getState()NetworkInfo.getDetailedState() 都报告“DISCONNECTED”,即使 WiFi 已连接并且外部连接有问题也是如此。有没有人有什么建议?到目前为止的所有研究都让我相信我不能在 Android 中通过 WiFi 连接强制数据包,而且我还没有弄清楚我是否可以检测到这种状态。除了检测移动数据是否打开并要求用户将其关闭外,我还有什么选择?

最佳答案

您可以使用 ConnectivityManager#requestNetwork() 请求特定的连接类型(或特定的网络) .

然后您可以使用 NetworkRequest.Builder像这样请求 WiFi 网络:

ConnectivityManager cm = 
(ConnectivityManager) Context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkRequest request = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.build();

cm.requestNetwork(request,
new ConnectivityManager.NetworkCallback() {
void onAvailable(Network network) {
// Do something once the network is available
}
});

构建器还允许您指定附加约束(称为“功能”),因此您可以选择指定更多要求,例如特定的 SSID。

关于java - Lollipop Bad WiFi 连接和回退到移动网络,如何检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27405645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com