我开始编写一个android应用程序来执行web服务器的后台监控。在启用wifi的情况下,一个问题是默认情况下流量是通过wifi定向的,我希望始终使用3g作为http请求来检查外部可用性。我知道我可以使用此代码以编程方式禁用WiFi:
WifiManager wifiManager = (WifiManager)getBaseContext().getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(false);
但由于它会在后台运行,所以有点笨拙,在检查过程中会中断wifi上的其他操作。看看Socket Documentation我看不出有什么明显的方法可以实现这一点。我想知道是否有任何支持的方法来实现这个在非根电话?我可以完全控制服务器,所以协议不一定非得是http。
最佳答案
对于android来说,这似乎是一个非常危险的特性。
使用按流量计费的3g计划的用户呢?如果一个应用程序强迫他们使用3g连接,然后窃听或其他什么东西,在他们甚至不知道的情况下(以为他们在wifi上)毁掉了他们的全部数据配额,他们会有什么感觉?
而且,一次不能有多个活动网络。
可能的解决办法-
您可以做的是在应用程序处于活动状态时强制禁用WiFi网络,然后在以后启用它。
另外,尝试搜索一个名为requestRouteToHost
的方法。它允许您指定要查找路由的网络类型和主机。