判断当前是否有网络,返回无网,WiFi网络,移动网络状态.
注意如果需要循环判断当前是否有网络,要开辟线程,防止ANR,更新UI要在主线程!
工具类:NetUtil.java
public class NetUtil {
//没有网络
private static final int NETWORK_NONE = 0;
//移动网络
private static final int NETWORK_MOBILE = 1;
//WiFi网络
private static final int NETWORK_WIFI = 2;
public static int getNetWorkState(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {
//判断是否是WiFi
if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_WIFI)) {
// Toast.makeText(context, "当前处于无线网络", Toast.LENGTH_SHORT).show();
return NETWORK_WIFI;
//判断是否移动网络
} else if (activeNetworkInfo.getType() == (ConnectivityManager.TYPE_MOBILE)) {
// Toast.makeText(context, "当前处于移动网络", Toast.LENGTH_SHORT).show();
return NETWORK_MOBILE;
}
} else {//没有网络
// Toast.makeText(context, "当前没有网络", Toast.LENGTH_SHORT).show();
return NETWORK_NONE;
}
//默认返回 没有网络
return NETWORK_NONE;
}
}
循环判断当前是否有网络
new Thread() {
@Override
public void run() {
int netFlag = NetUtil.getNetWorkState(MainActivity.this);
while (netFlag== 0) {
netFlag = NetUtil.getNetWorkState(MainActivity.this);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
//更新UI
}
});
}
}.start();
备注:该代码模板我借鉴了网上大佬的博客,写下这边博客做下笔记!