获取网络状态需要首先添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
1.判断是否有 网络连接
private boolean isNetworkConnected(Context context) {
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = manager.getActiveNetworkInfo();
if (activeNetworkInfo != null) {
return true;
} else {
return false;
}
}
2.判断WIFI是否连接
private boolean isWIFIConnected(Context context) {
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo wifiInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (wifiInfo != null) {
return wifiInfo.isAvailable();
} else {
return false;
}
}
private boolean isMobileConnected(Context context) {
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mobileInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mobileInfo != null) {
return mobileInfo.isAvailable();
} else {
return false;
}
}
4.获取当前网络连接的信息
private void getNetworkInfo(Context context) {
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = manager.getActiveNetworkInfo();
if (activeNetworkInfo != null) {
int type = activeNetworkInfo.getType();
String typeName = activeNetworkInfo.getTypeName();
}
}
5.监听网络状态的变化
<1>.创建一个广播接受者
BroadcastReceiver connectionReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectMgr = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
// 没有网络连接
} else {
// 有网络连接
}
}
};
<2>.注册广播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(connectionReceiver, intentFilter);
<3>.取消广播
unregisterReceiver(connectionReceiver);
6.判断网络APN
public static void getAPNType(Context context) {
ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null) {
int nType = networkInfo.getType();
if (nType == ConnectivityManager.TYPE_MOBILE) {
if (networkInfo.getExtraInfo().toLowerCase().equals("cmnet")) {
System.out.println("cmnet");
} else if (networkInfo.getExtraInfo().toLowerCase().equals("cmwap")) {
System.out.println("cmwap");
}
// 可以添加其他逻辑判断联通和电信
} else if (nType == ConnectivityManager.TYPE_WIFI) {
System.out.println("TYPE_WIFI");
}
}
}