FileDocCategorySizeDatePackage
NetworkIdentity.javaAPI DocAndroid 5.1 API6719Thu Mar 12 22:22:10 GMT 2015android.net

NetworkIdentity

public class NetworkIdentity extends Object implements Comparable
Network definition that includes strong identity. Analogous to combining {@link NetworkInfo} and an IMSI.
hide

Fields Summary
private static final String
TAG
public static final boolean
COMBINE_SUBTYPE_ENABLED
When enabled, combine all {@link #mSubType} together under {@link #SUBTYPE_COMBINED}.
public static final int
SUBTYPE_COMBINED
final int
mType
final int
mSubType
final String
mSubscriberId
final String
mNetworkId
final boolean
mRoaming
Constructors Summary
public NetworkIdentity(int type, int subType, String subscriberId, String networkId, boolean roaming)


     
                      
        mType = type;
        mSubType = COMBINE_SUBTYPE_ENABLED ? SUBTYPE_COMBINED : subType;
        mSubscriberId = subscriberId;
        mNetworkId = networkId;
        mRoaming = roaming;
    
Methods Summary
public static android.net.NetworkIdentitybuildNetworkIdentity(android.content.Context context, NetworkState state)
Build a {@link NetworkIdentity} from the given {@link NetworkState}, assuming that any mobile networks are using the current IMSI.

        final int type = state.networkInfo.getType();
        final int subType = state.networkInfo.getSubtype();

        String subscriberId = null;
        String networkId = null;
        boolean roaming = false;

        if (isNetworkTypeMobile(type)) {
            if (state.subscriberId == null) {
                Slog.w(TAG, "Active mobile network without subscriber!");
            }

            subscriberId = state.subscriberId;
            roaming = state.networkInfo.isRoaming();

        } else if (type == TYPE_WIFI) {
            if (state.networkId != null) {
                networkId = state.networkId;
            } else {
                final WifiManager wifi = (WifiManager) context.getSystemService(
                        Context.WIFI_SERVICE);
                final WifiInfo info = wifi.getConnectionInfo();
                networkId = info != null ? info.getSSID() : null;
            }
        }

        return new NetworkIdentity(type, subType, subscriberId, networkId, roaming);
    
public intcompareTo(android.net.NetworkIdentity another)

        int res = Integer.compare(mType, another.mType);
        if (res == 0) {
            res = Integer.compare(mSubType, another.mSubType);
        }
        if (res == 0 && mSubscriberId != null && another.mSubscriberId != null) {
            res = mSubscriberId.compareTo(another.mSubscriberId);
        }
        if (res == 0 && mNetworkId != null && another.mNetworkId != null) {
            res = mNetworkId.compareTo(another.mNetworkId);
        }
        if (res == 0) {
            res = Boolean.compare(mRoaming, another.mRoaming);
        }
        return res;
    
public booleanequals(java.lang.Object obj)

        if (obj instanceof NetworkIdentity) {
            final NetworkIdentity ident = (NetworkIdentity) obj;
            return mType == ident.mType && mSubType == ident.mSubType && mRoaming == ident.mRoaming
                    && Objects.equals(mSubscriberId, ident.mSubscriberId)
                    && Objects.equals(mNetworkId, ident.mNetworkId);
        }
        return false;
    
public java.lang.StringgetNetworkId()

        return mNetworkId;
    
public booleangetRoaming()

        return mRoaming;
    
public intgetSubType()

        return mSubType;
    
public java.lang.StringgetSubscriberId()

        return mSubscriberId;
    
public intgetType()

        return mType;
    
public inthashCode()

        return Objects.hash(mType, mSubType, mSubscriberId, mNetworkId, mRoaming);
    
public static java.lang.StringscrubSubscriberId(java.lang.String subscriberId)
Scrub given IMSI on production builds.

        if ("eng".equals(Build.TYPE)) {
            return subscriberId;
        } else if (subscriberId != null) {
            // TODO: parse this as MCC+MNC instead of hard-coding
            return subscriberId.substring(0, Math.min(6, subscriberId.length())) + "...";
        } else {
            return "null";
        }
    
public static java.lang.String[]scrubSubscriberId(java.lang.String[] subscriberId)
Scrub given IMSI on production builds.

        if (subscriberId == null) return null;
        final String[] res = new String[subscriberId.length];
        for (int i = 0; i < res.length; i++) {
            res[i] = NetworkIdentity.scrubSubscriberId(subscriberId[i]);
        }
        return res;
    
public java.lang.StringtoString()

        final StringBuilder builder = new StringBuilder("{");
        builder.append("type=").append(getNetworkTypeName(mType));
        builder.append(", subType=");
        if (COMBINE_SUBTYPE_ENABLED) {
            builder.append("COMBINED");
        } else if (ConnectivityManager.isNetworkTypeMobile(mType)) {
            builder.append(TelephonyManager.getNetworkTypeName(mSubType));
        } else {
            builder.append(mSubType);
        }
        if (mSubscriberId != null) {
            builder.append(", subscriberId=").append(scrubSubscriberId(mSubscriberId));
        }
        if (mNetworkId != null) {
            builder.append(", networkId=").append(mNetworkId);
        }
        if (mRoaming) {
            builder.append(", ROAMING");
        }
        return builder.append("}").toString();