2015-01-16 26 views
7

Tôi đang viết một chương trình mà tôi cần kiểm tra ba trạng thái: 1. Nếu tôi không có WiFi, 2. nếu tôi có WiFi nhưng không có kết nối internet (như nếu tôi bật bộ định tuyến nhưng rút cáp Ethernet) và 3. nếu tôi có kết nối Internet và Wi-Fi. Sau đó tôi sẽ thay đổi màu sắc của một biểu tượng trong ứng dụng của tôi để đại diện cho một trong các trạng thái này (đỏ, vàng hoặc xanh lục). Hiện tại tình trạng 2 không hoạt động, bất cứ lúc nào tôi rút cáp trên bộ định tuyến của mình để thử nghiệm, màu biểu tượng thay đổi từ xanh sang đỏ.Android Check nếu có WiFi nhưng không có internet

public static void doPing(Context context) { 

     String googleUrl = "https://www.google.com"; 
     ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 

     try { 
      HttpParams httpParameters = new BasicHttpParams(); 
      HttpConnectionParams.setConnectionTimeout(httpParameters, TIMEOUT_CONNECTION); 

      HttpConnectionParams.setSoTimeout(httpParameters, TIMEOUT_SOCKET); 

      HttpClient client = new DefaultHttpClient(httpParameters); 
      if (L) Log.i(TAG, "Calling: " + url); 
      HttpGet getGoogle = getHttpGet(googleUrl); 
      HttpResponse responseGoogle = client.execute(getGoogle); 

      if (responseGoogle != null){ 
       connectionIconView.setIcon(R.drawable.green_wifi); 
      } 
      else if (cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI) != null){ 
       connectionIconView.setIcon(R.drawable.yellow_wifi); 
      } 
      else { 
       connectionIconView.setIcon(R.drawable.red_wifi); 
      } 

     } catch(Exception e) { 
      if (L) Log.e(TAG, "Error during HTTP call"); 
      e.printStackTrace(); 
     } 

Trả lời

14

Kiểm tra xem wifi có sẵn như

chức năng này 1

private boolean isWifiAvailable() { 
    ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

    return wifi.isConnected(); 
} 

Sau đó, kiểm tra như thế này nếu Internet có sẵn

chức năng 2

public static boolean isInternetAccessible(Context context) { 
if (isWifiAvailable()) { 
    try { 
     HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection()); 
     urlc.setRequestProperty("User-Agent", "Test"); 
     urlc.setRequestProperty("Connection", "close"); 
     urlc.setConnectTimeout(1500); 
     urlc.connect(); 
     return (urlc.getResponseCode() == 200); 
    } catch (IOException e) { 
     Log.e(LOG_TAG, "Couldn't check internet connection", e); 
    } 
} else { 
    Log.d(LOG_TAG, "Internet not available!"); 
} 
return false; 
} 

Điều kiện

  1. Nếu function 1 false trả -> thay đổi màu sắc để RED
  2. Nếu function 1 trở thành sự thật và function 2 false trả -> thay đổi màu sắc để VÀNG
  3. Nếu cả hai chức năng trở thành sự thật -> đổi màu thành GREEN
+0

Tôi đoán bạn thực sự muốn nói "Nếu hàm 1 trả về true và hàm 2 trả về false -> đổi màu thành vàng ". Cảm ơn một bó Mặc dù! Tôi sẽ kiểm tra xem điều này có hoạt động hay không –

+0

Ồ vâng! Tôi đã bỏ lỡ phần màu vàng. : D – Rohit5k2

+0

trong khi gọi trang google, trang trắng xuất hiện trong mili giây. Làm cách nào để giải quyết nó – Ajay

Các vấn đề liên quan