各種網絡連接的判斷方式


有時候程序中需要判斷網絡的連接狀態,這種方式只能夠判斷是否是3G網絡的連接,不能夠使用此方法去判斷wifi的使用情況
注意在使用此段代碼的時候需要在AndroidManifest.xml中加入權限<uses-permission android:name="android.permission.READ_PHONE_STATE" />

		 final TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
		
		 mTelephonyMgr.listen(new PhoneStateListener(){

			@Override
			public void onDataConnectionStateChanged(int state) {
				// TODO Auto-generated method stub
				
				switch (state) {
				case TelephonyManager.DATA_DISCONNECTED:
					Toast.makeText(TestMyListView.this, "網絡斷開",
							Toast.LENGTH_SHORT).show();
					break;

				case TelephonyManager.DATA_CONNECTING:
					Toast.makeText(TestMyListView.this, "網絡正在連接",
							Toast.LENGTH_SHORT).show();
					break;
					
				case TelephonyManager.DATA_CONNECTED:
					Toast.makeText(TestMyListView.this, "網絡已連接",
							Toast.LENGTH_SHORT).show();
					break;
				}
				super.onDataConnectionStateChanged(state);
			}
			 
		 }, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE)


另外還有一些方法去判斷網絡的使用情況,以下是收集的幾種情況

	//判斷是否wifi連擊
	public static boolean isWiFiActive(Context inContext) {
        WifiManager mWifiManager = (WifiManager) inContext
        .getSystemService(Context.WIFI_SERVICE);
        WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
        int ipAddress = wifiInfo == null ? 0 : wifiInfo.getIpAddress();
        if (mWifiManager.isWifiEnabled() && ipAddress != 0) {
        System.out.println("**** WIFI is on");
            return true;
        } else {
            System.out.println("**** WIFI is off");
            return false;   
        }
	}
	
	//判斷是否有網絡
	public static boolean isNetworkAvailable( Context context) {
        ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                if (connectivity == null) {
                      System.out.println("**** newwork is off");
                        return false;
                } else {
                        NetworkInfo info = connectivity.getActiveNetworkInfo();
                        if(info == null){
                              System.out.println("**** newwork is off");
                                return false;
                        }else{
                                if(info.isAvailable()){
                                      System.out.println("**** newwork is on");
                                        return true;
                                }
                              
                        }
                }
                  System.out.println("**** newwork is off");
        return false;
    }
	// 檢查網絡連接,如果無網絡可用,就不需要進行連網操作等  (是否有可用網絡)
	public static boolean isNetAvailable(Activity activity) {
		ConnectivityManager mConnectivity = (ConnectivityManager) activity
				.getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo info = mConnectivity.getActiveNetworkInfo();
		
		if (info != null && info.isAvailable() && info.isConnected()) {
			return true;
		} else {
			return false;
		}
	}

發佈了32 篇原創文章 · 獲贊 3 · 訪問量 55萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章