首先,Android手机连接3G网络和wifi。 这时我想通过3G网络发送http请求而不使用wifi。 我该怎么办?
答案 0 :(得分:5)
我认为你不能这样做,因为在Android中只有一个网络在任何时间都处于活动状态。因此,首先你需要检查哪个网络是活动的,然后是否是Wi-Fi网络,然后断开它,然后Android将回退到另一个将是3G(如果没有其他Wi-Fi网络可用) ,然后你可以发送你的请求,这将通过3G network.outline可能看起来像这样:
ConnectivityManager cm = (ConnectivityManager)Context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if(ni == null)
//no connectivity, abort
if(ni.getType() == ConnectivityManager.TYPE_WIFI || ni.getType() == ConnectivityManager.TYPE_WIMAX) {
WifiManager wm = (WifiManager)Context.getSystemService(Context.WIFI_SERVICE);
if( wm != null)
wm.disconnect();
//this will force android to fallback to other available n/w which is 3G
}
while(true) {
NetworkInfo ni = cm.getActiveNetworkInfo();
if( ni != null && ni.getType() == ConnectivityManager.TYPE_MOBILE && ni.isConnected()) {
//send your http request
break;
}
//sleep for some time, so that android can connect you to other n/w
}
您可能需要遍历所有活动的n / w并断开它们直到找到3G网络。我假设只有一个Wi-Fi网络和一个3G网络可用。