2014-02-24 161 views
0

我檢查我的程序的移動網絡連接,我跟着這個link討論連接。我的代碼如下。檢查移動網絡,並被迫移動網絡中的Android

 boolean internet_flag = true; 
     ConnectivityManager conMgr = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo mobile = conMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
     if (!mobile .isAvailable()) 
     { 
      internet_flag = false; 
     } 

     if(internet_flag == false) 
     { 
      Toast.makeText(this, "Internet connection is down, please check netwrok connection", Toast.LENGTH_LONG) 
      .show();    

     } 

我在手提電話關掉手機數據和我的WiFi連接到基於WiFi-SD卡讀取器設備(所以我相信,我沒有互聯網連接),但我仍然有internet_flag ==真。 我的問題是

(1)爲什麼我仍然有internet_flag ==即使我關閉了它真實的。

(2)我想了解Android的互聯網連接。根據這個discussion當Wifi開啓時,3G會自動關閉(它仍然是正確的?)。在討論中,爲了獲得3G連接,Wifi再次關閉。在我的情況下,我無法關閉Wifi,因爲我已將它連接到SD卡閱讀器,但我仍然想強制進行3G連接。我怎樣才能做到這一點?可能 感謝

+0

您是否嘗試過'mobile.isConnect ED()'。?? –

+0

對於所有情況它都會返回false。 – batuman

回答

1

試試這個梅索德(如上下文可以給應用程序上下文或活動之一):

public static boolean isNetworkAvailable(Context context) { 
      ConnectivityManager connectivityManager = (ConnectivityManager) context 
        .getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo activeNetworkInfo = connectivityManager 
        .getActiveNetworkInfo(); 
      return activeNetworkInfo != null 
        && activeNetworkInfo.isConnectedOrConnecting(); 
     } 

,使無線網絡就可以使用這個

public static void enableWifi(Context context) { 
    WifiManager wifi = (WifiManager) context 
      .getSystemService(Context.WIFI_SERVICE); 
    if (!wifi.isWifiEnabled()) { 
     wifi.setWifiEnabled(true); 
    } 
} 

您應該添加您的清單中有一些權限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" /> 
+0

它仍然是一樣的。如果我關閉了wifi和3G。是的,連接是錯誤的。但是,如果我的wifi連接到設備(該設備沒有互聯網連接),則返回結果仍然正確。 – batuman

+0

在第一個方法中嘗試此操作(將返回值更改爲此): return connectivityManager.getActiveNetworkInfo()。isConnected()&& connectivityManagerManager.getActiveNetworkInfo()。isAvailable()&& connectivityManager.getActiveNetworkInfo()。isConnectedOrConnecting(); //你現在正在認真地檢查一切... –

+0

如果我關掉了兩個,則返回false。如果我有無線網絡連接到設備(沒有內部連接),它會恢復正常。因此無法檢查設備是否可以訪問互聯網。 – batuman