android - 在 Android 中使用 3G 和 Wifi 检查互联网连接

标签 android networking

有时,我必须在我的 android 应用程序中检查互联网连接:

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null;
}

上面的代码只有在一个 Network 可用时才有效!但是,我的设备有 wifi3G,当我同时使用上面的两种网络连接时,上面的代码总是返回 false! (当它返回 false 时,我仍然可以使用 google.com)!!我错过了什么?谢谢!

最佳答案

试试这个

private boolean haveNetworkConnection() 
{
    boolean haveConnectedWifi = false;
    boolean haveConnectedMobile = false;

    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo[] netInfo = cm.getAllNetworkInfo();
    for (NetworkInfo ni : netInfo) 
    {
        if (ni.getTypeName().equalsIgnoreCase("WIFI"))
            if (ni.isConnected())
                haveConnectedWifi = true;
        if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
            if (ni.isConnected())
                haveConnectedMobile = true;
    }
    return haveConnectedWifi || haveConnectedMobile;
}

关于android - 在 Android 中使用 3G 和 Wifi 检查互联网连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12687703/

相关文章:

android - Xamarin Android : Get HTML content

android - 是否可以在Android中使用编写c代码访问rild套接字

android - angular.io Material 垫滑动切换不适用于 android chrome

macos - 运行错误 'Remote Debugger' : Unable to open debugger port (localhost:5005): java.net.ConnectException "Connection refused (Connection refused)"

java - 从 Java 连接到 CDMA 网络 IN

android - 将 protobuff 类转换为模型并使用 Realm 存储其值

java - 为Android命名主类

html - 资源在 Google Chrome 网络选项卡中显示待处理和来自缓存

c++ - 创建一个 C++ 程序来处理电话线(固定电话)上的来电

windows - 如何通过已知 IP 断开 Windows 共享目录?