2016-01-18 115 views
-1

我正在登錄農場字,但我有一個問題,我不明白爲什麼 這是我的代碼:檢查網絡連接和空的EditText

if (isNetworkOnline()) { 
       if (!(edtuserid.getText().toString().equals("") && !(edtpass.getText().toString().equals("")))){ 
        DoLogin doLogin = new DoLogin(); 
        doLogin.execute(""); 
        Log.e("Login", "logining"); 
       }else { 
        Log.e("Login","empty"); 
       } 
      }else { 
       Log.e("Login", "no network"); 
      } 

它總是顯示「logining」在logcat的..我試着給的setText = edtuserid 「」 和edtpass.getText => logcat的= 「logining」,和wifi它ALSE秀轉 「logining」

這是我檢查網絡代碼:

public boolean isNetworkOnline() { 
    boolean status=false; 
    try{ 
     ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo netInfo = cm.getNetworkInfo(0); 
     if (netInfo != null && netInfo.getState()==NetworkInfo.State.CONNECTED) { 
      status= true; 
     }else { 
      netInfo = cm.getNetworkInfo(1); 
      if(netInfo!=null && netInfo.getState()==NetworkInfo.State.CONNECTED) 
       status= true; 
     } 
    }catch(Exception e){ 
     e.printStackTrace(); 
     return false; 
    } 
    return status; 
} 
+0

你只是檢查是否*任何*的網絡連接,因此移動數據仍然是可用的wifi是否處於關閉狀態。你正在測試什麼設備? – 323go

+0

我在Genymotion中測試:(但是當我設置空的edittext時,它也運行@@ –

回答

1

檢查連接

public boolean isInternetOn() { 

    // get Connectivity Manager object to check connection 
    ConnectivityManager connec = 
      (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 


    // Check for network connections 
    if (connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED || 
      connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING || 
      connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING || 
      connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED) { 

        return true; 

    } else if (
      connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED || 
        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED ) { 


     return false; 
    } 
    return false; 
} 

在代碼中使用

if (isInternetOn()) { 
        if (edtuserid.getText().toString().length > 0 && edtpass.getText().toString().length > 0){ 
         DoLogin doLogin = new DoLogin(); 
         doLogin.execute(""); 
         Log.e("Login", "logining"); 
        }else { 
         Log.e("Login","empty"); 
         edtuserid.setError("Invalid UserId!"); 
edtpass.setError("Invalid Password!"); 
        } 
       }else { 
        Log.e("Login", "no network"); 
       }