2016-06-11 38 views
0

我想檢查互聯網連接。我試圖用這個代碼做到這一點,但它不起作用。我沒有任何消息(Aucune聯接互聯網)在android登錄中測試互聯網連接

private boolean isConnectingToInternet(Context applicationContext){ 
     ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo ni = cm.getActiveNetworkInfo(); 
     if (ni == null) { 
      // There are no active networks. 
      Toast.makeText(getApplicationContext(), "no internet", Toast.LENGTH_LONG).show(); 
      return false; 
     } else 
      return true; 

    } 

protected void onPostExecute(String s) { 
       super.onPostExecute(s); 
       loading.dismiss(); 
       if(isConnectingToInternet(getApplicationContext())) { 
       showEmployee(s); 
       }else{ 
        // show alert 
        Toast.makeText(MainActivity.this, "Aucune connexion internet", Toast.LENGTH_SHORT).show(); 
       } 
      } 

回答

1

你獲取來自互聯網的String s並且這是爲什麼你正在使用的AsyncTask?在這種情況下,您應該檢查isConnectingToInternet,然後運行AsyncTask,而不是在裏面。

在任何情況下,試試這個在您的isConnectingToInternet

private boolean isConnectingToInternet(Context applicationContext){ 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo ni = cm.getActiveNetworkInfo(); 
    return ni != null && ni.isConnectedOrConnecting(); 
} 
+0

我得到這個錯誤無法解析符號activeNetworkInfo所以我試着用return ni!= null && ni.isConnectedOrConnecting();但也沒有消息 –

+0

對不起,@LaraFab!我糾正了它。你能告訴我爲什麼你在'onPostExecute'內調用'isConnectingToInternet',以及傳入'onPostExecute'的參數'String s'是什麼? –

0

您是在正確的軌道,但缺少1個小部分,檢查isConnected!= null這樣一起:

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

這個功能適用於我。這只是與你的另一個條件不同而已。