如何检测WIFI已连接,但没有互联网(数据限制超过/无信号)

时间:2018-03-30 10:02:45

标签: android progress-bar android-wifi android-connectivitymanager

我想检查一下是否' Wifi'已连接,但如何检测互联网是否可用?因为在我的MainActivity.java'我'通过以下代码检查互联网连接以及互联网的可用性。

public static boolean isConnectedToInternet(Context context) {

   ConnectivityManager cm = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    if (cm.getActiveNetworkInfo() != null
            && cm.getActiveNetworkInfo().isAvailable()
            && cm.getActiveNetworkInfo().isConnected()) {
        Log.d("INTERNET_CONNECTION", "Internet is working");

        return true;
    } else {
        Log.d("INTERNET_CONNECTION", "Internet is Not Available");
        return false;
    }

}

如果互联网可用(数据和信号正常),可以看到“进度条”'并加载内容和加载过程完成隐形“进度条”#。如果互联网不可用(没有数据或没有信号),则隐藏“进度条”'并显示错误。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

        if (isConnectedToInternet(context)== true)
        {
            progressLayout.setVisibility(View.VISIBLE);

            // load the content
        }
        else
        {
            progressLayout.setVisibility(View.GONE);

            Toast.makeText(this, "No Internet", Toast.LENGTH_LONG).show;
        }
}

如果互联网可用,代码工作正常,但是'进度条'互联网不可用时始终显示。 (没有数据或没有信号)

1 个答案:

答案 0 :(得分:0)

 public static boolean isNetworkAvailable(Context activity) {
    ConnectivityManager connectivity = (ConnectivityManager) activity
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity == null) {
        return false;
    } else {
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
        if (info != null) {
            for (NetworkInfo anInfo : info) {
                if (anInfo.getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }
            }
        }
    }
    return false;
}