アンドロイドエミュレータでのインターネット接続は常に接続状態を表示します

? ganesh @ | Original: StackOverFlow
---

こんにちは 私は私のアンドロイドエミュレータでインターネット接続を確認するために多くの方法で試み

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

   NetworkInfo info= conMgr.getActiveNetworkInfo();  

         if(info != null || info.isConnected()) {  
              Log.v("NetworkInfo","Connected State");  
         }  
        else{  
            Log.v("NetworkInfo","Not Connected state");  
            Log.v("Reason",info.getReason());  
        } 

私は私のシステムでインターネット接続を無効にしても、自分のコードが接続状態を表示しているようだ 私は、これは動作する可能性が推測

 if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED
        ||  conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED  ) {

      Log.v("Congr","Connection Present");

    }
    else if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED
        ||  conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED) {

      Log.v("conMgr"," No Connection");

    } 

しかし上記のコードは、 「接続プレゼント"も、私は抜いインターネットケーブルが表示されます。 ごしてヘルプには、この.Iを行うための正しい方法を見つけるために私のマニフェストファイルでACCESS_NETWORK_STATEとインターネットアクセス許可を持っている

---

Top 5 答え

1breakingart.com @

1インターネットのケーブルを切断するとは関係ありません。エミュレータでインターネット上でのオン/オフを切り替えるためにF8キーを使用してください

最初のコードでは、 2本の論理は間違っている:

if(info != null || info.isConnected()) {  
              Log.v("NetworkInfo","Connected State");  
         } 

It should be:

if(info != null && info.isConnected()) {  
              Log.v("NetworkInfo","Connected State");  
         } 

あなたが使用している場合は||これが結果です。 A )の情報がNULLの場合、 info.isConnected ()がクラッシュします 情報がnullでないときb)に、あなたは常に接続状態が表示されます

しかし、あなたは、コードが文句を言わない、完全に正確であることを修正する場合でも、 ( 4を参照)

第二のコードでは図3に示すように、この論理は間違っている:

 else if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED
        ||  conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED) {

      Log.v("conMgr"," No Connection");

    } 

should be:

 else {

      Log.v("conMgr"," No Connection");

    } 

なぜ?ので取り付け、取り外しよりも多くの状態が存在する。

しかし、あなたは、コードが文句を言わない、完全に正確であることを修正する場合でも、 ( 4を参照)

4これはエミュレータとデバイス上で動作します。

connected = (   conMgr.getActiveNetworkInfo() != null &&
            conMgr.getActiveNetworkInfo().isAvailable() &&
            conMgr.getActiveNetworkInfo().isConnected()   )

WIFIが無効になっているときTRUEを返すことができますこのをisConnectedなし - isAvailableの使用に注意してください。

この情報がお役に立てば幸い!

2user1023110 @

エミュレータがホスティングPCを介してウェブに接続されている場合は実際には、これはあなたを教えてくれない。あなたがPC上でそれを実行し、 PCの無線がオフになっている場合、それはまだエミュレータがオンライン状態で、そのと考えている限り、 trueを返します。エミュレータが本当にあるかどうか、私はオンライン確実に決定することができました唯一の方法は、ページの取得と、それが成功したかどうかを確認しようとすることです。