Có một số câu hỏi liên quan đến cách phát hiện kết nối mạng trong Android. https://stackoverflow.com/a/4239019/90236 cung cấp câu trả lời rất chi tiết và https://stackoverflow.com/a/8548926/90236 hiển thị các phương pháp để xác định loại mạng mà mạng được kết nối.Phát hiện kết nối mạng bị hạn chế trong Android?
Chúng tôi phát hiện khả năng kết nối mạng sử dụng mã tương tự như những câu trả lời như:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
Điều này cho phép chúng tôi cảnh báo người dùng nếu họ đang offline. Tuy nhiên, nó không giúp chúng tôi xác định liệu người dùng có kết nối hạn chế hay không. Có điều kiện kết nối hạn chế đã khiến người dùng phàn nàn. Chúng bao gồm:
Người dùng được kết nối với mạng wifi gia đình nhưng modem cáp hoặc dịch vụ Internet không khả dụng.
Người dùng ở trong một khách sạn hoặc quán cà phê và kết nối thành công với mạng wifi, nhưng mạng yêu cầu họ đăng nhập hoặc đồng ý với điều khoản dịch vụ trước khi họ được cấp quyền truy cập mạng đầy đủ.
Trong cả hai trường hợp này, thử nghiệm isNetworkAvailable() của chúng tôi trả về true. Hệ điều hành cho chúng ta biết chúng tôi đang kết nối với mạng. Tuy nhiên, người dùng không có kết nối Internet khả dụng.
Có cách nào tốt để xác định rằng người dùng có kết nối mạng đầy đủ chức năng?
Tôi đang xem xét việc gọi một dịch vụ web nhẹ để xác minh kết nối của họ và cảnh báo người dùng nếu ứng dụng không nhận được trả lại hợp lệ từ dịch vụ. Đây có phải là quá mức cần thiết không? hoặc có người khác phải sử dụng các kỹ thuật tương tự?
Tôi thích ý tưởng "justrightkill" nhưng nó không có chiếc nhẫn cùng với nó - http://www.youtube.com/watch?v=YjETcbEDmoQ –
haha rất hài hước ..... –