我正在调查我开发的一个应用程序。问题是应用程序需要连接到移动数据网络,因此当 Wifi 打开时,它将无法正确路由,因为服务器在运营商网络上而不是公共网络上。是否可以使单个应用程序针对移动数据,而其他应用程序则退回到 Wifi,还是这是一些非标准的东西?
您不能以应用程序为基础明确强制通信渠道(您可以通过请求使用首选模式来 ConnectivityManager.setNetworkPreference(...)
,但那不是“强制”的)。
虽然这可能是可怕的用户体验,但是您可以通知用户,您的应用程序禁止使用WiFi,然后如果他们想要继续,就禁用其WiFi。为此,您需要具有ACCESS_WIFI_STATE
和CHANGE_WIFI_STATE
权限。代码将类似于以下内容:
manager = (WifiManager)this.getSystemService(Context.WIFI_SERVICE);
if(manager.isWifiEnabled()) {
manager.setWifiEnabled(false);
}
// and to be sure:
ConnectivityManager.setNetworkPreference(ConnectivityManager.TYPE_MOBILE);
setNetworkPreference()
现在已被弃用,叹气。 - SMBiggs