ネットワーク関連の情報は、android.net.ConnectivityManager
の getActiveNetworkInfo()
メソッドで取得できる NetworkInfo
オブジェクトから参照できます。
NetworkInfo
オブジェクトは以下のように取得します。
// import android.net.ConnectivityManager;
// import android.net.NetworkInfo;
ConnectivityManager manager =
(ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
if (manager == null) {
return false;
}
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
if (networkInfo == null) {
return false;
}
NetworkInfo
を取得するためには、AndroidManifest.xml
に以下のように uses-permission
の設定が必要です。
<manifest ...>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
...
</manifest>
NetworkInfo
オブジェクトの toString()
メソッドで、ネットワーク情報の文字列表現を取得できます。
System.out.println(networkInfo.toString());
NetworkInfo:
type: ETHERNET[],
state: CONNECTED/CONNECTED,
reason: eth0 DHCP success,
extra: (none),
roaming: false,
failover: false,
isAvailable: false,
iPaddress: 192.168.3.98
if (networkInfo.isConnected()) {
// Connected.
}
これは、以下のようにするのと同等です。
if (networkInfo.getState() == NetworkInfo.State.CONNECTED) {
// Connected
}
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
switch (networkInfo.getType()) {
case ConnectivityManager.TYPE_WIFI:
// WiFi network
break;
case ConnectivityManager.TYPE_ETHERNET:
// Ethernet
break;
default:
// Unknown
break;
}
String typeName = networkInfo.getTypeName();
戻り値としては、
が static final String
で定義されていますが、@hide
で定義されているので、これらの定数は参照しない方が無難です。
String ipAddr = networkInfo.getIpAddress();
if (ipAddr == null) {
// No address.
}