このコードは常にtrueを返します。これはLoginボタンが押されると呼び出されます。私は最初にwifi接続(エミュレータ上)で試しました。それは本当に戻って、その後私は無線LANを切断してから試してみました。それでも真実を返します。インターネットが利用できない場合でも、Android networkinfoは常にtrueを返します。
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
// if no network is available networkInfo will be null
// otherwise check if we are connected
if (networkInfo != null && networkInfo.isConnected()) {
State network = networkInfo.getState();
Log.d("here", "true");
return (network == NetworkInfo.State.CONNECTED || network == NetworkInfo.State.CONNECTING);
}
Log.d("here1", "false");
return false;
}
インターネットが利用可能かどうかを直接知る方法はありませんか? –
ありません。問題は、ここでは「ネットワーク」が定義の問題であるということです。イントラネットにフルアクセスしてWi-Fiに接続することができます。これはアプリにとって大丈夫です。非常に制限の厳しいファイアウォールの背後に座って、たとえばwww.facebook.comをブロックして従業員の生産性を維持することもできます。 興味のあるサービス、または一般的なURLを明示的にチェックする必要があります。 私のConnectivityServiceはロケット科学ではありません。ちょっとした時間があれば、私はそれをきれいにして投稿します。おそらく月曜日より前です。 – 323go
偉大な答え私はあなたが私が夢中になったので、それが合うときに私はあなたの答えを引用してください – shareef