WiFiまたはCellを介してインターネットを検証するための最良の手法を探しています。あるAPに接続しているが、インターネットが存在する場合は接続していないとします。
今日私は使用することによって2つのオプションがありますHttpURLConnection
:
- CDNサーバーからファイルをダウンロード
- google.comなどの信頼できるWebページにリクエストを送信し、応答200を取得します。
他の方法はありますか?
すべての提案をいただければ幸いです。
テレフォニーマネージャを参照してください。getDataSate()メソッドには4つの状態があります
DATA_DISCONNECTED
DATA_CONNECTING
DATA_CONNECTED
DATA_SUSPENDED
テレフォニーマネージャーのインスタンスを取得できます-
TelephonyManager tm = (TelephonyManager)getSystemService(Telephony_Service);
あるレベルでは、「インターネットエンドポイントにアクセスする能力」は「インターネットアクセスを持っている」と同等です。あなたはいくつかのアルゴリズムを考えることができます:
for (Endpoint site : theEntireInternet) {
if (can connect to site) return true;
}
return false;
これにより、最終的に接続が確立されます。言い換えれば、任意の1つのサイトに接続できることは十分な肯定的な証拠ですが、理論的には、非接続性を証明するためにすべてのサイトを列挙する必要があります。実際には、いくつかの主要なサイトをチェックするだけで明らかに十分です。それ以外の場合(ネットワークやISPなどに関する何らかのメタ情報がない場合は利用できません)、インターネットに接続する以外に「インターネット」接続を決定的に示す方法はありません。
もちろん、あなたがコメントしているように、さまざまなインターネットベースのアプリケーションをチェックすることも害にはなりません。これは、同等の手法とは異なる形式です。
ここにあります:
セルネットワーク上のデータ接続の状態を確認するには
WIFIの場合は、このパブリッククラスWifiInfoを使用します。そこから、getIpAddress()またはgetDetailedStateOf(...)を使用できます。お役に立てば幸いです 。