网路状态判断

来源:互联网 发布:win10制作mac os启动盘 编辑:程序博客网 时间:2024/06/03 10:47
/** 没有网络 */public static final int NETWORKTYPE_INVALID = 0;/** wap网络 */public static final int NETWORKTYPE_WAP = 1;/** 2G网络 */public static final int NETWORKTYPE_2G = 2;/** 3G和3G以上网络,或统称为快速网络 */public static final int NETWORKTYPE_3G = 3;/** wifi网络 */public static final int NETWORKTYPE_WIFI = 4;private static int mNetWorkType;/** * 获取网络状态,wifi,wap,2g,3g. * * @param context *            上下文 * @return int 网络状态 {@link #NETWORKTYPE_2G},{@link #NETWORKTYPE_3G}, * *         {@link #NETWORKTYPE_INVALID},{@link #NETWORKTYPE_WAP}* *         <p> *         {@link #NETWORKTYPE_WIFI} */public static boolean isFastMobileNetwork(Context context) {    TelephonyManager telephonyManager = (TelephonyManager) context            .getSystemService(Context.TELEPHONY_SERVICE);    switch (telephonyManager.getNetworkType()) {        case TelephonyManager.NETWORK_TYPE_1xRTT:            return false; // ~ 50-100 kbps        case TelephonyManager.NETWORK_TYPE_CDMA:            return false; // ~ 14-64 kbps        case TelephonyManager.NETWORK_TYPE_EDGE:            return false; // ~ 50-100 kbps        case TelephonyManager.NETWORK_TYPE_EVDO_0:            return true; // ~ 400-1000 kbps        case TelephonyManager.NETWORK_TYPE_EVDO_A:            return true; // ~ 600-1400 kbps        case TelephonyManager.NETWORK_TYPE_GPRS:            return false; // ~ 100 kbps        case TelephonyManager.NETWORK_TYPE_HSDPA:            return true; // ~ 2-14 Mbps        case TelephonyManager.NETWORK_TYPE_HSPA:            return true; // ~ 700-1700 kbps        case TelephonyManager.NETWORK_TYPE_HSUPA:            return true; // ~ 1-23 Mbps        case TelephonyManager.NETWORK_TYPE_UMTS:            return true; // ~ 400-7000 kbps        case TelephonyManager.NETWORK_TYPE_EHRPD:            return true; // ~ 1-2 Mbps        case TelephonyManager.NETWORK_TYPE_EVDO_B:            return true; // ~ 5 Mbps        case TelephonyManager.NETWORK_TYPE_HSPAP:            return true; // ~ 10-20 Mbps        case TelephonyManager.NETWORK_TYPE_IDEN:            return false; // ~25 kbps        case TelephonyManager.NETWORK_TYPE_LTE:            return true; // ~ 10+ Mbps        case TelephonyManager.NETWORK_TYPE_UNKNOWN:            return false;        default:            return false;    }}/** * 获取网络的类型...如果是零代表没有网络 * @param context * @return */public static int getNetWorkType(Context context) {    String str = null;    ConnectivityManager manager = (ConnectivityManager) context            .getSystemService(Context.CONNECTIVITY_SERVICE);    NetworkInfo networkInfo = manager.getActiveNetworkInfo();    if (networkInfo != null && networkInfo.isConnected()) {        String type = networkInfo.getTypeName();        if (type.equalsIgnoreCase("WIFI")) {            mNetWorkType = NETWORKTYPE_WIFI;        } else if (type.equalsIgnoreCase("MOBILE")) {            String proxyHost = android.net.Proxy.getDefaultHost();            mNetWorkType = TextUtils.isEmpty(proxyHost) ? (isFastMobileNetwork(context) ? NETWORKTYPE_3G                    : NETWORKTYPE_2G)                    : NETWORKTYPE_WAP;        }    } else {        mNetWorkType = NETWORKTYPE_INVALID;//没有网络    }    return mNetWorkType;}/** * 判断是否有网络连接.....http://www.jianshu.com/p/10ed9ae02775 * @param context * @return */public static boolean isNetworkConnected(Context context) {    if (context != null) {        // 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)        ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);        // 获取NetworkInfo对象        NetworkInfo networkInfo = manager.getActiveNetworkInfo();        //判断NetworkInfo对象是否为空        if (networkInfo != null)            return networkInfo.isAvailable();    }    return false;}/** * 网络无连接时跳转页面.....http://blog.csdn.net/cy524563/article/details/41686735 * @param context */public static void showNoNetWorkDlg(final Context context) {    AlertDialog.Builder builder = new AlertDialog.Builder(context);    builder.setTitle(R.string.app_name)            //            .setMessage("网络未连接,是否去设置")            .setPositiveButton("确定", new DialogInterface.OnClickListener() {                @Override                public void onClick(DialogInterface dialog, int which) {                    // 跳转到系统的网络设置界面                    Intent intent = null;                    // 先判断当前系统版本                    if(android.os.Build.VERSION.SDK_INT > 10){  // 3.0以上                        intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);                    }else{                        intent = new Intent();                        intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings");                    }                    context.startActivity(intent);                }            })            .setNegativeButton("取消", null)            .show();}   
原创粉丝点击