2016-05-15 141 views
1

我關注了this以檢查互聯網連接的可用性。我面對的問題是,即使當我的桌面(作爲WiFi熱點)沒有互聯網連接,仍然這個代碼返回正面。我想確保如果wifi信號缺失,結果必須是負值。 這可以實現嗎?Android:檢查互聯網連接

+0

如果你是桌面系統沒有連接作爲你的路由器/調制解調器,你可以通過調用你的網絡服務器或Google.com來檢查你的連接是否有效。 –

+1

你有沒有嘗試我的答案,併爲你工作? – Vucko

+0

嗨Vucko ...你的方法工作正常。 – Mandroid

回答

0

所以,你必須告訴你,互聯網連接是否可用與否的方法,但是你想想,這是不夠的,因爲它沒有描述連接的質量。

您可以嘗試輪詢某個網站以查看,如果您收到響應並根據該響應決定是否繼續進行某些網絡請求。但在我看來,這不值得。

相反,您可以發送您的請求並處理可​​能的網絡錯誤,因爲這是您必須做的事情(服務器可能已關閉)。那麼,爲什麼要做額外的測試?

2

這是我使用的檢查,如果有一個在我的應用程序互聯網連接的代碼,它的工作對我來說:

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

雖然您的設備連接到無線網絡,您可能無法獲得輸入數據。所以,你可以ping通Google.com或任何其他網站,看看有沒有迴應回來代碼200

public class internetchek extends AsyncTask<Void,Void,Void> { 

public boolean connection; 
Context ctx; 
public internetchek(Context context){ 
    this.ctx = context; 
} 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
} 

@Override 
protected Void doInBackground(Void... params) { 

    if(isNetworkAvailable(this.ctx)) 
    { 

    Log.d("NetworkAvailable","TRUE"); 
     if(connectGoogle()) 
     { 

      Log.d("GooglePing","TRUE"); 
      connection=true; 
     } 
     else 
     { 

      Log.d("GooglePing","FALSE"); 
      connection=false; 
     } 
    } 
    else { 

     connection=false; 
    } 


    return null; 
} 

@Override 
protected void onPostExecute(Void aVoid) { 
    super.onPostExecute(aVoid); 
} 

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

public static boolean connectGoogle() { 
    try { 
     HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection()); 
     urlc.setRequestProperty("User-Agent", "Test"); 
     urlc.setRequestProperty("Connection", "close"); 
     urlc.setConnectTimeout(10000); 
     urlc.connect(); 
     return (urlc.getResponseCode() == 200); 

    } catch (IOException e) { 

     Log.d("GooglePing","IOEXCEPTION"); 
     e.printStackTrace(); 
     return false; 
    } 
}}