2012-01-09 12 views
0

端末で静的IPを使用しているときにインターネット接続を検出することにほとんど問題はありません。私は静的IPを設定せずに接続している間、使用可能な接続を検出するための私の機能が適切に動作しています。しかし、私は静的IPを設定すると、私はWifiや3Gに接続しているので、関数はtrueを返しますが、インターネットに接続していないので、その状況で私のアプリケーションがクラッシュします。任意のアイデアはどのように静的IPを使用してその問題を解決するには?ここ は、私が使用しているものです:スタティックIPを使用しているときにAndroidチェックデジットネットワーク接続

public boolean chkNetworkStatus(Context context) { 
    ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    if (connectivity == null) { 
     Toast.makeText(context, "No available connection!", Toast.LENGTH_LONG); 
    } else { 
     NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
     if (info != null) { 
      for (int i = 0; i < info.length; i++) { 
       if (info[i].getState() == NetworkInfo.State.CONNECTED) { 
        return true; 
       } 
      } 
     } 
    } 
    return false; 
} 
+0

貼り付けられたコードが正しいので、ここに問題がない可能性があります。 – idiottiger

+0

これはコードに含まれていません。私は静的IPを使用していないときはすべて正常に動作しますが、スタティックを使用するオプションを設定してもデバイス上のWebサイトを開くことさえできませんが、Wifiや3Gに接続しているので、私はインターネットにアクセスできない。それがクラッシュする理由です。 –

+0

情報[i]を.getState()== NetworkInfo.State.CONNECTEDのみ接続 'ネットワークをチェックしますが、特定することはできませんが( パブリックブールが接続されており、web'は次に接続することができます) 導入されたバージョン:APIレベル1 を示しネットワーク接続が存在し、接続を確立してデータを渡すことが可能であるかどうか。 – idiottiger

答えて

0

は、あなたがあなたの状況で使用できるものです。 wifi/3gに接続していて、任意のWebページを読み込むことができる場合、この関数はtrueを返します。

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

    public static boolean chkNetworkStatus(Context context) { 
    boolean result = false; 
    new Thread() { 
     @Override 
     public void run() { 


      for(int i=0;i<3;i++){ 
      HttpGet requestForTest = new HttpGet("http://m.google.com"); 
      try { 
        new DefaultHttpClient().execute(requestForTest); 
        responded = true; 
       } catch (Exception e) { 
        responded = false; 
       } 
      } 
     } 
    }.start(); 
    boolean isOnline = isOnline(context); 
    if(responded && isOnline){ 
     result = true; 
    } else { 
     result = false; 
    } 

    Log.e("","responded : "+responded); 
    return result; 
} 
0

、このメソッドを使用します....私はそれはあなたのために参考になっ願っています。

公共ブールcheckNetworkConnection(コンテキストコンテキスト){ここで

ConnectivityManager cm = (ConnectivityManager) context 
      .getSystemService(Context.CONNECTIVITY_SERVICE); 

    NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 

    if (activeNetwork != null) { 
     return activeNetwork.isConnectedOrConnecting(); 
    } 

    NetworkInfo wifiNetwork = cm 
      .getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    if (wifiNetwork != null) { 
     return wifiNetwork.isConnectedOrConnecting(); 
    } 

    NetworkInfo mobileNetwork = cm 
      .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
    if (mobileNetwork != null) { 
     return mobileNetwork.isConnectedOrConnecting(); 
    } 

    NetworkInfo otherNetwork = cm.getActiveNetworkInfo(); 
    if (otherNetwork != null) { 
     return otherNetwork.isConnectedOrConnecting(); 
    } 
    return false; 
} 
関連する問題