私のアプリは、起動時にネットワーク接続をチェックします。Android バージョン 2.3 から 4.4 では、以下の方法がうまく機能します (エミュレーターでも実際のデバイスでも)。Android L Preview Emulator では、メソッドは false に戻ります。
これが私のコードです:
// ===============================================================
public static boolean haveNetworkConnection(Context ctx) {
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;
boolean haveConnectedEthernet = false;
ConnectivityManager cm = (ConnectivityManager) ctx
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo) {
// String con = ni.isConnected() ? "Connected" : "Not Connected";
if (!haveConnectedWifi) {
if (ni.getTypeName().equalsIgnoreCase("WIFI"))
if (ni.isConnected())
haveConnectedWifi = true;
}
if (!haveConnectedMobile) {
if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
if (ni.isConnected())
haveConnectedMobile = true;
}
if (!haveConnectedEthernet) {
if (ni.getTypeName().equalsIgnoreCase("ETHERNET"))
if (ni.isConnected())
haveConnectedEthernet = true;
}
StringBuilder sb = new StringBuilder();
sb.append(ni.getTypeName()).append(" ").append(ni);
}
return haveConnectedWifi || haveConnectedMobile
|| haveConnectedEthernet;
}
StringBuilder
このコードは私が作成したものではありません。継承したプロジェクトに含まれています。動作するので、何も変更する必要はありません。動作方法に API の変更があるかどうかは誰にもわかりませConnectivityManager
んか? 開発サイトでAPI の概要の変更を確認しましたが、これに関する関連情報はありませんでした。