0

我正在使用这段代码:

public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnectedOrConnecting()) {
        return true;
    }
    return false;
}

但是有连接或没有连接总是会收到 true。有可能吗?

谢谢!

4

5 回答 5

1

尝试使用此代码

ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo activeNetworkInfo = connectivityManager
                    .getActiveNetworkInfo();

            if (activeNetworkInfo == null) {

                Toast.makeText(SlideShow.this,
                        "Network Not Connected...Please Try Again",
                        Toast.LENGTH_LONG).show();

            } else {
                if (activeNetworkInfo.isConnected()) {

                    try {
                        //Here u can do your task

                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        System.out.println("Inside the Exception"
                                + e.getMessage());
                    }

                } else if (activeNetworkInfo.isConnectedOrConnecting()) {

                    Toast.makeText(SlideShow.this,
                            "Network is connecting Now please patient",
                            Toast.LENGTH_LONG).show();
                }

            }

不要忘记添加此权限,

 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
于 2012-07-23T09:35:58.563 回答
0

您是否已将 android.permission.ACCESS_NEWTORK_STATE 添加到您的 AndroidManifest.xml 中?您要检查网络状态的连接是什么?无线上网?还是边缘?

if (cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
        .isConnectedOrConnecting()) {
    return true;
}
于 2012-07-23T09:34:00.840 回答
0

我最近在尝试使用时遇到了这个问题,isConnectedOrConnecting()并发现了另一种可能的方法:只需在指定的 URL 上 ping 答案(例如,选择google.com,用于整个互联网可用性检查)。

static public boolean isURLReachable(Context context) {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnected()) {
        try {
            URL url = new URL("http://192.168.1.13");   // Change to "http://google.com" for www test.
            HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
            urlc.setConnectTimeout(10 * 1000);          // 10 s.
            urlc.connect();
            if (urlc.getResponseCode() == 200) {        // 200 = "OK" code (http connection is fine).
                Log.wtf("Connection", "Success !");
                return true;
            } else {
                return false;
            }
        } catch (MalformedURLException e1) {
            return false;
        } catch (IOException e) {
            return false;
        }
    }
    return false;
}

不要忘记在线程中运行此函数(而不是在主线程中)。

希望这可以帮助其他人......

于 2013-06-05T19:37:44.070 回答
0

在清单中

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

接着

public static boolean checkConnection(Context c) 
{
    ConnectivityManager mConnectivityManager = (ConnectivityManager) c
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    TelephonyManager telephonyManager = (TelephonyManager) c
            .getSystemService(Context.TELEPHONY_SERVICE);

    if (mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
            .isConnected() || telephonyManager.getDataState() == TelephonyManager.DATA_CONNECTED)
        return true;
    else
        return false;

}
于 2012-07-23T09:35:01.940 回答
0

检查下面的代码。

String IsNetworkConnected;
String ConnectionType;
NetworkInfo ActiveNetwork;

ConnectivityManager connectivitymanager;
connectivitymanager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

try
    {           
        ActiveNetwork=connectivitymanager.getActiveNetworkInfo();
        ConnectionType=ActiveNetwork.getTypeName(); 
        Isconnected=String.valueOf(ActiveNetwork.getState());
        IsNetworkConnected="true";

    }
catch(Exception error)
    {
        IsNetworkConnected="false";
    }
于 2012-07-23T09:40:36.557 回答