BÀI 49 - KIỂM TRA KẾT NỐI INTERNER TRONG LẬP TRÌNH ANDROID
Trong android Mainfest thêm 2 quyền này cho ứng dụng:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Trong java thêm chương trình này nữa
private Boolean isOnline() {
ConnectivityManager service = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = service.getActiveNetworkInfo();
return networkInfo != null && networkInfo.isConnected();
}
Giờ chỉ hỏi coi isOnline trả về giá trị gì (true/false) là ok rồi á! true là kết nối và false là chưa...
if (!isOnline()) {
showSnackBar("Mất kết nối");
} else {
showSnackBar("Internet sẵn sàng");
}
Một cách khác, cách này mình thường tạo một class Java rồi bỏ đoạn code này trong class đó:
public static boolean haveNetworkConnection(Context context) {
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] networkInfos = cm.getAllNetworkInfo();
for (NetworkInfo network : networkInfos){
if (network.getTypeName().equalsIgnoreCase("WIFI"))
if (network.isConnected())
haveConnectedWifi = true;
if (network.getTypeName().equalsIgnoreCase("MOBILE"))
if (network.isConnected())
haveConnectedMobile = true;
}
return haveConnectedWifi || haveConnectedMobile;
}
Còn đây là cách sử dụng
if (CheckConnection.haveNetworkConnection(getApplicationContext())){
// Có internet, ngoài ra bạn có thể cho người dùng biết điện thoại đang sử dụng wifi hay mobile để kết nối internet.
} else {
finish();
CheckConnection.showToast(getApplicationContext(), getString(R.string.ban_phai_ket_noi_internet));
}