繁体   English   中英

棒棒糖WiFi连接不良并回退到移动网络,如何检测?

[英]Lollipop Bad WiFi connection and Fallback to Mobile Network, how to Detect?

棒棒糖具有一项新功能,这对我造成了巨大的问题。 当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-图标增加,一个换无连接/

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

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

您可以使用ConnectivityManager#requestNetwork()请求特定的连接类型(或特定的网络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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM