2012-02-01 48 views
0

我跟着这个 http://www.helloandroid.com/tutorials/it-internet-connection-checker-snippet检查我的Android设备上是否有互联网连接。Android - 检查互联网连接(使用开放的Wifi点,需要登录)

的代码块看起来像这样

URL url = new URL("http://www.google.com"); 
HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
urlc.setConnectTimeout(1000 * 5); // Timeout is in seconds 
urlc.connect(); 
if (urlc.getResponseCode() == 200) { 
    // http response is OK 
    Log.d("db", "Connection to " + url.toString() + " successful!"); 
    return true; 
} 

然而,我的设备连接到打开需要的网页访问互联网之前登录的WiFi点。此代码似乎即使没有登录也会返回true。

想知道我能做什么吗?

+0

你想检查无线网络或互联网连接可用 – Newts 2012-02-01 10:16:27

+0

什么是您提交的网址形式? – Zakaria 2012-02-01 10:28:46

+0

其实我正在关注[link](http://www.helloandroid.com/tutorials/it-internet-connection-checker-snippet)我想做一些类似于“ping”的事情来确认实际上有一个互联网连接而不仅仅是一个网络(wifi/3G)连接。 Wifi和3G连接不足以确定我已连接到互联网。 – humansg 2012-02-01 11:57:23

回答

0

我认为你必须使用这种方法 来检查我可用的互联网连接。

public boolean isOnline() 
     { 

      ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
      NetworkInfo ni = cm.getActiveNetworkInfo(); 
      boolean result = false; 
      if(ni != null) 
      { 
       if( ni.getState() == NetworkInfo.State.CONNECTED) 
       { 
        result = true; 
       } 
      } 

      return result; 

      } 
+0

我认为这行代码只会检查您是否连接到网络?即:Wifi/3G。它不检查互联网连接是否还活着? – humansg 2012-02-01 11:55:05

+0

是的,你是对的。 – Newts 2012-02-01 11:56:19

+0

我需要检查互联网是否活着.. – humansg 2012-02-02 16:22:32

0
private boolean checkInternetConnection() { 
    ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    if (conMgr.getActiveNetworkInfo() != null 
      && conMgr.getActiveNetworkInfo().isAvailable() 
      && conMgr.getActiveNetworkInfo().isConnected()) { 
     return true; 
    } else { 
     Toast toast = Toast 
       .makeText(
         getApplicationContext(), 
         "No Internet Connection Found !!! Please Connect To Internet First", 
         Toast.LENGTH_LONG); 
     toast.setGravity(Gravity.CENTER, 0, 0); 
     toast.show(); 
     new Thread(new Runnable() { 
      public void run() { 
       try { 
        Thread.sleep(5000); 
        finish(); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 
     }).start(); 
     return false; 
    } 
} 
1

如果你有你自己的域名,创建一个网页,只包含一个您所选择的关键字。 例如:“成功”

现在连接到该页面而不是谷歌,并检查它是否返回“成功”。

URL url = new URL("http://www.yourdomain.com/yourpage.html"); 
HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
urlc.setConnectTimeout(1000 * 5); // Timeout is in seconds 
urlc.connect(); 
if (urlc.getResponseCode() == 200) { 
    // http response is OK 

    InputStream in = urlc.getInputStream(); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
    String line = reader.readLine(); 
    in.close(); 
    if (line == "success"){ 
     Log.d("db", "Connection to " + url.toString() + " successful!"); 
     return true; 
    } else { 
     return false; 
    } 
} 
+0

我没有自己的网域。我正在使用这个代码,因为我认为它就像一个“平”,这将确定我的连接到该网站是可用的... ... – humansg 2012-02-01 11:59:48