其实这就是一个简单的工具类,只是自己记录下来方便自己以后拷贝
使用场景:比如说在登录,在下载,在上传等网络操作之前,我们可以先判断下当前网络状态,如果没有网络,就给予提示.而当在下载等需要大量流量的网络操作前,我们又可以先判断当前是不是wifi连接状态,避免了在3G或4G网络下造成大量的流量损失.
public class NetWorkUtil { private static ConnectivityManager connectManager; //这个方法判断当前状态是否有网络 public static boolean havaNetWork(Context context) { //获取网络连接管理者对象 connectManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //获取网络状态信息 NetworkInfo info = connectManager.getActiveNetworkInfo(); if (info == null || !info.isConnected()) { return false; } if (info.isRoaming()) { //漫游状态 return false; } return true; }
//这个方法用来判断是否wifi模式 public static boolean isWifi() { if (connectManager != null) { //拿到所有的网络连接信息数组 NetworkInfo[] info = connectManager.getAllNetworkInfo(); if (info != null) { for (int i = 0; i < info.length; i++) { if (info[i].getTypeName().equals("WIFI") && info[i].isConnected()) { return true; } } } } return false; } }
在这里,写成了工具类,2个静态方法一个是判断当前有无网络,另外个方法判断当前是不是wifi网络连接.接下来我们就测试一下.
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); boolean b = NetWorkUtil.havaNetWork(this); boolean wifi = NetWorkUtil.isWifi(); Toast.makeText(this,b == true? "当前有网络" :"当前无网络",Toast.LENGTH_SHORT).show(); Toast.makeText(this,wifi == true? "当前wifi连接":"当前wifi没有连接",Toast.LENGTH_SHORT).show(); } }测试结果如下:
当然还有很多方法可以去尝试
getDetailedState():获取详细状态。
getExtraInfo():获取附加信息。
getReason():获取连接失败的原因。
getType():获取网络类型(一般为移动或Wi-Fi)。
getTypeName():获取网络类型名称(一般取值“WIFI”或“MOBILE”)。
isAvailable():判断该网络是否可用。
isConnected():判断是否已经连接。
isConnectedOrConnecting():判断是否已经连接或正在连接。
isFailover():判断是否连接失败。
isRoaming():判断是否漫游
当用wifi上的时候
getType 是WIFI
getExtraInfo是空的
当用手机上的时候
getType 是MOBILE
用移动CMNET方式
getExtraInfo 的值是cmnet
用移动CMWAP方式
getExtraInfo 的值是cmwap 但是不在代理的情况下访问普通的网站访问不了
用联通3gwap方式
getExtraInfo 的值是3gwap
用联通3gnet方式
getExtraInfo 的值是3gnet
用联通uniwap方式
getExtraInfo 的值是uniwap
用联通uninet方式
getExtraInfo 的值是uninet
用法:
1:用在广播中,监听系统中的网络变化
2:网络连接失败时,进行故障切换,比如说弹出个对话框引导你检验网络
3:在下载时,由wifi变为手机网络的时候要暂停下载任务,并提示要不要继续