zoukankan      html  css  js  c++  java
  • Android-判断当前网络是否可用

    1.声明权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    2.网络检测类

    public class NetworkDetector {
    
        /** Network type is unknown */
        public static final int NETWORK_TYPE_UNKNOWN = 0;
        /** Current network is GPRS */
        public static final int NETWORK_TYPE_GPRS = 1;
        /** Current network is EDGE */
        public static final int NETWORK_TYPE_EDGE = 2;
        /** Current network is UMTS */
        public static final int NETWORK_TYPE_UMTS = 3;
        /** Current network is CDMA: Either IS95A or IS95B */
        public static final int NETWORK_TYPE_CDMA = 4;
        /** Current network is EVDO revision 0 */
        public static final int NETWORK_TYPE_EVDO_0 = 5;
        /** Current network is EVDO revision A */
        public static final int NETWORK_TYPE_EVDO_A = 6;
        /** Current network is 1xRTT */
        public static final int NETWORK_TYPE_1xRTT = 7;
        /** Current network is HSDPA */
        public static final int NETWORK_TYPE_HSDPA = 8;
        /** Current network is HSUPA */
        public static final int NETWORK_TYPE_HSUPA = 9;
        /** Current network is HSPA */
        public static final int NETWORK_TYPE_HSPA = 10;
        /** Current network is iDen */
        public static final int NETWORK_TYPE_IDEN = 11;
        /** Current network is EVDO revision B */
        public static final int NETWORK_TYPE_EVDO_B = 12;
        /** Current network is LTE */
        public static final int NETWORK_TYPE_LTE = 13;
        /** Current network is eHRPD */
        public static final int NETWORK_TYPE_EHRPD = 14;
        /** Current network is HSPA+ */
        public static final int NETWORK_TYPE_HSPAP = 15;
    
        /** Unknown network class. {@hide} */
        public static final int NETWORK_CLASS_UNKNOWN = 0;
        /** Class of broadly defined "2G" networks. {@hide} */
        public static final int NETWORK_CLASS_2_G = 1;
        /** Class of broadly defined "3G" networks. {@hide} */
        public static final int NETWORK_CLASS_3_G = 2;
        /** Class of broadly defined "4G" networks. {@hide} */
        public static final int NETWORK_CLASS_4_G = 3;
        /** Class of broadly defined "WIFI" networks. {@hide} */
        public static final int NETWORK_CLASS_WIFI = 4;
        /** Class of broadly defined "NONET" networks. {@hide} */
        public static final int NETWORK_CLASS_NONET = 5;
    
        /**
         * 判断当前网络是否可用
         * 
         * @param context
         * @return true:可用,false:不可用;
         */
        public static boolean isAvailable(Context context) {
            ConnectivityManager manager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
    
            if (manager == null) {
                return false;
            }
            NetworkInfo networkinfo = manager.getActiveNetworkInfo();
            // NetworkInfo.isAvailable() 如果网络可用返回true,否则返回false。
            if (networkinfo == null || !networkinfo.isAvailable()) {
                return false;
            } else {
                return true;
            }
        }
    
        /**
         * 判断当前的网络状态
         * 
         * @param context
         * @return 0、未知, 1、2G, 2、3G, 3、4G, 4、wifi, 5、noNet;
         */
        public static int getNetWorkType(Context context) {
            ConnectivityManager manager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            if (manager == null) {
                return NETWORK_CLASS_NONET;
            }
            NetworkInfo networkinfo = manager.getActiveNetworkInfo();
            if (networkinfo == null || !networkinfo.isAvailable()) {
                return NETWORK_CLASS_NONET;
            }
    
            if (networkinfo.getType() == ConnectivityManager.TYPE_WIFI) {
                return NETWORK_CLASS_WIFI;
            } else {
                return getNetworkClass(((TelephonyManager) context
                        .getSystemService(Context.TELEPHONY_SERVICE))
                        .getNetworkType());
            }
        }
    
        public static int getNetworkClass(int networkType) {
            switch (networkType) {
            case NETWORK_TYPE_GPRS:
            case NETWORK_TYPE_EDGE:
            case NETWORK_TYPE_CDMA:
            case NETWORK_TYPE_1xRTT:
            case NETWORK_TYPE_IDEN:
                return NETWORK_CLASS_2_G;
    
            case NETWORK_TYPE_UMTS:
            case NETWORK_TYPE_EVDO_0:
            case NETWORK_TYPE_EVDO_A:
            case NETWORK_TYPE_HSDPA:
            case NETWORK_TYPE_HSUPA:
            case NETWORK_TYPE_HSPA:
            case NETWORK_TYPE_EVDO_B:
            case NETWORK_TYPE_EHRPD:
            case NETWORK_TYPE_HSPAP:
                return NETWORK_CLASS_3_G;
    
            case NETWORK_TYPE_LTE:
                return NETWORK_CLASS_4_G;
    
            default:
                return NETWORK_CLASS_UNKNOWN;
            }
        }
    }
  • 相关阅读:
    php冒泡排序和快速排序
    在thinkphp中js文件添加路径
    cookiesession
    搭建nginx环境(参考腾讯云实验室)
    验证码快速刷新
    使用Word发送,测试一下
    c++ DLL和c#之间传递字符串
    如何使CEF支持Flash
    如何在Windows上从源码编译Chromium (CEF3) 加入mp3支持
    C#在Linux+Mono环境中使用微信支付证书
  • 原文地址:https://www.cnblogs.com/sishuiliuyun/p/4037913.html
Copyright © 2011-2022 走看看