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));

}