2017-02-21 15 views
1

無線LANがオフで、モバイルネットワークがオフの場合は検出できますが、両方がオンの場合でもネットワークが存在しません。今私はどのように私はモバイルデータとWIFIがオンまたはオフになっているときにインターネットの不在を検証することができます知る必要があります。インターネットのアンドロイド活動の存在を検証する方法

私のコード:

NetworkInfo nf; 


ConnectivityManager cn=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
    nf=cn.getActiveNetworkInfo(); 

      if(nf != null && nf.isConnected()==true) 
      { 

     // switch to new activity 
      } 
+0

あなたのアプリケーションが「接続チェックアプリ」などのものかどうかはわかりませんが、通常のアプリケーションの場合は、テストするアプリの「仕事」ではないことをお勧めしますインターネット接続です。とにかくそれを処理しなければならないので、タイムアウトしてこのケースを適切に処理してください。 – JacksOnF1re

+0

@ JacksOnF1re既存のインターネットのチェックを担当するもの – user3518835

答えて

0

私はこれを使用していますが、それは、これまであなたがNetworkUtilクラスでそれを入れて、接続性を確認するための静的メソッドを使用することができます

public static boolean isOnline() { 
     InetAddress inetAddress = null; 
     try { 
      Future<InetAddress> future = Executors.newSingleThreadExecutor().submit(new Callable<InetAddress>() { 
       @Override 
       public InetAddress call() { 
        try { 
         return InetAddress.getByName("google.com"); 
        } catch (UnknownHostException e) { 
         return null; 
        } 
       } 
      }); 
      inetAddress = future.get(2000, TimeUnit.MILLISECONDS); 
      future.cancel(true); 
     } catch (InterruptedException | ExecutionException e) { 
      e.printStackTrace(); 
     } catch (TimeoutException e) { 
      e.printStackTrace(); 
     } 
     return inetAddress != null && !inetAddress.equals(""); 
    } 

正常に動作します。

+0

モバイルデータやWi-Fiをオフにすると同じ問題ですが、正常に動作しますが、wifiやモバイルデータがオンであってもインターネットが見つからない場合はコードが検出できません – user3518835

+0

@ user3518835ここにコード以外のインターネットが存在しないかどうかをどうやって確認しますか? –

+0

'if(isOnline){//アクティビティ2に行く} else {// Toast .." Internet is required "} public static boolean isOnline(){....}' wifiは現在スーパーですが、モバイルデータがない場合でもモバイルデータがオンの場合、モバイルネットワークがアクティビティ2に切り替える理由を知っています。 – user3518835

0

あなたはあなたの接続を確認するためにgoogle.comにpingを試みることができます。あなたはここでスタックオーバーフローのトピックがあります。How to Ping External IP from Java Android

関連する問題