Android - Network Utils - Kiểm tra kết nối internet trên Android Studio

1. Thêm permission trong manifest file
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2. Kiểm tra loại kết nối trên điện thoại

public static final int NETWORK_TYPE_NO_CONNECTION = -1;
public static final int NETWORK_TYPE_UNKNOWN = 0;
public static final int NETWORK_TYPE_2G = 1;
public static final int NETWORK_TYPE_3G = 2;
public static final int NETWORK_TYPE_4G = 3;
public static final int NETWORK_TYPE_WIFI = 4;
Hàm sau sẽ thực hiện kiểm tra loại kết nối internet trên điện thoại, trả về TYPE tương ứng:
public static int getNetworkType(Context context) {
    ConnectivityManager cm = (ConnectivityManager) 
context.getSystemService(Context.CONNECTIVITY_SERVICE);    
NetworkInfo info = cm.getActiveNetworkInfo();
    if (info == null || !info.isConnected())
        return NETWORK_TYPE_NO_CONNECTION;
    if (info.getType() == ConnectivityManager.TYPE_WIFI)
        return NETWORK_TYPE_WIFI;
    if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
        int networkType = info.getSubtype();        switch (networkType) {
            case TelephonyManager.NETWORK_TYPE_GPRS:
            case TelephonyManager.NETWORK_TYPE_EDGE:
            case TelephonyManager.NETWORK_TYPE_CDMA:
            case TelephonyManager.NETWORK_TYPE_1xRTT:
            case TelephonyManager.NETWORK_TYPE_IDEN:
                return NETWORK_TYPE_2G;
            case TelephonyManager.NETWORK_TYPE_UMTS:
            case TelephonyManager.NETWORK_TYPE_EVDO_0:
            case TelephonyManager.NETWORK_TYPE_EVDO_A:
            case TelephonyManager.NETWORK_TYPE_HSDPA:
            case TelephonyManager.NETWORK_TYPE_HSUPA:
            case TelephonyManager.NETWORK_TYPE_HSPA:
            case TelephonyManager.NETWORK_TYPE_EVDO_B:
            case TelephonyManager.NETWORK_TYPE_EHRPD:
            case TelephonyManager.NETWORK_TYPE_HSPAP:
                return NETWORK_TYPE_3G;
            case TelephonyManager.NETWORK_TYPE_LTE:
                return NETWORK_TYPE_4G;
            default:
                return NETWORK_TYPE_UNKNOWN;        }
    }
    return NETWORK_TYPE_UNKNOWN;}

3. Ví dụ kiểm tra kết đang sử dụng có phải là 3G hay không:

public static boolean isUse3GInternet(Context context) {

    if (NETWORK_TYPE_3G == getNetworkType(context)) 
return true;    
return false;}

4. Kiểm tra điện thoại có đang bật kết nối internet

public static boolean isConnectedInternet(Context context) {
    ConnectivityManager cm =
     (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);    
NetworkInfo netInfo = cm.getActiveNetworkInfo();    
return netInfo != null && netInfo.isConnectedOrConnecting();
}












Nhận xét

Bài đăng phổ biến từ blog này

Android - Date Time - Lấy giá trị ngày, giờ theo định dạng tùy biến trong Android Studio

Android - Custom SearchView - Tạo khung tìm kiếm đơn giản trong Android Studio

Android - Image - Take Photo, Choose Photo from Gallery - Xử lý chụp ảnh, lấy ảnh trong Android Studio