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

AndroidManifest.xmlにandroid.permission.ACCESS_NEWTORK_STATEを追加しましたか?また、どの接続でネットワークの状態を確認しようとしていますか?Wi-Fi?またはエッジ?

if (cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
        .isConnectedOrConnecting()) {
    return true;
}
于 2012-07-23T09:34:00.840 に答える
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 に答える
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 に答える