2

这个问题与how-do-you-check-the-internet-connection-in-android 有关

@William 解决方案帮助了我很多,但在有限的连接上它不起作用。

我已连接到无线调制解调器,但此调制解调器未连接到互联网。

根据android 文档,这个函数应该完成所有工作,但我认为函数检查的数据只在 android -> 调制解调器之间,而不是 android -> webservice(互联网)之间。

@William 代码是:

final ConnectivityManager conMgr =  (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnected()) {
     //notify user you are online
} else {
     //notify user you are not online
} 

我可以做些什么来检查互联网连接?我错过了什么?

4

2 回答 2

1

我认为作为替代方案,您可以向远程 URL 发出实际的 HTTP 请求,看看它是否成功。

于 2013-06-07T14:27:07.107 回答
0

尝试这个

  public static boolean isInternetConnection(Context mContext) {
    final ConnectivityManager connMgr = (ConnectivityManager) mContext
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    final android.net.NetworkInfo wifi = connMgr
            .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    final android.net.NetworkInfo mobile = connMgr
            .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    if (wifi.isAvailable()
            && wifi.getState() == NetworkInfo.State.CONNECTED) {
        return true;
    } else if (mobile.isAvailable()
            && mobile.getState() == NetworkInfo.State.CONNECTED) {
        return true;
    } else {
        return false;
    }
}

public static boolean isWifi(Context mContext) {
    final ConnectivityManager connMgr = (ConnectivityManager) mContext
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    final android.net.NetworkInfo wifi = connMgr
            .getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    if (wifi.isAvailable()) {
        return true;
    } else {
        return false;
    }
}

public static boolean isOtherNetwork(Context mContext) {
    final ConnectivityManager connMgr = (ConnectivityManager) mContext
            .getSystemService(Context.CONNECTIVITY_SERVICE);

    final android.net.NetworkInfo mobile = connMgr
            .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

    if (mobile.isAvailable()) {
        return true;
    } else {
        return false;
    }
}

在您的清单中添加权限

        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
于 2013-06-07T14:06:05.160 回答