判断当前是否有网络,返回无网,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();
备注:该代码模板我借鉴了网上大佬的博客,写下这边博客做下笔记!

本文提供了一个Android网络状态判断的工具类NetUtil.java,包括检查无网、WiFi网络和移动网络的状态。强调在循环判断网络时需避免ANR,确保UI更新在主线程进行。内容来源于网络并作为个人学习笔记。
1722

被折叠的 条评论
为什么被折叠?



