网络连接的判断及网络类型的判断

来源:互联网 发布:mac系统使用视频教程 编辑:程序博客网 时间:2024/06/09 15:48

网络连接的判断及网络类型的判断

此代码实现网络连接判断及类型的判断

需要添加权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

允许程序访问有关GSM网络信息(Allows applications to access information about networks)

检测手机是否处于联网状态

//这是一个方法
public void checkMobileNet() {

    // 1.得到系统服务ConnectivityManager    ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);    // 2.得到网络信息类对象    NetworkInfo networkInfo = manager.getActiveNetworkInfo();    // 3.进行判断    if (networkInfo != null && networkInfo.isConnected()) {        Toast.makeText(this, "已连接互联网!", 0).show();        // 检测手机的网络类型        int type = networkInfo.getType();// 得到网络类型        switch (type) {        case ConnectivityManager.TYPE_WIFI:// wifi网络            Toast.makeText(this, "wifi!", 0).show();            break;        case ConnectivityManager.TYPE_MOBILE:// 移动数据            Toast.makeText(this, "移动数据!", 0).show();            // 2g 3g 4g            getDetailMobileNetType(networkInfo);            break;        }    } else {        Toast.makeText(this, "未连接互联网!", 0).show();        AlertDialog.Builder buider=new Builder(this);        buider.setTitle("网络连接设置");        buider.setMessage("未连接网络,是否要进行设置?");        buider.setPositiveButton("设置", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface arg0, int arg1) {            //跳转到系统设置网络的界面

Intent intent=new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);
startActivity(intent);
}

        });        buider.setNegativeButton("取消",  new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface arg0, int arg1) {}        });        buider.create().show();    }

}

**得到详细的网络类型 wap 2G/3G/4G网络**public void getDetailMobileNetType(NetworkInfo netInfo) {    String strNetworkType = "";    // 得到整数类型    int subtype = netInfo.getSubtype();    // 得到名子    String _strSubTypeName = netInfo.getSubtypeName();    switch (subtype) {    case TelephonyManager.NETWORK_TYPE_GPRS:// 联通2G    case TelephonyManager.NETWORK_TYPE_EDGE:// 移动2G    case TelephonyManager.NETWORK_TYPE_CDMA:// 电信2G    case TelephonyManager.NETWORK_TYPE_1xRTT:    case TelephonyManager.NETWORK_TYPE_IDEN: // api<8 : replace by 11        strNetworkType = "2G";        break;    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: // api<9 : replace by 14    case TelephonyManager.NETWORK_TYPE_EHRPD: // api<11 : replace by 12    case TelephonyManager.NETWORK_TYPE_HSPAP: // api<13 : replace by 15        strNetworkType = "3G";        break;    case TelephonyManager.NETWORK_TYPE_LTE: // api<11 : replace by 13        strNetworkType = "4G";        break;    default:        // http://baike.baidu.com/item/TD-SCDMA 中国移动 联通 电信 三种3G制式        if (_strSubTypeName.equalsIgnoreCase("TD-SCDMA")                || _strSubTypeName.equalsIgnoreCase("WCDMA")                || _strSubTypeName.equalsIgnoreCase("CDMA2000")) {            strNetworkType = "3G";        } else {            strNetworkType = _strSubTypeName;        }        break;    }    Log.d("zzz", "网络类型是:" + strNetworkType);}
原创粉丝点击