建议你们用方案一,经过实测方案二只判断设备有没有插入SIM卡或连WIFI,如果连上手机热点,手机关闭数据流量,这个时候方案二仍然返回true,会存在这么一种异常情况,建议使用方案一就没有这个问题

public class NetworkDiagnostics {
	//方案一
    public static void start(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Process process = Runtime.getRuntime().exec("/system/bin/ping -c 1 -w 100 www.baidu.com");
                    int status = process.waitFor(); //如果status==0则表示网络可用,其中参数-c 1是指ping的次数为1次,-w是指超时时间单位为s
                    if (status==0){     //网络能通
                        Log.d("wangrui","网络分析方案1=true");
                    }else{
                        Log.d("wangrui","网络分析方案1=false");
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

    //方案二
    public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivityManager == null) {
            return false;
        } else {
            // 获取NetworkInfo对象
            NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
            if (networkInfo != null && networkInfo.length > 0) {
                for (int i = 0; i < networkInfo.length; i++) {
                    // 判断当前网络状态是否为连接状态
                    if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                    }
                }
            }
        }
        return false;
    }
}
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐