andoridでネットワークが生きてるかどうかを調べる方法はありますが、時にIPだけ取れて外にでれない状態(有料のAPをつかんじゃった場合とか)だと、普通に調べただけではうまくいきません。そんなときのチェック用コードです。
Proxyとかが刺さってる場合で、ICMPはOKだけどHTTPはだめな場合はもう少しまじめに書かないといけませんが、それはそれで遅いコードになるのでたいていはこれでいけると思います。
public static boolean checkNetwork(Context ctx) {
ConnectivityManager cm = (ConnectivityManager) ctx
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni != null) {
if (!cm.getActiveNetworkInfo().isConnected()) {
messageDialog(ctx, R.string.mnoconnectiontitle,
R.string.mnoconnection);
return false;
}
} else {
messageDialog(ctx, R.string.mnoconnectiontitle,
R.string.mnoconnection);
return false;
}
String addressText = “www.adown.biz”;
InetAddress address;
try {
address = InetAddress.getByName(addressText);
// Reachability のチェック ICMP が使用される
return address.isReachable(2000);
} catch (UnknownHostException e) {
return false;
} catch (Exception e) {
// TODO 自動生成された catch ブロック
return false;
}
}
//外に出れたらtrue
public static boolean checkNetwork(Context ctx) {
ConnectivityManager cm = (ConnectivityManager) ctx
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni != null) {
if (!cm.getActiveNetworkInfo().isConnected()) {
return false;
}
} else {
return false;
}
String addressText = “www.google.com”; //ここは自社サイトとかにしましょう
InetAddress address;
try {
address = InetAddress.getByName(addressText);
return address.isReachable(2000);
} catch (UnknownHostException e) {
return false;
} catch (Exception e) {
return false;
}
}