2014-01-11 51 views
1

我有需要上網,上網的時候是優秀它完美的作品時,有沒有互聯網它的工作原理也很好,因爲我ADDE這個代碼請檢查是否存在互聯網或不是一個應用程序:互聯網連接錯誤阻止應用程序

private boolean isNetworkAvailable() { 
     ConnectivityManager connectivityManager 
       = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
     return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
    } 

如果它返回false我向用戶敬酒說沒有互聯網;

但是當互聯網不好時,應用程序會得到一個錯誤,或者它只是阻止並獲得黑屏30秒,然後顯示錯誤... 那麼我該怎麼做才能解決這個問題我怎麼才能看到互聯網是窮人和避免這種情況...

回答

0

可以使timeouts小於30000毫秒提前放棄。但是確實沒有辦法讓連接不良的連接正常工作。

1

使用這一個:

public boolean isConnectingToInternet() { 
    ConnectivityManager connectivity = (ConnectivityManager)this 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 
    if (connectivity != null) { 

     NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
     if (info != null) 
      for (int i = 0; i < info.length; i++) 
       if (info[i].getState() == NetworkInfo.State.CONNECTED) { 

        return true; 
       } 

    } 

    return false; 
} 

現在檢查你的活動。

if(isConnectingToInternet()){ 

    // do your stuff using internet 

} else{ 

    // display Toast here 

} 
+0

thnaks,但我可以知道爲什麼這段代碼比我的更好嗎?它做什麼更多? –

+0

在你的代碼中,你沒有指定如果網絡可用,則它返回true,否則它是false。因此,無論何時登記活動,您都可以得到您想要的。 – Piyush

+0

謝謝,但我不明白你的意思是不好意思;因爲我的方法在沒有連接的情況下也讓我錯誤......如果你解釋你的意思,我將不勝感激。 –

0

要執行基於網絡的操作,AsyncTask應該是選擇。

相關問題