Source code
package android.support.v4.net;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Build.VERSION;
public class ConnectivityManagerCompat {
private static final ConnectivityManagerCompatImpl IMPL;
interface ConnectivityManagerCompatImpl {
boolean isActiveNetworkMetered(ConnectivityManager connectivityManager);
}
static class BaseConnectivityManagerCompatImpl implements ConnectivityManagerCompatImpl {
BaseConnectivityManagerCompatImpl() {
}
public boolean isActiveNetworkMetered(ConnectivityManager cm) {
NetworkInfo info = cm.getActiveNetworkInfo();
if (info == null) {
return true;
}
switch (info.getType()) {
case 0:
return true;
case 1:
return false;
default:
return true;
}
}
}
static class GingerbreadConnectivityManagerCompatImpl implements ConnectivityManagerCompatImpl {
GingerbreadConnectivityManagerCompatImpl() {
}
public boolean isActiveNetworkMetered(ConnectivityManager cm) {
return ConnectivityManagerCompatGingerbread.isActiveNetworkMetered(cm);
}
}
static class HoneycombMR2ConnectivityManagerCompatImpl implements ConnectivityManagerCompatImpl {
HoneycombMR2ConnectivityManagerCompatImpl() {
}
public boolean isActiveNetworkMetered(ConnectivityManager cm) {
return ConnectivityManagerCompatHoneycombMR2.isActiveNetworkMetered(cm);
}
}
static class JellyBeanConnectivityManagerCompatImpl implements ConnectivityManagerCompatImpl {
JellyBeanConnectivityManagerCompatImpl() {
}
public boolean isActiveNetworkMetered(ConnectivityManager cm) {
return ConnectivityManagerCompatJellyBean.isActiveNetworkMetered(cm);
}
}
static {
if (VERSION.SDK_INT >= 16) {
IMPL = new JellyBeanConnectivityManagerCompatImpl();
} else if (VERSION.SDK_INT >= 13) {
IMPL = new HoneycombMR2ConnectivityManagerCompatImpl();
} else if (VERSION.SDK_INT >= 8) {
IMPL = new GingerbreadConnectivityManagerCompatImpl();
} else {
IMPL = new BaseConnectivityManagerCompatImpl();
}
}
public static boolean isActiveNetworkMetered(ConnectivityManager cm) {
return IMPL.isActiveNetworkMetered(cm);
}
public static NetworkInfo getNetworkInfoFromBroadcast(ConnectivityManager cm, Intent intent) {
NetworkInfo info = (NetworkInfo) intent.getParcelableExtra("networkInfo");
if (info != null) {
return cm.getNetworkInfo(info.getType());
}
return null;
}
}