Android判断是否有网络模板

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

判断当前是否有网络,返回无网,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();

备注:该代码模板我借鉴了网上大佬的博客,写下这边博客做下笔记!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值