在安卓系统中使用3G和Wifi检查网络连接。

3
有时,我需要在我的安卓应用程序中检查网络连接:
private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null;
}

上面的代码只能在有一个 Network 的情况下工作! 然而,我的设备有 wifi3G,当我同时使用这两种类型的网络连接时,上面的代码总是返回 false!(当它返回 false 时,我仍然可以使用 google.com)!! 我错过了什么?谢谢!

谢谢大家,明天我会检查它的!!感谢回复我! - Kingfisher Phuoc
2个回答

2

试试这个

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;
}

2
这段代码怎么样?
        ConnectivityManager connectivityManager = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

    // Check the current state of the Network Information
    if (networkInfo == null)
        return false;
    if (networkInfo.isConnected() == false)
        return false;
    if (networkInfo.isAvailable() == false)
        return false;
    return true;

请记得在应用程序清单文件中添加以下内容:

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

这将允许您的应用程序访问设备的网络状态。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接