2012-06-15 118 views
4

我試圖檢查網絡可用與否。
但在我的模擬器,所以它總是顯示connected(斷開網絡後也)在android中的網絡連接檢查

有沒有在我的code.I任何錯誤,正與無線網絡連接

代碼:

public class AndroidConnectivityActivity extends Activity 
{ 
Button checkBtn; 

/** Called when the activity is first created. */ 
@Override 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
     checkBtn = (Button) findViewById(R.id.button1); 

     checkBtn.setOnClickListener(new View.OnClickListener() 
     { 
     public void onClick(View v) 
     { 
     if(isInternetOn()) 
     { 
     Toast.makeText(getBaseContext(), "Connected", 
      Toast.LENGTH_SHORT).show(); 
     } 
     else 
     { 
     Toast.makeText(getBaseContext(), "Not connected", 
      Toast.LENGTH_SHORT).show(); 
     } 
     }}); 
    } 

    public final boolean isInternetOn() 
    { 
     ConnectivityManager connec = (ConnectivityManager) getSystemService 
     (Context.CONNECTIVITY_SERVICE); 

     if ((connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED) 
     ||(connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTING) 
     ||(connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING) 
     ||(connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED)) 
     { 
     return true; 
     } 

     else if ((connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED) 
     || (connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED)) 
     { 
     return false; 
     } 

     return false; 
    } 
    } 
+0

您的代碼沒有問題。但是,你是如何切斷互聯網的? –

+0

嘗試在飛行模式下測試您的代碼。 –

+0

只是關閉wifi或lan連接 –

回答

2

使用下面的代碼

public static boolean isInternetAvailable(Context context) 
    { 
     boolean isInternetAvailable = false; 

     try 
     { 
      ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); 

      if(networkInfo != null && (networkInfo.isConnected())) 
      { 
       isInternetAvailable = true; 
      }  
     } 
     catch(Exception exception) 
     { 
      // Do Nothing 
     } 

     return isInternetAvailable; 
    } 

,並嘗試在真實設備

使用代碼在活動onCreate方法類似

if(isInternetAvailable(this)) 
{ 
Toast toast = Toast.makeText(this, "internet available", Toast.LENGTH_SHORT); 
     toast.show(); 
} 
else 
{ 
Toast toast = Toast.makeText(this, "internet not available", Toast.LENGTH_SHORT); 
     toast.show(); 
} 

所需清單許可

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

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

你可以用我們的代碼顯示吐司消息..要知道究竟是怎麼回事 –

+0

看到編輯代碼..並且不要忘記在清單文件中設置Internet權限 –

+0

是您的代碼工作vivek(你有沒有測試過) –

2

使用mehod正圓下面

public static boolean isInternetAvailable(Context context) { 
      ConnectivityManager cm = 
       (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
      if (netInfo != null && netInfo.isConnectedOrConnecting()) { 
       return true; 
      } 
      return false; 
     } 

,並在清單中設置權限爲

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

使用本:

private boolean getOnlineState() { 
     ConnectivityManager myConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo myNetworkInfo = myConnectivityManager 
       .getActiveNetworkInfo(); 
     if (myNetworkInfo != null 
       && myNetworkInfo.isConnectedOrConnecting()) 
      return true; 
     return false; 

    } 

和BTW :

if ((connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED) 
    ||(connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTING) 
    ||(connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING) 
    ||(connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED)) 
    { 
    return true; 
    } 

    else if ((connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED) 
    || (connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED)) 
    { 
    return false; 
    } 

    return false; 
} 

是一樣的,如:

if ((connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED) 
    ||(connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTING) 
    ||(connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING) 
    ||(connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED)) 
     return true; 
     return false; 

你要跟應該嘗試一個真正的手機上,例如hardwareoperations而不是模擬器。