2012-04-17 37 views
7

Ứng dụng của tôi lúc đầu tải dữ liệu từ internet (Tôi đang sử dụng dịch vụ web) Tôi muốn kiểm tra truy cập internet khi khởi động ứng dụng.Làm cách nào để kiểm tra xem internet có khả dụng hay không trong khởi động ứng dụng trong Android?

  1. Tôi muốn kiểm tra xem có bất kỳ hình thức internet nào qua mạng 3G hoặc WIFI hoặc GPRS hay bất kỳ hình thức nào khác có sẵn hay không.
  2. Nếu không có, hãy gửi tin nhắn cho người dùng như "Bạn cần truy cập Internet" và thoát khỏi ứng dụng. (Hiện tại tôi đang gặp lỗi gần đúng trong ứng dụng của mình nếu không có truy cập internet)
  3. Nếu có sẵn, hãy khởi động ứng dụng của tôi bình thường.
  4. Ngoài ra, ứng dụng của tôi sẽ tìm nạp dữ liệu từ webservice ở các giai đoạn khác nhau, trước mỗi giai đoạn hoặc hoạt động, tôi sẽ muốn kiểm tra truy cập internet lúc đầu.

Làm cách nào để thực hiện việc này?

+2

Xem ví dụ http://stackoverflow.com/questions/1560788/how-to-check-internet-access-on-android-inetaddress-never-timeouts cho các câu trả lời trước. – mlc

Trả lời

7

Bạn có thể sử dụng phương pháp của tôi:

public static boolean isNetworkAvailable(Context context) 
{ 
    ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 

    if (connectivity != null) 
    { 
     NetworkInfo[] info = connectivity.getAllNetworkInfo(); 

     if (info != null) 
     { 
      for (int i = 0; i < info.length; i++) 
      { 
       Log.i("Class", info[i].getState().toString()); 
       if (info[i].getState() == NetworkInfo.State.CONNECTED) 
       { 
        return true; 
       } 
      } 
     } 
    } 
    return false; 
} 
+0

Thanx! hoạt động !!! – captaindroid

+0

Tôi rất vui vì nó giúp bạn .. :) – dreamcoder

+0

nếu tôi có kết nối wifi mà không cần kết nối internet, sau đó mã trả lại đúng. bạn có bất kỳ thay thế cho điều này? –

3

Bạn có thể thực hiện tất cả điều này bằng cách sử dụng ConnectivityManager. Tất cả các thông tin cần thiết có sẵn ở đây

http://developer.android.com/reference/android/net/ConnectivityManager.html

Bạn có thể muốn dính vào một cái gì đó như thế này trong các phương pháp onStart() hoạt động ban đầu của bạn (tùy thuộc vào nơi trong mã của bạn kết nối được bắn lên và các dữ liệu sẽ được tải về)

ConnectivityManager cm = (ConnectivityManager) Context.getSystemService(Context.CONNECTIVITY_SERVICE); 

if (cm.getAllNetworkInfo().isConnected()) { 
//proceed with loading 
} else { 
//showErrorDialog 
} 

Tôi chưa thử nghiệm mã để cắt và dán có lẽ là một ý tưởng tồi, nhưng điều này sẽ cho bạn một điểm khởi đầu tốt. Có rất nhiều thông tin khác nếu bạn kiểm tra tài liệu. Ngoài ra nó có thể là một ý tưởng để xử lý sự thiếu kết nối bằng cách thay đổi mã của bạn để nó không chỉ sụp đổ nếu không có kết nối, trước khi haps hiển thị một màn hình tải mặc định? Ngoài ra, ứng dụng của bạn có thể không nhận được dữ liệu ngay cả khi có kết nối, do đó bạn cũng sẽ muốn xử lý trường hợp đó.

1
NetworkInfo i = conMgr.getActiveNetworkInfo(); 
    if (i == null) 
    return false; 
    if (!i.isConnected()) 
    return false; 
    if (!i.isAvailable()) 
    return false; 
    return true; 
Các vấn đề liên quan