2013-03-07 56 views
0

在我的應用程序中,首次啓動應用程序時,在我的啓動畫面期間,我正在檢查網絡連接。如果網絡連接存在,我將通過調用以下方法進入互聯網連接。但是,我手動禁用了我的互聯網連接(我連接到路由器,但無法在瀏覽器中輸入網頁),但下面的方法總是返回我-200 - 這對於互聯網連接是真實的。HttpURLConnection urlc

public boolean hasActiveInternetConnection() 
{ 
    try 
    { 
     HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection()); 
     urlc.setRequestProperty("User-Agent", "Test"); 
     urlc.setRequestProperty("Connection", "close"); 
     urlc.setConnectTimeout(3000); 
     urlc.setReadTimeout(4000); 
     urlc.connect(); 
     Log.i("Splash", Integer.toString(urlc.getResponseCode())); 
     return (urlc.getResponseCode() == 200); 
    } catch (IOException e) 
    { 
     return (false); 
    } 
} 
+0

可能是響應您的請求的路由器。無論如何,你爲什麼不去看看發送的內容是什麼? – PCoder 2013-03-07 10:23:40

+0

PCoder,這裏是我禁用互聯網連接時pinging google.com的響應。 C:\ Windows \ System32下>平google.com --- 執行ping google.com [198.18.1.9]與32個字節的數據:---從192.168.1.254 答覆:目標主機不可訪問.-- - Ping統計信息爲198.18.1.9:--- 信息包:發送= 4,收到= 4,丟失= 0(0%丟失), – tony9099 2013-03-07 10:26:13

回答

0

您可以使用此功能檢查Internet連接:

public boolean isInternetConnection() { 
    ConnectivityManager cn = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
    NetworkInfo nf = cn.getActiveNetworkInfo(); 
    if (nf != null && nf.isConnected() == true) 
     return true; 
    else 
     return false; 
} 

您需要添加清單權限此:

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

Vishal Vijay,這檢查網絡連接,而不是互聯網。這將返回true,如果你連接到路由器,wifi,即使沒有互聯網連接。 – tony9099 2013-03-07 10:57:23

+0

你試過了嗎? – 2013-03-07 10:59:34

+0

超過320萬次。大概3.21或3.22。不確定。 – tony9099 2013-03-07 11:30:54

1

嘗試加入的openConnection前這段代碼()

if (android.os.Build.VERSION.SDK_INT > 9) { 
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
        StrictMode.setThreadPolicy(policy); 
       }