2010-08-31 79 views
2

首先,Android手機連接3G網絡和WiFi。 這時候我想通過3G網絡發送http請求而不使用wifi。 我該怎麼辦?通過3G網絡發送HTTP請求而不使用WiFi?

+0

請不要轉發您沒有得到答案的問題。它只有幾個小時。可能需要幾天的時間才能得到很好的答案,重複的問題只會污染數據庫。 – 2010-08-31 04:31:21

回答

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網絡可用。