2012-04-11 46 views
1

Android搭載端末がインターネット接続に接続されているかどうかを確認するにはどうすればよいですか?現在、私は以下のコード使用しています:デバイスがルータに接続されている場合のインターネット接続の可用性を確認するにはどうすればよいですか?

ConnectivityManager connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); 
boolean isConnectedToNetwork = (networkInfo != null && networkInfo.isConnected()); 

はしかし、上記のコードの問題は、デバイスがネットワークに接続されている場合にのみチェックするということです。インターネットに接続できるかどうかはチェックしません。たとえば、デバイスがインターネットにアクセスできないルータに接続されている場合、技術的にはルータ経由でネットワークに接続されているため、デバイスはisConnectedToNetworkの場合でもtrueを返します。ルータがインターネットに接続していないことだけです。

私が見たことは、ダウンする可能性が非常に低いウェブサイトに接続しようとすることです。たとえば、www.google.comです。しかし、これはこれのための適切な解決策ではないと私は思います。まず、ユーザーがGPRSを使用していて、インターネット使用のために1 KBあたりの料金がある場合、彼はこれに追加料金を負担することになります。第二に、私はこのような第三者のWebサイトを使用することは倫理的だとは思わない。これは本当にインターネット接続を確認する唯一の方法ですか、別の解決策を提案することはできますか?彼らの同意なしにGoogleのように接続するのは本当に大丈夫ですか?デバイスにインターネット接続があるかどうかを確認するにはどうすればよいですか?インターネットが働いているかどうかをチェックする

答えて

1

使用ConnectivityManager.TYPE_WIFI

ConnectivityManager connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    boolean isConnectedToNetwork = (networkInfo != null && networkInfo.isConnected()); 
+1

こんにちは。返信いただきありがとうございます。ただし、上記の場合は、デバイスがWi-Fiインターフェイスに接続されているかどうかだけが確認されます。インターネット接続が利用可能かどうかをチェックしません。 – Arci

0
public boolean checkInternetConnection() { 

    ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    if (conMgr.getActiveNetworkInfo() != null 
      && conMgr.getActiveNetworkInfo().isAvailable() 
      && conMgr.getActiveNetworkInfo().isConnected()) { 
     Log.d("Internet Connection Present",""); 
     isFound=true; 
    } else { 
     Log.d("Internet Connection Not Present",""); 
     isFound= false; 
    } 
    return isFound; 
} 
+1

返事をありがとう。ただし、isConnected()は、デバイスがネットワークに接続されているかどうかのみをチェックします。デバイスがインターネットに接続しているかどうかを判断することはできません。たとえば、ルータに接続している場合、インターネット接続があってもisConnected()は常にtrueを返します。 – Arci

+0

もしあなたが確かなのであれば、gprs経由でインターネットを使用している場合は、PhoneStateListnerとの接続をチェックすることができます。 – Sandeep

+0

@Arci isConnected()は、デバイスはルータに接続されていますが、ドキュメントによると: "ネットワーク接続が存在し、接続を確立してデータを渡すことが可能かどうかを示します。データトランザクションを実行しようとする前に必ず呼び出してください。 –

2
public boolean isOnline(Context context) { 
    try { 
     ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (cm.getActiveNetworkInfo().isConnectedOrConnecting()) { 
      URL url = new URL("http://www.ripansekhon.blogspot.com"); 
      HttpURLConnection urlc = (HttpURLConnection) url .openConnection(); 
      urlc.setRequestProperty("User-Agent", "test"); 
      urlc.setRequestProperty("Connection", "close"); 
      urlc.setConnectTimeout(1000); // mTimeout is in seconds 
      urlc.connect(); 
      if (urlc.getResponseCode() == 200) { 
       return true; 
      } else { 
       return false; 
      } 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return false; 
} 

チェックこの機能は、ウェブサイトを意味 開いたり、されていない、このコードがインターネット接続がある望んでいるすべての人々を役に立てば幸いネットワーク以外にも接続されているかどうか

関連する問題