更新: 基本的に、自分のネットワークがプライベート ネットワークであるか、外部の世界、つまりインターネットに接続されているかを確認する必要があります。たとえば、私は WiFi ネットワークに接続していますが、ルーターのインターネット回線が接続されていません。そのため、ネットワークは接続されていますが、インターネットは利用できません。
Android アプリケーションでネットワークの詳細を表示する必要がある
- (a) n/w が利用可能かどうか
- (b) インターネット設備の有無
現在、私は www.google.com が常にアップしており、コードのピースの下にあるだけで正常に動作すると想定しています。しかし、このソリューションは遅く、www.google.com が常に稼働しているという前提に基づいています。
ネットワーク上でインターネット機能が利用可能かどうかを確認するためのより良い代替手段はありますか?
public static boolean isConnected(Context context){
NetworkInfo info = Connectivity.getNetworkInfo(context);
return (info != null && info.isConnected());
}
public boolean checkInternetConnectivity() {
try {
HttpURLConnection urlc = (HttpURLConnection) (new URL(
"http://www.google.com").openConnection());
urlc.setRequestProperty("User-Agent", "Test");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(3000);
urlc.setReadTimeout(4000);
urlc.connect();
isInterNetAvailable = true;
return (urlc.getResponseCode() == 200);
} catch (IOException e) {
isInterNetAvailable = false;
return (false);
}
}
public String getNWConnectivityText() {
if (isConnected(getSherlockActivity()) == true) {
if (true == checkInternetConnectivity()) {
return ""N/W is connected and Internet is working!";
} else {
return "N/W is connected but Internet is NOT working!";
}
} else {
return "N/W is not connected!";
}
}