Loading api/system-current.txt +19 −0 Original line number Diff line number Diff line Loading @@ -5496,6 +5496,7 @@ package android.telephony { method public int getRadioPowerState(); method public int getSimApplicationState(); method public int getSimCardState(); method public int getSupportedRadioAccessFamily(); method public java.util.List<android.telephony.TelephonyHistogram> getTelephonyHistograms(); method public android.telephony.UiccSlotInfo[] getUiccSlotsInfo(); method public android.os.Bundle getVisualVoicemailSettings(); Loading Loading @@ -5561,6 +5562,24 @@ package android.telephony { field public static final int NETWORK_MODE_TDSCDMA_WCDMA = 14; // 0xe field public static final int NETWORK_MODE_WCDMA_ONLY = 2; // 0x2 field public static final int NETWORK_MODE_WCDMA_PREF = 0; // 0x0 field public static final int NETWORK_TYPE_BITMASK_1xRTT = 128; // 0x80 field public static final int NETWORK_TYPE_BITMASK_CDMA = 16; // 0x10 field public static final int NETWORK_TYPE_BITMASK_EDGE = 4; // 0x4 field public static final int NETWORK_TYPE_BITMASK_EHRPD = 16384; // 0x4000 field public static final int NETWORK_TYPE_BITMASK_EVDO_0 = 32; // 0x20 field public static final int NETWORK_TYPE_BITMASK_EVDO_A = 64; // 0x40 field public static final int NETWORK_TYPE_BITMASK_EVDO_B = 4096; // 0x1000 field public static final int NETWORK_TYPE_BITMASK_GPRS = 2; // 0x2 field public static final int NETWORK_TYPE_BITMASK_GSM = 65536; // 0x10000 field public static final int NETWORK_TYPE_BITMASK_HSDPA = 256; // 0x100 field public static final int NETWORK_TYPE_BITMASK_HSPA = 1024; // 0x400 field public static final int NETWORK_TYPE_BITMASK_HSPAP = 32768; // 0x8000 field public static final int NETWORK_TYPE_BITMASK_HSUPA = 512; // 0x200 field public static final int NETWORK_TYPE_BITMASK_LTE = 8192; // 0x2000 field public static final int NETWORK_TYPE_BITMASK_LTE_CA = 524288; // 0x80000 field public static final int NETWORK_TYPE_BITMASK_TD_SCDMA = 131072; // 0x20000 field public static final int NETWORK_TYPE_BITMASK_UMTS = 8; // 0x8 field public static final int NETWORK_TYPE_BITMASK_UNKNOWN = 1; // 0x1 field public static final int RADIO_POWER_OFF = 0; // 0x0 field public static final int RADIO_POWER_ON = 1; // 0x1 field public static final int RADIO_POWER_UNAVAILABLE = 2; // 0x2 Loading telephony/java/android/telephony/RadioAccessFamily.java +99 −24 Original line number Diff line number Diff line Loading @@ -29,29 +29,32 @@ import com.android.internal.telephony.RILConstants; */ public class RadioAccessFamily implements Parcelable { // Radio Access Family /** * TODO: get rid of RAF definition in RadioAccessFamily and * use {@link TelephonyManager.NetworkTypeBitMask} */ // 2G public static final int RAF_UNKNOWN = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN); public static final int RAF_GSM = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GSM); public static final int RAF_GPRS = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GPRS); public static final int RAF_EDGE = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EDGE); public static final int RAF_IS95A = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95A); public static final int RAF_IS95B = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95B); public static final int RAF_1xRTT = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT); public static final int RAF_UNKNOWN = TelephonyManager.NETWORK_TYPE_BITMASK_UNKNOWN; public static final int RAF_GSM = TelephonyManager.NETWORK_TYPE_BITMASK_GSM; public static final int RAF_GPRS = TelephonyManager.NETWORK_TYPE_BITMASK_GPRS; public static final int RAF_EDGE = TelephonyManager.NETWORK_TYPE_BITMASK_EDGE; public static final int RAF_IS95A = TelephonyManager.NETWORK_TYPE_BITMASK_CDMA; public static final int RAF_IS95B = TelephonyManager.NETWORK_TYPE_BITMASK_CDMA; public static final int RAF_1xRTT = TelephonyManager.NETWORK_TYPE_BITMASK_1xRTT; // 3G public static final int RAF_EVDO_0 = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0); public static final int RAF_EVDO_A = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_A); public static final int RAF_EVDO_B = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_B); public static final int RAF_EHRPD = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD); public static final int RAF_HSUPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSUPA); public static final int RAF_HSDPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSDPA); public static final int RAF_HSPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPA); public static final int RAF_HSPAP = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPAP); public static final int RAF_UMTS = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_UMTS); public static final int RAF_TD_SCDMA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA); public static final int RAF_EVDO_0 = TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_0; public static final int RAF_EVDO_A = TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_A; public static final int RAF_EVDO_B = TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_B; public static final int RAF_EHRPD = TelephonyManager.NETWORK_TYPE_BITMASK_EHRPD; public static final int RAF_HSUPA = TelephonyManager.NETWORK_TYPE_BITMASK_HSUPA; public static final int RAF_HSDPA = TelephonyManager.NETWORK_TYPE_BITMASK_HSDPA; public static final int RAF_HSPA = TelephonyManager.NETWORK_TYPE_BITMASK_HSPA; public static final int RAF_HSPAP = TelephonyManager.NETWORK_TYPE_BITMASK_HSPAP; public static final int RAF_UMTS = TelephonyManager.NETWORK_TYPE_BITMASK_UMTS; public static final int RAF_TD_SCDMA = TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA; // 4G public static final int RAF_LTE = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_LTE); public static final int RAF_LTE_CA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_LTE_CA); public static final int RAF_LTE = TelephonyManager.NETWORK_TYPE_BITMASK_LTE; public static final int RAF_LTE_CA = TelephonyManager.NETWORK_TYPE_BITMASK_LTE_CA; // Grouping of RAFs // 2G Loading @@ -74,9 +77,9 @@ public class RadioAccessFamily implements Parcelable { * Constructor. * * @param phoneId the phone ID * @param radioAccessFamily the phone radio access family defined * in RadioAccessFamily. It's a bit mask value to represent * the support type. * @param radioAccessFamily the phone radio access family bitmask based on * {@link TelephonyManager.NetworkTypeBitMask}. It's a bit mask value to represent the support * type. */ @UnsupportedAppUsage public RadioAccessFamily(int phoneId, int radioAccessFamily) { Loading @@ -100,7 +103,7 @@ public class RadioAccessFamily implements Parcelable { * @return radio access family */ @UnsupportedAppUsage public int getRadioAccessFamily() { public @TelephonyManager.NetworkTypeBitMask int getRadioAccessFamily() { return mRadioAccessFamily; } Loading Loading @@ -388,4 +391,76 @@ public class RadioAccessFamily implements Parcelable { } return result; } /** * convert RAF from {@link ServiceState.RilRadioTechnology} bitmask to * {@link TelephonyManager.NetworkTypeBitMask}, the bitmask represented by * {@link TelephonyManager.NetworkType}. Reasons are {@link TelephonyManager.NetworkType} are * public while {@link ServiceState.RilRadioTechnology} are hidden. We * don't want to expose two sets of definition to public. * * @param raf bitmask represented by {@link ServiceState.RilRadioTechnology} * @return {@link TelephonyManager.NetworkTypeBitMask} */ public static int convertToNetworkTypeBitMask(int raf) { int networkTypeRaf = 0; if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GSM)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_GSM; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GPRS)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_GPRS; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EDGE)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_EDGE; } // convert both IS95A/IS95B to CDMA as network mode doesn't support CDMA if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95A)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_CDMA; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95B)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_CDMA; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_1xRTT; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_0; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_A)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_A; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_B)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_B; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_EHRPD; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSUPA)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_HSUPA; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSDPA)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_HSDPA; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPA)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_HSPA; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPAP)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_HSPAP; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_UMTS)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_UMTS; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_LTE)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_LTE; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_LTE_CA)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_LTE_CA; } return (networkTypeRaf == 0) ? TelephonyManager.NETWORK_TYPE_UNKNOWN : networkTypeRaf; } } telephony/java/android/telephony/TelephonyManager.java +164 −0 Original line number Diff line number Diff line Loading @@ -8820,4 +8820,168 @@ public class TelephonyManager { return isEnabled; } /** @hide */ @Retention(RetentionPolicy.SOURCE) @IntDef(flag = true, prefix = {"NETWORK_TYPE_BITMASK_"}, value = {NETWORK_TYPE_BITMASK_UNKNOWN, NETWORK_TYPE_BITMASK_GSM, NETWORK_TYPE_BITMASK_GPRS, NETWORK_TYPE_BITMASK_EDGE, NETWORK_TYPE_BITMASK_CDMA, NETWORK_TYPE_BITMASK_1xRTT, NETWORK_TYPE_BITMASK_EVDO_0, NETWORK_TYPE_BITMASK_EVDO_A, NETWORK_TYPE_BITMASK_EVDO_B, NETWORK_TYPE_BITMASK_EHRPD, NETWORK_TYPE_BITMASK_HSUPA, NETWORK_TYPE_BITMASK_HSDPA, NETWORK_TYPE_BITMASK_HSPA, NETWORK_TYPE_BITMASK_HSPAP, NETWORK_TYPE_BITMASK_UMTS, NETWORK_TYPE_BITMASK_TD_SCDMA, NETWORK_TYPE_BITMASK_LTE, NETWORK_TYPE_BITMASK_LTE_CA, }) public @interface NetworkTypeBitMask {} // 2G /** * network type bitmask unknown. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_UNKNOWN = (1 << NETWORK_TYPE_UNKNOWN); /** * network type bitmask indicating the support of radio tech GSM. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_GSM = (1 << NETWORK_TYPE_GSM); /** * network type bitmask indicating the support of radio tech GPRS. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_GPRS = (1 << NETWORK_TYPE_GPRS); /** * network type bitmask indicating the support of radio tech EDGE. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_EDGE = (1 << NETWORK_TYPE_EDGE); /** * network type bitmask indicating the support of radio tech CDMA(IS95A/IS95B). * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_CDMA = (1 << NETWORK_TYPE_CDMA); /** * network type bitmask indicating the support of radio tech 1xRTT. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_1xRTT = (1 << NETWORK_TYPE_1xRTT); // 3G /** * network type bitmask indicating the support of radio tech EVDO 0. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_EVDO_0 = (1 << NETWORK_TYPE_EVDO_0); /** * network type bitmask indicating the support of radio tech EVDO A. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_EVDO_A = (1 << NETWORK_TYPE_EVDO_A); /** * network type bitmask indicating the support of radio tech EVDO B. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_EVDO_B = (1 << NETWORK_TYPE_EVDO_B); /** * network type bitmask indicating the support of radio tech EHRPD. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_EHRPD = (1 << NETWORK_TYPE_EHRPD); /** * network type bitmask indicating the support of radio tech HSUPA. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_HSUPA = (1 << NETWORK_TYPE_HSUPA); /** * network type bitmask indicating the support of radio tech HSDPA. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_HSDPA = (1 << NETWORK_TYPE_HSDPA); /** * network type bitmask indicating the support of radio tech HSPA. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_HSPA = (1 << NETWORK_TYPE_HSPA); /** * network type bitmask indicating the support of radio tech HSPAP. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_HSPAP = (1 << NETWORK_TYPE_HSPAP); /** * network type bitmask indicating the support of radio tech UMTS. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_UMTS = (1 << NETWORK_TYPE_UMTS); /** * network type bitmask indicating the support of radio tech TD_SCDMA. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_TD_SCDMA = (1 << NETWORK_TYPE_TD_SCDMA); // 4G /** * network type bitmask indicating the support of radio tech LTE. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_LTE = (1 << NETWORK_TYPE_LTE); /** * network type bitmask indicating the support of radio tech LTE CA (carrier aggregation). * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_LTE_CA = (1 << NETWORK_TYPE_LTE_CA); /** * @return Modem supported radio access family bitmask {@link NetworkTypeBitMask} * * <p>Requires permission: {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE} or * that the calling app has carrier privileges (see {@link #hasCarrierPrivileges}). * @hide */ @SystemApi @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public @NetworkTypeBitMask int getSupportedRadioAccessFamily() { try { ITelephony telephony = getITelephony(); if (telephony != null) { return telephony.getRadioAccessFamily(getSlotIndex(), getOpPackageName()); } else { // This can happen when the ITelephony interface is not up yet. return NETWORK_TYPE_BITMASK_UNKNOWN; } } catch (RemoteException ex) { // This shouldn't happen in the normal case return NETWORK_TYPE_BITMASK_UNKNOWN; } catch (NullPointerException ex) { // This could happen before phone restarts due to crashing return NETWORK_TYPE_BITMASK_UNKNOWN; } } } telephony/java/com/android/internal/telephony/TelephonyPermissions.java +21 −0 Original line number Diff line number Diff line Loading @@ -455,6 +455,27 @@ public final class TelephonyPermissions { enforceCallingOrSelfCarrierPrivilege(subId, message); } /** * Ensure the caller (or self, if not processing an IPC) has * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE} or carrier privileges. * * @throws SecurityException if the caller does not have the required permission/privileges */ public static void enforeceCallingOrSelfReadPrivilegedPhoneStatePermissionOrCarrierPrivilege( Context context, int subId, String message) { if (context.checkCallingOrSelfPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) == PERMISSION_GRANTED) { return; } if (DBG) { Rlog.d(LOG_TAG, "No READ_PRIVILEDED_PHONE_STATE permission, " + "check carrier privilege next."); } enforceCallingOrSelfCarrierPrivilege(subId, message); } /** * Make sure the caller (or self, if not processing an IPC) has carrier privileges. * Loading Loading
api/system-current.txt +19 −0 Original line number Diff line number Diff line Loading @@ -5496,6 +5496,7 @@ package android.telephony { method public int getRadioPowerState(); method public int getSimApplicationState(); method public int getSimCardState(); method public int getSupportedRadioAccessFamily(); method public java.util.List<android.telephony.TelephonyHistogram> getTelephonyHistograms(); method public android.telephony.UiccSlotInfo[] getUiccSlotsInfo(); method public android.os.Bundle getVisualVoicemailSettings(); Loading Loading @@ -5561,6 +5562,24 @@ package android.telephony { field public static final int NETWORK_MODE_TDSCDMA_WCDMA = 14; // 0xe field public static final int NETWORK_MODE_WCDMA_ONLY = 2; // 0x2 field public static final int NETWORK_MODE_WCDMA_PREF = 0; // 0x0 field public static final int NETWORK_TYPE_BITMASK_1xRTT = 128; // 0x80 field public static final int NETWORK_TYPE_BITMASK_CDMA = 16; // 0x10 field public static final int NETWORK_TYPE_BITMASK_EDGE = 4; // 0x4 field public static final int NETWORK_TYPE_BITMASK_EHRPD = 16384; // 0x4000 field public static final int NETWORK_TYPE_BITMASK_EVDO_0 = 32; // 0x20 field public static final int NETWORK_TYPE_BITMASK_EVDO_A = 64; // 0x40 field public static final int NETWORK_TYPE_BITMASK_EVDO_B = 4096; // 0x1000 field public static final int NETWORK_TYPE_BITMASK_GPRS = 2; // 0x2 field public static final int NETWORK_TYPE_BITMASK_GSM = 65536; // 0x10000 field public static final int NETWORK_TYPE_BITMASK_HSDPA = 256; // 0x100 field public static final int NETWORK_TYPE_BITMASK_HSPA = 1024; // 0x400 field public static final int NETWORK_TYPE_BITMASK_HSPAP = 32768; // 0x8000 field public static final int NETWORK_TYPE_BITMASK_HSUPA = 512; // 0x200 field public static final int NETWORK_TYPE_BITMASK_LTE = 8192; // 0x2000 field public static final int NETWORK_TYPE_BITMASK_LTE_CA = 524288; // 0x80000 field public static final int NETWORK_TYPE_BITMASK_TD_SCDMA = 131072; // 0x20000 field public static final int NETWORK_TYPE_BITMASK_UMTS = 8; // 0x8 field public static final int NETWORK_TYPE_BITMASK_UNKNOWN = 1; // 0x1 field public static final int RADIO_POWER_OFF = 0; // 0x0 field public static final int RADIO_POWER_ON = 1; // 0x1 field public static final int RADIO_POWER_UNAVAILABLE = 2; // 0x2 Loading
telephony/java/android/telephony/RadioAccessFamily.java +99 −24 Original line number Diff line number Diff line Loading @@ -29,29 +29,32 @@ import com.android.internal.telephony.RILConstants; */ public class RadioAccessFamily implements Parcelable { // Radio Access Family /** * TODO: get rid of RAF definition in RadioAccessFamily and * use {@link TelephonyManager.NetworkTypeBitMask} */ // 2G public static final int RAF_UNKNOWN = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN); public static final int RAF_GSM = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GSM); public static final int RAF_GPRS = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GPRS); public static final int RAF_EDGE = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EDGE); public static final int RAF_IS95A = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95A); public static final int RAF_IS95B = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95B); public static final int RAF_1xRTT = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT); public static final int RAF_UNKNOWN = TelephonyManager.NETWORK_TYPE_BITMASK_UNKNOWN; public static final int RAF_GSM = TelephonyManager.NETWORK_TYPE_BITMASK_GSM; public static final int RAF_GPRS = TelephonyManager.NETWORK_TYPE_BITMASK_GPRS; public static final int RAF_EDGE = TelephonyManager.NETWORK_TYPE_BITMASK_EDGE; public static final int RAF_IS95A = TelephonyManager.NETWORK_TYPE_BITMASK_CDMA; public static final int RAF_IS95B = TelephonyManager.NETWORK_TYPE_BITMASK_CDMA; public static final int RAF_1xRTT = TelephonyManager.NETWORK_TYPE_BITMASK_1xRTT; // 3G public static final int RAF_EVDO_0 = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0); public static final int RAF_EVDO_A = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_A); public static final int RAF_EVDO_B = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_B); public static final int RAF_EHRPD = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD); public static final int RAF_HSUPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSUPA); public static final int RAF_HSDPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSDPA); public static final int RAF_HSPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPA); public static final int RAF_HSPAP = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPAP); public static final int RAF_UMTS = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_UMTS); public static final int RAF_TD_SCDMA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA); public static final int RAF_EVDO_0 = TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_0; public static final int RAF_EVDO_A = TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_A; public static final int RAF_EVDO_B = TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_B; public static final int RAF_EHRPD = TelephonyManager.NETWORK_TYPE_BITMASK_EHRPD; public static final int RAF_HSUPA = TelephonyManager.NETWORK_TYPE_BITMASK_HSUPA; public static final int RAF_HSDPA = TelephonyManager.NETWORK_TYPE_BITMASK_HSDPA; public static final int RAF_HSPA = TelephonyManager.NETWORK_TYPE_BITMASK_HSPA; public static final int RAF_HSPAP = TelephonyManager.NETWORK_TYPE_BITMASK_HSPAP; public static final int RAF_UMTS = TelephonyManager.NETWORK_TYPE_BITMASK_UMTS; public static final int RAF_TD_SCDMA = TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA; // 4G public static final int RAF_LTE = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_LTE); public static final int RAF_LTE_CA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_LTE_CA); public static final int RAF_LTE = TelephonyManager.NETWORK_TYPE_BITMASK_LTE; public static final int RAF_LTE_CA = TelephonyManager.NETWORK_TYPE_BITMASK_LTE_CA; // Grouping of RAFs // 2G Loading @@ -74,9 +77,9 @@ public class RadioAccessFamily implements Parcelable { * Constructor. * * @param phoneId the phone ID * @param radioAccessFamily the phone radio access family defined * in RadioAccessFamily. It's a bit mask value to represent * the support type. * @param radioAccessFamily the phone radio access family bitmask based on * {@link TelephonyManager.NetworkTypeBitMask}. It's a bit mask value to represent the support * type. */ @UnsupportedAppUsage public RadioAccessFamily(int phoneId, int radioAccessFamily) { Loading @@ -100,7 +103,7 @@ public class RadioAccessFamily implements Parcelable { * @return radio access family */ @UnsupportedAppUsage public int getRadioAccessFamily() { public @TelephonyManager.NetworkTypeBitMask int getRadioAccessFamily() { return mRadioAccessFamily; } Loading Loading @@ -388,4 +391,76 @@ public class RadioAccessFamily implements Parcelable { } return result; } /** * convert RAF from {@link ServiceState.RilRadioTechnology} bitmask to * {@link TelephonyManager.NetworkTypeBitMask}, the bitmask represented by * {@link TelephonyManager.NetworkType}. Reasons are {@link TelephonyManager.NetworkType} are * public while {@link ServiceState.RilRadioTechnology} are hidden. We * don't want to expose two sets of definition to public. * * @param raf bitmask represented by {@link ServiceState.RilRadioTechnology} * @return {@link TelephonyManager.NetworkTypeBitMask} */ public static int convertToNetworkTypeBitMask(int raf) { int networkTypeRaf = 0; if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GSM)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_GSM; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GPRS)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_GPRS; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EDGE)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_EDGE; } // convert both IS95A/IS95B to CDMA as network mode doesn't support CDMA if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95A)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_CDMA; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95B)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_CDMA; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_1xRTT; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_0; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_A)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_A; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_B)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_B; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_EHRPD; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSUPA)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_HSUPA; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSDPA)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_HSDPA; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPA)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_HSPA; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPAP)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_HSPAP; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_UMTS)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_UMTS; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_LTE)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_LTE; } if ((raf & (1 << ServiceState.RIL_RADIO_TECHNOLOGY_LTE_CA)) != 0) { networkTypeRaf |= TelephonyManager.NETWORK_TYPE_BITMASK_LTE_CA; } return (networkTypeRaf == 0) ? TelephonyManager.NETWORK_TYPE_UNKNOWN : networkTypeRaf; } }
telephony/java/android/telephony/TelephonyManager.java +164 −0 Original line number Diff line number Diff line Loading @@ -8820,4 +8820,168 @@ public class TelephonyManager { return isEnabled; } /** @hide */ @Retention(RetentionPolicy.SOURCE) @IntDef(flag = true, prefix = {"NETWORK_TYPE_BITMASK_"}, value = {NETWORK_TYPE_BITMASK_UNKNOWN, NETWORK_TYPE_BITMASK_GSM, NETWORK_TYPE_BITMASK_GPRS, NETWORK_TYPE_BITMASK_EDGE, NETWORK_TYPE_BITMASK_CDMA, NETWORK_TYPE_BITMASK_1xRTT, NETWORK_TYPE_BITMASK_EVDO_0, NETWORK_TYPE_BITMASK_EVDO_A, NETWORK_TYPE_BITMASK_EVDO_B, NETWORK_TYPE_BITMASK_EHRPD, NETWORK_TYPE_BITMASK_HSUPA, NETWORK_TYPE_BITMASK_HSDPA, NETWORK_TYPE_BITMASK_HSPA, NETWORK_TYPE_BITMASK_HSPAP, NETWORK_TYPE_BITMASK_UMTS, NETWORK_TYPE_BITMASK_TD_SCDMA, NETWORK_TYPE_BITMASK_LTE, NETWORK_TYPE_BITMASK_LTE_CA, }) public @interface NetworkTypeBitMask {} // 2G /** * network type bitmask unknown. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_UNKNOWN = (1 << NETWORK_TYPE_UNKNOWN); /** * network type bitmask indicating the support of radio tech GSM. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_GSM = (1 << NETWORK_TYPE_GSM); /** * network type bitmask indicating the support of radio tech GPRS. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_GPRS = (1 << NETWORK_TYPE_GPRS); /** * network type bitmask indicating the support of radio tech EDGE. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_EDGE = (1 << NETWORK_TYPE_EDGE); /** * network type bitmask indicating the support of radio tech CDMA(IS95A/IS95B). * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_CDMA = (1 << NETWORK_TYPE_CDMA); /** * network type bitmask indicating the support of radio tech 1xRTT. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_1xRTT = (1 << NETWORK_TYPE_1xRTT); // 3G /** * network type bitmask indicating the support of radio tech EVDO 0. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_EVDO_0 = (1 << NETWORK_TYPE_EVDO_0); /** * network type bitmask indicating the support of radio tech EVDO A. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_EVDO_A = (1 << NETWORK_TYPE_EVDO_A); /** * network type bitmask indicating the support of radio tech EVDO B. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_EVDO_B = (1 << NETWORK_TYPE_EVDO_B); /** * network type bitmask indicating the support of radio tech EHRPD. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_EHRPD = (1 << NETWORK_TYPE_EHRPD); /** * network type bitmask indicating the support of radio tech HSUPA. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_HSUPA = (1 << NETWORK_TYPE_HSUPA); /** * network type bitmask indicating the support of radio tech HSDPA. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_HSDPA = (1 << NETWORK_TYPE_HSDPA); /** * network type bitmask indicating the support of radio tech HSPA. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_HSPA = (1 << NETWORK_TYPE_HSPA); /** * network type bitmask indicating the support of radio tech HSPAP. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_HSPAP = (1 << NETWORK_TYPE_HSPAP); /** * network type bitmask indicating the support of radio tech UMTS. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_UMTS = (1 << NETWORK_TYPE_UMTS); /** * network type bitmask indicating the support of radio tech TD_SCDMA. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_TD_SCDMA = (1 << NETWORK_TYPE_TD_SCDMA); // 4G /** * network type bitmask indicating the support of radio tech LTE. * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_LTE = (1 << NETWORK_TYPE_LTE); /** * network type bitmask indicating the support of radio tech LTE CA (carrier aggregation). * @hide */ @SystemApi public static final int NETWORK_TYPE_BITMASK_LTE_CA = (1 << NETWORK_TYPE_LTE_CA); /** * @return Modem supported radio access family bitmask {@link NetworkTypeBitMask} * * <p>Requires permission: {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE} or * that the calling app has carrier privileges (see {@link #hasCarrierPrivileges}). * @hide */ @SystemApi @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public @NetworkTypeBitMask int getSupportedRadioAccessFamily() { try { ITelephony telephony = getITelephony(); if (telephony != null) { return telephony.getRadioAccessFamily(getSlotIndex(), getOpPackageName()); } else { // This can happen when the ITelephony interface is not up yet. return NETWORK_TYPE_BITMASK_UNKNOWN; } } catch (RemoteException ex) { // This shouldn't happen in the normal case return NETWORK_TYPE_BITMASK_UNKNOWN; } catch (NullPointerException ex) { // This could happen before phone restarts due to crashing return NETWORK_TYPE_BITMASK_UNKNOWN; } } }
telephony/java/com/android/internal/telephony/TelephonyPermissions.java +21 −0 Original line number Diff line number Diff line Loading @@ -455,6 +455,27 @@ public final class TelephonyPermissions { enforceCallingOrSelfCarrierPrivilege(subId, message); } /** * Ensure the caller (or self, if not processing an IPC) has * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE} or carrier privileges. * * @throws SecurityException if the caller does not have the required permission/privileges */ public static void enforeceCallingOrSelfReadPrivilegedPhoneStatePermissionOrCarrierPrivilege( Context context, int subId, String message) { if (context.checkCallingOrSelfPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) == PERMISSION_GRANTED) { return; } if (DBG) { Rlog.d(LOG_TAG, "No READ_PRIVILEDED_PHONE_STATE permission, " + "check carrier privilege next."); } enforceCallingOrSelfCarrierPrivilege(subId, message); } /** * Make sure the caller (or self, if not processing an IPC) has carrier privileges. * Loading