2012-01-28 15 views
0

インターネット利用可能でない場合、私はメッセージを表示したいと思います。次のコードスニペットを使用していますが、ネットワークの可用性の場合でも例外が表示されます。androidのインターネット接続を確認する

私は間違っていますか?

public boolean isInternetAvailable(){ 

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

} 
+0

なぜあなたは、パケットを送信し、例外を処理しませんか? – Mob

+0

これをマニフェストに追加しましたか? '' – Zakaria

+0

可能な複製:http://stackoverflow.com/q/2753412/1048330 – tenorsax

答えて

1

どの例外が表示されますか?おそらく、マニフェストファイルにandroid.permission.ACCESS_NETWORK_STATEを追加することを忘れていました。

1

それはあなたがあなたのマニフェストファイルでは、このスニペットを追加することを忘れているようです。以下は、マニフェスト

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

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

追加の権限を使用すると、いずれかに接続されているかどうかを与える方法であり、ネットワークまたは無線LAN

public static boolean isNetworkAvailable(Context context) { 
     boolean available = false; 
     try { 

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

      if (connectivity != null) { 
       NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
       if (info != null) { 
        for (int i = 0; i < info.length; i++) { 
         if (info[i].getState() == NetworkInfo.State.CONNECTED) { 
          available = true; 
         } 
        } 
       } 
      } 
      if (available == false) { 
       NetworkInfo wiMax = connectivity.getNetworkInfo(6); 

       if (wiMax != null && wiMax.isConnected()) { 
        available = true; 
       } 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     return available; 
    } 
0

マニフェストに必要な権限があり、私はネットワーク接続があるかどうOPにより投稿されたコードのみをチェックすることを追加したいと思います

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
if(cm != null) { 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
    if (netInfo != null && netInfo.isConnected()) { 
    return true; 
    } 
} 
return false; 
0

:まだ私は少しあなたのコード修正しまうという問題があります。 無線LAN接続の場合、電話機がそれぞれの無線LANに接続されているかどうかを確認するだけです。

しかし、無線LANが実際にインターネットに接続している場合は、何のエラーも表示されません。

あなたはこのような何か、上記に加えて、別のチェックを使用する場合があります:

try { 
         HttpURLConnection httpConnection = (HttpURLConnection) (new URL("http://clients3.google.com/generate_204").openConnection()); 
         httpConnection.setRequestProperty("User-Agent", "Test"); 
         httpConnection.setRequestProperty("Connection", "close"); 
         httpConnection.setConnectTimeout(15000); 
         httpConnection.connect(); 
         if (httpConnection.getResponseCode() == 204){ 
          //internet is avialable  
          return; 
         }else{ 
          Log.e(TAG, "Internet connection error: " + httpConnection.getResponseCode() 
            + ": " + httpConnection.getResponseMessage()); 
         } 
        } catch (IOException e) { 
         Log.e(TAG, "Internet connection error: " + e); 
        } 
関連する問題