android上检查互联网连接的问题

android上检查互联网连接的问题,android,connection,Android,Connection,我正在使用以下代码: public boolean isOnline() { ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo = cm.getActiveNetworkInfo(); if (netInfo != null && netInfo.isConnec

我正在使用以下代码:

public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnectedOrConnecting()) {
        return true;
    }
    return false;
}
但是有联系或没有联系总是得到正确的答案。 可能吗


谢谢

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

if (cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
        .isConnectedOrConnecting()) {
    return true;
}
明显地

   <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
请尝试使用此代码

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" />

检查以下代码

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

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

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


希望这能帮助其他人…

不幸的是,你无法在模拟器中模拟wifi状态。你需要在真正的设备上测试你的应用程序!我不能在模拟器中验证这一点吗(那么我的代码可以在真实设备上工作吗?是的,正如我在回答中提到的,您的代码经过一些调整后,将只在真实设备上工作。而不是在模拟器上,很抱歉。要调用函数,上下文必须发送什么?您必须传递活动。此上下文类似于“InternetConnectionCheck.checkConnection(Activity.this)”
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";
    }
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;
}