最近在做网络监听的时候发现原来用的 NetworkInfo 中好多方法已经过期,so 看了下SDK及文档现将最新方法记录下。
//获取网络连接管理
ConnectivityManager connectivityManager =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
//获取正在使用的网络信息
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if(networkInfo != null && networkInfo.isConnected()){
//有网
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
//sdk大于21
NetworkCapabilities capabilities =
connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork());
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
//蜂窝网络
Log.e("test","蜂窝网络>>>>>>>>");
return;
}
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
//wifi
Log.e("test","wifi>>>>>>>>");
return;
}
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_BLUETOOTH)) {
//蓝牙
Log.e("test","蓝牙>>>>>>>>");
return;
}
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) {
//以太网
Log.e("test","以太网>>>>>>>>");
return;
}
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN)) {
//VPN
Log.e("test","VPN>>>>>>>>");
return;
}
} else {
//sdk小于21
switch (networkInfo.getType()) {
case ConnectivityManager.TYPE_MOBILE:
break;
case ConnectivityManager.TYPE_WIFI:
break;
case ConnectivityManager.TYPE_ETHERNET:
break;
case ConnectivityManager.TYPE_VPN:
break;
case ConnectivityManager.TYPE_BLUETOOTH:
break;
default:
break;
}
}
} else {
//无网
}