android - 检查android上的互联网连接

标签 android connection

我有以下代码用于检查我的应用程序上的互联网连接 wifi/EDGE/GPRS/3G。

代码是

public static boolean checkConn(Context ctx) {
    ConnectivityManager conMgr = (ConnectivityManager) ctx
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    if (conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED
        || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING) {
        return true;
    } else if (conMgr.getNetworkInfo(0).getState()==NetworkInfo.State.DISCONNECTED
        || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED){
        return false;
    }
    return false;
}

我这样调用它:

if (CheckInternet.checkConn(introPage.this) == true) {
    Intent toMainPage = new Intent(introPage.this, mainPage.class);
    System.gc();
    startActivity(toMainPage);
} else if (CheckInternet.checkConn(getApplicationContext()) == false) {
    Toast.makeText(getApplicationContext(),
        "Sorry, No internet connectivity found", Toast.LENGTH_SHORT)
            .show();
}

但是我有一个问题,如果我连接到 wifi,并且我打开应用程序,它工作正常,但如果我关闭应用程序并关闭 wifi 并重新打开应用程序,它不会通过“没有连接”的错误,我需要关闭我的设备然后打开它,同样的情况是如果wifi关闭,我打开应用程序,它会抛出“无连接”的错误,如果我打开它,它仍然会抛出相同的“无连接”错误,直到我关闭并打开设备。

最佳答案

有时 Activity 连接不是列表中的第一个,或者处于非 Activity 状态或处于错误状态。我会这样做:

  NetworkInfo i = conMgr.getActiveNetworkInfo();
  if (i == null)
    return false;
  if (!i.isConnected())
    return false;
  if (!i.isAvailable())
    return false;
  return true;

[编辑 1] 不要忘记在应用程序 list 中添加此权限:

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

这对你有帮助吗?

伊曼纽尔

关于android - 检查android上的互联网连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4086159/

相关文章:

android - 我们可以像配对经典蓝牙设备一样配对 BLE 设备吗?

android - 如何在 Android 中使用 BroadcastAddress 获取计算机的 IP 地址

amazon-web-services - 如何将 Docker 连接到 PlanetScale

php - 无法连接mysql

java - Android Spinner getView

Android Studio 生成签名的 apk 不适用于构建 0.3.6 - 给出错误

大约 700 个建立的连接后,linux 出站连接超时或失败

windows - InternetCheckConnection 始终返回 false

蓝牙配对与寻呼、绑定(bind)的区别

android - setRequestedOrientation,但仍根据传感器改变