.......
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission><!-- 允许程序改变网络链接状态 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><!--允许程序访问访问WIFI网络状态信息 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission><!-- 允许程序改变WIFI链接状态 -->
// 1.检测手机是否处于联网状态
// 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();
}
getDetailMobileNetType方法
// 得到详细的网络类型 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);
}
/
+权限
/**
* 跟网络相关的工具类 * * *
*/
public class NetUtils {
private NetUtils() { /* cannot be instantiated */
throw new UnsupportedOperationException("cannot be instantiated");
}
/**
* 判断网络是否连接 * * @param context * @return
*/
public static boolean isConnected(Context context) {
ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (null != connectivity) {
NetworkInfo info = connectivity.getActiveNetworkInfo();
if (null != info && info.isConnected()) {
if (info.getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
return false;
}
/**
* 判断是否是wifi连接
*/
public static boolean isWifi(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm == null)
return false;
return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;
}
/**
* 打开网络设置界面
*/
public static void openSetting(Activity activity) {
Intent intent = new Intent("/");
ComponentName cm = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings");
intent.setComponent(cm);
intent.setAction("android.intent.action.VIEW");
activity.startActivityForResult(intent, 0);
}
}
MainActivity.java
boolean connected = NetUtils.isConnected(this);
if (connected==true){
Toast.makeText(this, "网络连接", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(this, "网络未连接", Toast.LENGTH_SHORT).show();
}