Ứng dụng của tôi thực hiện một số thu thập dữ liệu backgound và tôi đang thêm hỗ trợ cho các tùy chọn mạng của người dùng, chẳng hạn như thực hiện cập nhật nền và chuyển vùng dữ liệu. Tôi có kiểm tra sau đây đã:Cách tôn trọng cài đặt sử dụng mạng trong Android
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm.getBackgroundDataSetting()) {
...
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected()) {
với các mục cần thiết trong biểu hiện:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
này tất cả dường như làm việc tốt, nhưng tôi đã tự hỏi nếu tôi nên được kiểm tra bất cứ điều gì khác? Tôi lo lắng về việc kiểm tra chuyển vùng dữ liệu nhưng trạng thái docs rằng networkInfo.isAvailable()
sẽ kiểm tra điều này cho tôi. Vì vậy, có bất kỳ kiểm tra khác tôi cần phải thực hiện cho các thiết lập mạng? Bất cứ điều gì khác trong lĩnh vực này tôi nên biết?
Câu hỏi hay. Thông tin mạng cũng không có phương pháp isRoaming hay không. (Và bạn đang phát triển ứng dụng chỉ ở khu vực Bắc Mỹ, nếu không phải điều này có thể là một vấn đề, vì giao thức mạng có thể khác nhau). –
Có, có phương thức 'isRoaming()'. Tôi đã không sử dụng nó cho đến nay khi 'networkInfo.isAvailable()' xuất hiện để trả về 'false' nếu mạng đang chuyển vùng và người dùng đã vô hiệu hóa Chuyển vùng dữ liệu. Ứng dụng sẽ chỉ có ở Vương quốc Anh - tôi không nghĩ ** điều này có ảnh hưởng đến mã mà tôi có cho đến nay, nhưng nếu tôi thực hiện một số kiểm tra trong câu trả lời, tôi sẽ phải kiểm tra NETWORK_TYPE khác . –
Tôi tò mò. Tôi đã duyệt qua mã nguồn và tài liệu. isNetworkAvilable là đáng tin cậy như bất kỳ, vì nó kiểm tra nếu bạn đang ở trong mạng gia đình hay không. (sau khi tất cả nếu nó không thành công, ứng dụng của bạn không phải là người duy nhất gặp rắc rối;)) –