4

我开始编写一个 Android 应用程序来执行我的 Web 服务器的后台监控。启用 WiFi 后,一个问题是默认情况下流量是通过它定向的,我希望始终使用 3G 进行 HTTP 请求以检查外部可用性。我知道我可以使用此代码以编程方式禁用 WiFi:

WifiManager wifiManager = (WifiManager)getBaseContext().getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(false);

但由于它将在后台运行,因此有点笨拙,并且会在检查过程中中断 WiFi 上的其他操作。查看套接字文档,我看不到任何明显的方法来实现这一点。我想知道是否有任何受支持的方法可以在非 root 手机上实现这一点?我可以完全控制服务器,因此协议不必特别是 HTTP。

4

2 回答 2

1

我不相信您可以在 android 中执行此操作,因为在任何给定时间只有一个网络连接处于活动状态。这里也发布了一个类似的问题:

通过 3G 网络发送 HTTP 请求而不使用 WiFi?

于 2013-01-09T06:20:41.677 回答
1

对于 Android 来说,这似乎是一个非常危险的功能。

  • 使用按流量计费的 3G 计划的用户呢?如果一个应用程序强迫他们使用 3G 连接,然后在他们不知情的情况下(认为他们在 WiFi 上),他们会感到如何?

  • 此外,一次不能有多个活动网络。

可能的解决方案-

  • 您可以做的是在您的应用程序处于活动状态时强制禁用 wifi 网络,然后再启用它。

  • 另外,尝试搜索一个名为requestRouteToHost. 它允许您指定网络类型和要查找路由的主机。

于 2013-01-09T06:28:46.753 回答