summaryrefslogtreecommitdiff
path: root/telephony/java/android
diff options
context:
space:
mode:
Diffstat (limited to 'telephony/java/android')
-rw-r--r--telephony/java/android/service/carrier/CarrierIdentifier.java33
-rw-r--r--telephony/java/android/telephony/AccessNetworkConstants.java23
-rw-r--r--telephony/java/android/telephony/CarrierConfigManager.java116
-rw-r--r--telephony/java/android/telephony/DisconnectCause.java206
-rw-r--r--telephony/java/android/telephony/ServiceState.java7
-rw-r--r--telephony/java/android/telephony/SmsManager.java5
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java35
-rw-r--r--telephony/java/android/telephony/data/ApnSetting.java4
-rw-r--r--telephony/java/android/telephony/ims/ImsCallProfile.java5
-rw-r--r--[-rwxr-xr-x]telephony/java/android/telephony/ims/ImsCallSession.java4
-rw-r--r--telephony/java/android/telephony/ims/stub/ImsUtImplBase.java16
11 files changed, 443 insertions, 11 deletions
diff --git a/telephony/java/android/service/carrier/CarrierIdentifier.java b/telephony/java/android/service/carrier/CarrierIdentifier.java
index bc0f909e1331..c6b9ea200382 100644
--- a/telephony/java/android/service/carrier/CarrierIdentifier.java
+++ b/telephony/java/android/service/carrier/CarrierIdentifier.java
@@ -55,12 +55,13 @@ public class CarrierIdentifier implements Parcelable {
private @Nullable String mImsi;
private @Nullable String mGid1;
private @Nullable String mGid2;
+ private @Nullable String mIccid;
private int mCarrierId = TelephonyManager.UNKNOWN_CARRIER_ID;
private int mSpecificCarrierId = TelephonyManager.UNKNOWN_CARRIER_ID;
public CarrierIdentifier(String mcc, String mnc, @Nullable String spn, @Nullable String imsi,
@Nullable String gid1, @Nullable String gid2) {
- this(mcc, mnc, spn, imsi, gid1, gid2, TelephonyManager.UNKNOWN_CARRIER_ID,
+ this(mcc, mnc, spn, imsi, gid1, gid2, null, TelephonyManager.UNKNOWN_CARRIER_ID,
TelephonyManager.UNKNOWN_CARRIER_ID);
}
@@ -79,16 +80,31 @@ public class CarrierIdentifier implements Parcelable {
public CarrierIdentifier(@NonNull String mcc, @NonNull String mnc, @Nullable String spn,
@Nullable String imsi, @Nullable String gid1, @Nullable String gid2,
int carrierid, int specificCarrierId) {
+ this(mcc, mnc, spn, imsi, gid1, gid2, null, carrierid, specificCarrierId);
+ }
+
+ /** @hide */
+ public CarrierIdentifier(String mcc, String mnc, @Nullable String spn,
+ @Nullable String imsi, @Nullable String gid1, @Nullable String gid2,
+ @Nullable String iccid, int carrierid, int specificCarrierId) {
mMcc = mcc;
mMnc = mnc;
mSpn = spn;
mImsi = imsi;
mGid1 = gid1;
mGid2 = gid2;
+ mIccid = iccid;
mCarrierId = carrierid;
mSpecificCarrierId = specificCarrierId;
}
+ /** @hide */
+ public CarrierIdentifier(String mcc, String mnc, @Nullable String spn, @Nullable String imsi,
+ @Nullable String gid1, @Nullable String gid2I, @Nullable String iccid) {
+ this(mcc, mnc, spn, imsi, gid1, gid2I);
+ mIccid = iccid;
+ }
+
/**
* Creates a carrier identifier instance.
*
@@ -113,6 +129,7 @@ public class CarrierIdentifier implements Parcelable {
mGid2 = gid2;
mSpn = null;
mImsi = null;
+ mIccid = null;
}
/** @hide */
@@ -154,6 +171,13 @@ public class CarrierIdentifier implements Parcelable {
return mGid2;
}
+ /** Get the ICCID.
+ * @hide */
+ @Nullable
+ public String getIccid() {
+ return mIccid;
+ }
+
/**
* Returns the carrier id.
* @see TelephonyManager#getSimCarrierId()
@@ -192,13 +216,14 @@ public class CarrierIdentifier implements Parcelable {
&& Objects.equals(mImsi, that.mImsi)
&& Objects.equals(mGid1, that.mGid1)
&& Objects.equals(mGid2, that.mGid2)
+ && Objects.equals(mIccid, that.mIccid)
&& Objects.equals(mCarrierId, that.mCarrierId)
&& Objects.equals(mSpecificCarrierId, that.mSpecificCarrierId);
}
@Override
public int hashCode(){
- return Objects.hash(mMcc, mMnc, mSpn, mImsi, mGid1, mGid2, mCarrierId, mSpecificCarrierId);
+ return Objects.hash(mMcc, mMnc, mSpn, mImsi, mGid1, mGid2, mIccid, mCarrierId, mSpecificCarrierId);
}
@Override
@@ -214,6 +239,7 @@ public class CarrierIdentifier implements Parcelable {
out.writeString(mImsi);
out.writeString(mGid1);
out.writeString(mGid2);
+ out.writeString(mIccid);
out.writeInt(mCarrierId);
out.writeInt(mSpecificCarrierId);
}
@@ -227,6 +253,7 @@ public class CarrierIdentifier implements Parcelable {
+ ",imsi=" + Rlog.pii(false, mImsi)
+ ",gid1=" + mGid1
+ ",gid2=" + mGid2
+ + ",iccid=" + mIccid
+ ",carrierid=" + mCarrierId
+ ",specificCarrierId=" + mSpecificCarrierId
+ "}";
@@ -240,6 +267,7 @@ public class CarrierIdentifier implements Parcelable {
mImsi = in.readString();
mGid1 = in.readString();
mGid2 = in.readString();
+ mIccid = in.readString();
mCarrierId = in.readInt();
mSpecificCarrierId = in.readInt();
}
@@ -251,5 +279,6 @@ public class CarrierIdentifier implements Parcelable {
int IMSI_PREFIX = 2;
int GID1 = 3;
int GID2 = 4;
+ int ICCID = 5;
}
}
diff --git a/telephony/java/android/telephony/AccessNetworkConstants.java b/telephony/java/android/telephony/AccessNetworkConstants.java
index 1d7a4761dec6..ac50d101feb9 100644
--- a/telephony/java/android/telephony/AccessNetworkConstants.java
+++ b/telephony/java/android/telephony/AccessNetworkConstants.java
@@ -19,6 +19,7 @@ package android.telephony;
import android.annotation.IntDef;
import android.annotation.SystemApi;
import android.hardware.radio.V1_5.AccessNetwork;
+import android.hardware.radio.V1_5.RadioAccessNetworks;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -108,6 +109,28 @@ public final class AccessNetworkConstants {
default: return Integer.toString(type);
}
}
+
+ /**
+ * Converts from RadioAccessNetworks in HAL to AccessNetworkType in frameworks.
+ * @hide
+ */
+ public static int convertRanToAnt(int ran) {
+ switch (ran) {
+ case RadioAccessNetworks.GERAN:
+ return AccessNetworkType.GERAN;
+ case RadioAccessNetworks.UTRAN:
+ return AccessNetworkType.UTRAN;
+ case RadioAccessNetworks.EUTRAN:
+ return AccessNetworkType.EUTRAN;
+ case RadioAccessNetworks.NGRAN:
+ return AccessNetworkType.NGRAN;
+ case RadioAccessNetworks.CDMA2000:
+ return AccessNetworkType.CDMA2000;
+ case RadioAccessNetworks.UNKNOWN:
+ default:
+ return AccessNetworkType.UNKNOWN;
+ }
+ }
}
/**
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index 9954de2da67e..7ac37790fd89 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -756,6 +756,14 @@ public class CarrierConfigManager {
public static final String KEY_VILTE_DATA_IS_METERED_BOOL = "vilte_data_is_metered_bool";
/**
+ * Flag indicating whether we should reset UT capability or not for IMS deregistration
+ * and for IMS feature state not ready
+ * @hide
+ */
+ public static final String KEY_IGNORE_RESET_UT_CAPABILITY_BOOL =
+ "ignore_reset_ut_capability_bool";
+
+ /**
* Flag specifying whether WFC over IMS should be available for carrier: independent of
* carrier provisioning. If false: hard disabled. If true: then depends on carrier
* provisioning, availability etc.
@@ -791,6 +799,18 @@ public class CarrierConfigManager {
"carrier_wfc_supports_wifi_only_bool";
/**
+ * Flag specifying whether WFC over IMS supports the "ims preferred" option. If false, the wifi
+ * calling settings will not include an option for "ims preferred". If true, the wifi calling
+ * settings will include an option for "ims preferred"
+ * <p>
+ * By default, it is assumed that WFC does not support "ims preferred".
+ * @hide
+ */
+ public static final String KEY_CARRIER_WFC_SUPPORTS_IMS_PREFERRED_BOOL =
+ "carrier_wfc_supports_ims_preferred_bool";
+
+
+ /**
* Default mode for WFC over IMS on home network:
* <ul>
* <li>0: Wi-Fi only
@@ -920,6 +940,13 @@ public class CarrierConfigManager {
public static final String KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL
= "carrier_volte_tty_supported_bool";
+ /**
+ * Flag indicating whether VT tty is supported
+ * @hide
+ */
+ public static final String KEY_CARRIER_VT_TTY_SUPPORT_BOOL =
+ "carrier_vt_tty_support_bool";
+
/**
* Flag specifying whether IMS service can be turned off. If false then the service will not be
* turned-off completely, but individual features can be disabled.
@@ -1434,6 +1461,15 @@ public class CarrierConfigManager {
public static final String KEY_HIDE_ENHANCED_4G_LTE_BOOL = "hide_enhanced_4g_lte_bool";
/**
+ * Determines whether the Enabled 5G toggle will be shown in the settings. When this
+ * option is {@code true}, the toggle will be hidden regardless of whether the device and
+ * carrier supports 5G or not.
+ *
+ * @hide
+ */
+ public static final String KEY_HIDE_ENABLED_5G_BOOL = "hide_enabled_5g_bool";
+
+ /**
* Sets the default state for the "Enhanced 4G LTE" or "Advanced Calling" mode toggle set by the
* user. When this is {@code true}, this mode by default is on, otherwise if {@code false},
* this mode by default is off.
@@ -1882,6 +1918,7 @@ public class CarrierConfigManager {
public static final String KEY_SHOW_PRECISE_FAILED_CAUSE_BOOL =
"show_precise_failed_cause_bool";
+
/**
* A list of carrier nr availability is used to determine whether the carrier enable the
* non-standalone (NSA) mode of 5G NR, standalone (SA) mode of 5G NR
@@ -1899,6 +1936,12 @@ public class CarrierConfigManager {
"carrier_nr_availabilities_int_array";
/**
+ * Flag specifying whether CDMA call waiting and call forwarding are enabled
+ * @hide
+ */
+ public static final String KEY_CDMA_CW_CF_ENABLED_BOOL = "cdma_cw_cf_enabled_bool";
+
+ /**
* Boolean to decide whether LTE is enabled.
*/
public static final String KEY_LTE_ENABLED_BOOL = "lte_enabled_bool";
@@ -1925,8 +1968,8 @@ public class CarrierConfigManager {
public static final String KEY_CARRIER_SETTINGS_ACTIVITY_COMPONENT_NAME_STRING =
"carrier_settings_activity_component_name_string";
- // These variables are used by the MMS service and exposed through another API,
- // SmsManager. The variable names and string values are copied from there.
+ // These variables are used by the MMS service and exposed through another API, {@link
+ // SmsManager}. The variable names and string values are copied from there.
public static final String KEY_MMS_ALIAS_ENABLED_BOOL = "aliasEnabled";
public static final String KEY_MMS_ALLOW_ATTACH_AUDIO_BOOL = "allowAttachAudio";
public static final String KEY_MMS_APPEND_TRANSACTION_ID_BOOL = "enabledTransID";
@@ -5043,6 +5086,45 @@ public class CarrierConfigManager {
public static final String KEY_UNTHROTTLE_DATA_RETRY_WHEN_TAC_CHANGES_BOOL =
"unthrottle_data_retry_when_tac_changes_bool";
+ /**
+ * Flag indicating whether carrier supports multianchor conference.
+ * In multianchor conference, a participant of a conference can add
+ * other participants to the call using merge button thereby resulting
+ * in a conference with multi anchors.
+ * @hide
+ */
+ public static final String KEY_CARRIER_SUPPORTS_MULTIANCHOR_CONFERENCE =
+ "carrier_supports_multianchor_conference";
+
+ /**
+ * String array of APN configurations of same MVNO type GID.
+ * The entries should be of form "GID data:all supported apn types:devicecapability:apnname".
+ * example: 52FF:default,mms:SA:nrphone
+ *
+ * @hide
+ */
+ public static final String KEY_MULTI_APN_ARRAY_FOR_SAME_GID = "multi_apn_array_for_same_gid";
+
+ /**
+ * Flag indicating if APN filtering required.
+ *
+ * @hide
+ */
+ public static final String KEY_REQUIRE_APN_FILTERING_WITH_RADIO_CAPABILITY =
+ "require_apn_filtering_with_radio_capability_bool";
+
+ /**
+ * Determines whether carrier supports Sms Callback Mode.
+ * When {@code true}, modem can enter/exit SMS callback mode (SCBM) after sending e911 SMS.
+ * When user tries to make a following e911 call and modem is in SCBM, the same sub will be
+ * selected to place the e911 call over IMS.
+ * When {@code false}, follows the current slot selection logic to place the e911 call.
+ *
+ * @hide
+ */
+ public static final String KEY_USE_SMS_CALLBACK_MODE_BOOL =
+ "use_sms_callback_mode_bool";
+
/** The default value for every variable. */
private final static PersistableBundle sDefaults;
@@ -5076,9 +5158,11 @@ public class CarrierConfigManager {
sDefaults.putBoolean(KEY_CONFIG_TELEPHONY_USE_OWN_NUMBER_FOR_VOICEMAIL_BOOL, false);
sDefaults.putBoolean(KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS, true);
sDefaults.putBoolean(KEY_VILTE_DATA_IS_METERED_BOOL, true);
+ sDefaults.putBoolean(KEY_IGNORE_RESET_UT_CAPABILITY_BOOL, false);
sDefaults.putBoolean(KEY_CARRIER_WFC_IMS_AVAILABLE_BOOL, false);
sDefaults.putBoolean(KEY_CARRIER_CROSS_SIM_IMS_AVAILABLE_BOOL, false);
sDefaults.putBoolean(KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, false);
+ sDefaults.putBoolean(KEY_CARRIER_WFC_SUPPORTS_IMS_PREFERRED_BOOL, false);
sDefaults.putBoolean(KEY_CARRIER_DEFAULT_WFC_IMS_ENABLED_BOOL, false);
sDefaults.putBoolean(KEY_CARRIER_DEFAULT_WFC_IMS_ROAMING_ENABLED_BOOL, false);
sDefaults.putBoolean(KEY_CARRIER_PROMOTE_WFC_ON_CALL_FAIL_BOOL, false);
@@ -5091,6 +5175,7 @@ public class CarrierConfigManager {
sDefaults.putBoolean(KEY_CARRIER_SUPPORTS_SS_OVER_UT_BOOL, false);
sDefaults.putBoolean(KEY_CARRIER_VOLTE_OVERRIDE_WFC_PROVISIONING_BOOL, false);
sDefaults.putBoolean(KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL, true);
+ sDefaults.putBoolean(KEY_CARRIER_VT_TTY_SUPPORT_BOOL, false);
sDefaults.putBoolean(KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL, true);
sDefaults.putBoolean(KEY_CARRIER_IMS_GBA_REQUIRED_BOOL, false);
sDefaults.putBoolean(KEY_CARRIER_INSTANT_LETTERING_AVAILABLE_BOOL, false);
@@ -5116,7 +5201,7 @@ public class CarrierConfigManager {
sDefaults.putBoolean(KEY_HIDE_SIM_LOCK_SETTINGS_BOOL, false);
sDefaults.putBoolean(KEY_CARRIER_VOLTE_PROVISIONED_BOOL, false);
- sDefaults.putBoolean(KEY_CALL_BARRING_VISIBILITY_BOOL, false);
+ sDefaults.putBoolean(KEY_CALL_BARRING_VISIBILITY_BOOL, true);
sDefaults.putBoolean(KEY_CALL_BARRING_SUPPORTS_PASSWORD_CHANGE_BOOL, true);
sDefaults.putBoolean(KEY_CALL_BARRING_SUPPORTS_DEACTIVATE_ALL_BOOL, true);
sDefaults.putInt(KEY_CALL_BARRING_DEFAULT_SERVICE_CLASS_INT, SERVICE_CLASS_VOICE);
@@ -5195,6 +5280,7 @@ public class CarrierConfigManager {
new String[]{"default", "mms", "dun", "supl"});
sDefaults.putStringArray(KEY_CARRIER_METERED_ROAMING_APN_TYPES_STRINGS,
new String[]{"default", "mms", "dun", "supl"});
+ sDefaults.putBoolean(KEY_CDMA_CW_CF_ENABLED_BOOL, false);
sDefaults.putStringArray(KEY_CARRIER_WWAN_DISALLOWED_APN_TYPES_STRING_ARRAY,
new String[]{""});
sDefaults.putStringArray(KEY_CARRIER_WLAN_DISALLOWED_APN_TYPES_STRING_ARRAY,
@@ -5240,6 +5326,7 @@ public class CarrierConfigManager {
sDefaults.putBoolean(KEY_DISPLAY_HD_AUDIO_PROPERTY_BOOL, true);
sDefaults.putBoolean(KEY_EDITABLE_ENHANCED_4G_LTE_BOOL, true);
sDefaults.putBoolean(KEY_HIDE_ENHANCED_4G_LTE_BOOL, false);
+ sDefaults.putBoolean(KEY_HIDE_ENABLED_5G_BOOL, true);
sDefaults.putBoolean(KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL, true);
sDefaults.putBoolean(KEY_HIDE_IMS_APN_BOOL, false);
sDefaults.putBoolean(KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL, false);
@@ -5630,6 +5717,27 @@ public class CarrierConfigManager {
sDefaults.putString(KEY_CARRIER_PROVISIONING_APP_STRING, "");
sDefaults.putBoolean(KEY_DISPLAY_NO_DATA_NOTIFICATION_ON_PERMANENT_FAILURE_BOOL, false);
sDefaults.putBoolean(KEY_UNTHROTTLE_DATA_RETRY_WHEN_TAC_CHANGES_BOOL, false);
+ sDefaults.putBoolean(KEY_CARRIER_SUPPORTS_MULTIANCHOR_CONFERENCE, false);
+ sDefaults.putStringArray(KEY_MULTI_APN_ARRAY_FOR_SAME_GID, new String[] {
+ "52FF:mms,supl,hipri,default,fota:SA:nrphone",
+ "52FF:mms,supl,hipri,default,fota:NSA:nxtgenphone",
+ "52FF:mms,supl,hipri,default,fota:LTE:nxtgenphone",
+ "52FF:mms,supl,hipri,default,fota:TD_SCDMA:nxtgenphone",
+ "52FF:mms,supl,hipri,default,fota:UMTS:nxtgenphone",
+ "52FF:mms,supl,hipri,default,fota:GSM:nxtgenphone",
+ "52FF:mms,supl,hipri,default,fota:HDR:nxtgenphone",
+ "52FF:mms,supl,hipri,default,fota:1xRTT:nxtgenphone",
+ "53FF:mms,supl,hipri,default,fota:SA:enhancedphone",
+ "53FF:mms,supl,hipri,default,fota:NSA:enhancedphone",
+ "53FF:mms,supl,hipri,default,fota:LTE:nxtgenphone",
+ "53FF:mms,supl,hipri,default,fota:TD_SCDMA:nxtgenphone",
+ "53FF:mms,supl,hipri,default,fota:UMTS:nxtgenphone",
+ "53FF:mms,supl,hipri,default,fota:GSM:nxtgenphone",
+ "53FF:mms,supl,hipri,default,fota:HDR:nxtgenphone",
+ "53FF:mms,supl,hipri,default,fota:1xRTT:nxtgenphone",
+ });
+ sDefaults.putBoolean(KEY_REQUIRE_APN_FILTERING_WITH_RADIO_CAPABILITY, false);
+ sDefaults.putBoolean(KEY_USE_SMS_CALLBACK_MODE_BOOL, false);
}
/**
@@ -5880,7 +5988,7 @@ public class CarrierConfigManager {
return;
}
loader.updateConfigForPhoneId(phoneId, simState);
- } catch (RemoteException ex) {
+ } catch (RemoteException | IllegalArgumentException ex) {
Rlog.e(TAG, "Error updating config for phoneId=" + phoneId + ": " + ex.toString());
}
}
diff --git a/telephony/java/android/telephony/DisconnectCause.java b/telephony/java/android/telephony/DisconnectCause.java
index 2704418935d9..4a65d0010076 100644
--- a/telephony/java/android/telephony/DisconnectCause.java
+++ b/telephony/java/android/telephony/DisconnectCause.java
@@ -361,12 +361,124 @@ public final class DisconnectCause {
public static final int INCOMING_AUTO_REJECTED = 81;
+ /** @hide */
+ public static final int INCOMING_CALLS_BARRED_WITHIN_CUG = 82;
+ /** @hide */
+ public static final int BEARER_CAPABILITY_UNAVAILABLE = 83;
+ /** @hide */
+ public static final int SERVICE_OPTION_NOT_AVAILABLE = 84;
+ /** @hide */
+ public static final int BEARER_SERVICE_NOT_IMPLEMENTED = 85;
+ /** @hide */
+ public static final int REQUESTED_FACILITY_NOT_IMPLEMENTED = 86;
+ /** @hide */
+ public static final int ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE = 87;
+ /** @hide */
+ public static final int SERVICE_OR_OPTION_NOT_IMPLEMENTED = 88;
+ /** @hide */
+ public static final int INVALID_TRANSACTION_IDENTIFIER = 89;
+ /** @hide */
+ public static final int USER_NOT_MEMBER_OF_CUG = 90;
+ /** @hide */
+ public static final int INCOMPATIBLE_DESTINATION = 91;
+ /** @hide */
+ public static final int INVALID_TRANSIT_NW_SELECTION = 92;
+ /** @hide */
+ public static final int SEMANTICALLY_INCORRECT_MESSAGE = 93;
+ /** @hide */
+ public static final int INVALID_MANDATORY_INFORMATION = 94;
+ /** @hide */
+ public static final int MESSAGE_TYPE_NON_IMPLEMENTED = 95;
+ /** @hide */
+ public static final int MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 96;
+ /** @hide */
+ public static final int INFORMATION_ELEMENT_NON_EXISTENT = 97;
+ /** @hide */
+ public static final int CONDITIONAL_IE_ERROR = 98;
+ /** @hide */
+ public static final int MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE = 99;
+ /** @hide */
+ public static final int RECOVERY_ON_TIMER_EXPIRED = 100;
+ /** @hide */
+ public static final int PROTOCOL_ERROR_UNSPECIFIED = 101;
+ /** @hide */
+ public static final int INTERWORKING_UNSPECIFIED = 102;
+ /** @hide */
+ public static final int LOCAL_LOW_BATTERY = 103;
+ /** @hide */
+ public static final int NO_CIRCUIT_AVAIL = 104;
+ /** @hide */
+ public static final int NO_ROUTE_TO_DESTINATION = 105;
+ /** @hide */
+ public static final int OPERATOR_DETERMINED_BARRING = 106;
+ /** @hide */
+ public static final int CALL_FAIL_NO_USER_RESPONDING = 107;
+ /** @hide */
+ public static final int CALL_FAIL_NO_ANSWER_FROM_USER = 108;
+ /** @hide */
+ public static final int CALL_FAIL_DESTINATION_OUT_OF_ORDER = 109;
+ /** @hide */
+ public static final int BEARER_CAPABILITY_NOT_AUTHORIZED = 110;
+ /** @hide */
+ public static final int CHANNEL_UNACCEPTABLE = 111;
+ /** @hide */
+ public static final int CALL_REJECTED = 112;
+ /** @hide */
+ public static final int NUMBER_CHANGED = 113;
+ /** @hide */
+ public static final int PREEMPTION = 114;
+ /** @hide */
+ public static final int FACILITY_REJECTED = 115;
+ /** @hide */
+ public static final int RESP_TO_STATUS_ENQUIRY = 116;
+ /** @hide */
+ public static final int NETWORK_OUT_OF_ORDER = 117;
+ /** @hide */
+ public static final int TEMPORARY_FAILURE = 118;
+ /** @hide */
+ public static final int SWITCHING_EQUIPMENT_CONGESTION = 119;
+ /** @hide */
+ public static final int ACCESS_INFORMATION_DISCARDED = 120;
+ /** @hide */
+ public static final int REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE = 121;
+ /** @hide */
+ public static final int RESOURCES_UNAVAILABLE_OR_UNSPECIFIED = 122;
+ /** @hide */
+ public static final int QOS_UNAVAILABLE = 123;
+ /** @hide */
+ public static final int REQUESTED_FACILITY_NOT_SUBSCRIBED = 124;
+
+ /**
+ * call failed due to LTE to 3G/2G handover not feasible
+ * @hide
+ */
+ public static final int HO_NOT_FEASIBLE = 125;
+ /** @hide */
+ public static final int NON_SELECTED_USER_CLEARING = 126;
+
//*********************************************************************************************
// When adding a disconnect type:
- // 1) Update toString() with the newly added disconnect type.
- // 2) Update android.telecom.DisconnectCauseUtil with any mappings to a telecom.DisconnectCause.
+ // 1) Please assign the new type the next id value below.
+ // 2) Increment the next id value below to a new value.
+ // 3) Update MAXIMUM_VALID_VALUE to the new disconnect type.
+ // 4) Update toString() with the newly added disconnect type.
+ // 5) Update android.telecom.DisconnectCauseUtil with any mappings to a telecom.DisconnectCause.
+ //
+ // NextId: 123
//*********************************************************************************************
+ /**
+ * Smallest valid value for call disconnect codes.
+ * @hide
+ */
+ public static final int MINIMUM_VALID_VALUE = NOT_DISCONNECTED;
+
+ /**
+ * Largest valid value for call disconnect codes.
+ * @hide
+ */
+ public static final int MAXIMUM_VALID_VALUE = NON_SELECTED_USER_CLEARING;
+
/** Private constructor to avoid class instantiation. */
private DisconnectCause() {
// Do nothing.
@@ -515,6 +627,32 @@ public final class DisconnectCause {
return "EMERGENCY_TEMP_FAILURE";
case EMERGENCY_PERM_FAILURE:
return "EMERGENCY_PERM_FAILURE";
+ case NO_CIRCUIT_AVAIL:
+ return "NO_CIRCUIT_AVAIL";
+ case NO_ROUTE_TO_DESTINATION:
+ return "NO_ROUTE_TO_DESTINATION";
+ case OPERATOR_DETERMINED_BARRING:
+ return "OPERATOR_DETERMINED_BARRING";
+ case CALL_FAIL_NO_USER_RESPONDING:
+ return "CALL_FAIL_NO_USER_RESPONDING";
+ case CALL_FAIL_NO_ANSWER_FROM_USER:
+ return "CALL_FAIL_NO_ANSWER_FROM_USER";
+ case CALL_FAIL_DESTINATION_OUT_OF_ORDER:
+ return "CALL_FAIL_DESTINATION_OUT_OF_ORDER";
+ case BEARER_CAPABILITY_NOT_AUTHORIZED:
+ return "BEARER_CAPABILITY_NOT_AUTHORIZED";
+ case CHANNEL_UNACCEPTABLE:
+ return "CHANNEL_UNACCEPTABLE";
+ case CALL_REJECTED:
+ return "CALL_REJECTED";
+ case NUMBER_CHANGED:
+ return "NUMBER_CHANGED";
+ case PREEMPTION:
+ return "PREEMPTION";
+ case FACILITY_REJECTED:
+ return "FACILITY_REJECTED";
+ case RESP_TO_STATUS_ENQUIRY:
+ return "RESP_TO_STATUS_ENQUIRY";
case NORMAL_UNSPECIFIED:
return "NORMAL_UNSPECIFIED";
case IMS_SIP_ALTERNATE_EMERGENCY_CALL:
@@ -539,6 +677,70 @@ public final class DisconnectCause {
return "OUTGOING_EMERGENCY_CALL_PLACED";
case INCOMING_AUTO_REJECTED:
return "INCOMING_AUTO_REJECTED";
+ case NETWORK_OUT_OF_ORDER:
+ return "NETWORK_OUT_OF_ORDER";
+ case TEMPORARY_FAILURE:
+ return "TEMPORARY_FAILURE";
+ case SWITCHING_EQUIPMENT_CONGESTION:
+ return "SWITCHING_EQUIPMENT_CONGESTION";
+ case ACCESS_INFORMATION_DISCARDED:
+ return "ACCESS_INFORMATION_DISCARDED";
+ case REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE:
+ return "REQUESTED_CIRCUIT_OR_CHANNEL_NOT_AVAILABLE";
+ case RESOURCES_UNAVAILABLE_OR_UNSPECIFIED:
+ return "RESOURCES_UNAVAILABLE_OR_UNSPECIFIED";
+ case QOS_UNAVAILABLE:
+ return "QOS_UNAVAILABLE";
+ case REQUESTED_FACILITY_NOT_SUBSCRIBED:
+ return "REQUESTED_FACILITY_NOT_SUBSCRIBED";
+ case INCOMING_CALLS_BARRED_WITHIN_CUG:
+ return "INCOMING_CALLS_BARRED_WITHIN_CUG";
+ case BEARER_CAPABILITY_UNAVAILABLE:
+ return "BEARER_CAPABILITY_UNAVAILABLE";
+ case SERVICE_OPTION_NOT_AVAILABLE:
+ return "SERVICE_OPTION_NOT_AVAILABLE";
+ case BEARER_SERVICE_NOT_IMPLEMENTED:
+ return "BEARER_SERVICE_NOT_IMPLEMENTED";
+ case REQUESTED_FACILITY_NOT_IMPLEMENTED:
+ return "REQUESTED_FACILITY_NOT_IMPLEMENTED";
+ case ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE:
+ return "ONLY_DIGITAL_INFORMATION_BEARER_AVAILABLE";
+ case SERVICE_OR_OPTION_NOT_IMPLEMENTED:
+ return "SERVICE_OR_OPTION_NOT_IMPLEMENTED";
+ case INVALID_TRANSACTION_IDENTIFIER:
+ return "INVALID_TRANSACTION_IDENTIFIER";
+ case USER_NOT_MEMBER_OF_CUG:
+ return "USER_NOT_MEMBER_OF_CUG";
+ case INCOMPATIBLE_DESTINATION:
+ return "INCOMPATIBLE_DESTINATION";
+ case INVALID_TRANSIT_NW_SELECTION:
+ return "INVALID_TRANSIT_NW_SELECTION";
+ case SEMANTICALLY_INCORRECT_MESSAGE:
+ return "SEMANTICALLY_INCORRECT_MESSAGE";
+ case INVALID_MANDATORY_INFORMATION:
+ return "INVALID_MANDATORY_INFORMATION";
+ case MESSAGE_TYPE_NON_IMPLEMENTED:
+ return "MESSAGE_TYPE_NON_IMPLEMENTED";
+ case MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE:
+ return "MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE";
+ case INFORMATION_ELEMENT_NON_EXISTENT:
+ return "INFORMATION_ELEMENT_NON_EXISTENT";
+ case CONDITIONAL_IE_ERROR:
+ return "CONDITIONAL_IE_ERROR";
+ case MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE:
+ return "MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE";
+ case RECOVERY_ON_TIMER_EXPIRED:
+ return "RECOVERY_ON_TIMER_EXPIRED";
+ case PROTOCOL_ERROR_UNSPECIFIED:
+ return "PROTOCOL_ERROR_UNSPECIFIED";
+ case INTERWORKING_UNSPECIFIED:
+ return "INTERWORKING_UNSPECIFIED";
+ case LOCAL_LOW_BATTERY:
+ return "LOCAL_LOW_BATTERY";
+ case HO_NOT_FEASIBLE:
+ return "HO_NOT_FEASIBLE";
+ case NON_SELECTED_USER_CLEARING:
+ return "NON_SELECTED_USER_CLEARING";
default:
return "INVALID: " + cause;
}
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java
index d745dc215f34..5e01253b2676 100644
--- a/telephony/java/android/telephony/ServiceState.java
+++ b/telephony/java/android/telephony/ServiceState.java
@@ -1810,6 +1810,13 @@ public class ServiceState implements Parcelable {
}
/** @hide */
+ public static boolean isPsTech(int radioTechnology) {
+ return radioTechnology == RIL_RADIO_TECHNOLOGY_LTE ||
+ radioTechnology == RIL_RADIO_TECHNOLOGY_LTE_CA ||
+ radioTechnology == RIL_RADIO_TECHNOLOGY_NR;
+ }
+
+ /** @hide */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public static boolean bearerBitmapHasCdma(int networkTypeBitmask) {
return (RIL_RADIO_CDMA_TECHNOLOGY_BITMASK
diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java
index 5171cf9dcea7..e9796083a270 100644
--- a/telephony/java/android/telephony/SmsManager.java
+++ b/telephony/java/android/telephony/SmsManager.java
@@ -461,6 +461,7 @@ public final class SmsManager {
public void sendTextMessage(
String destinationAddress, String scAddress, String text,
PendingIntent sentIntent, PendingIntent deliveryIntent) {
+ android.util.SeempLog.record_str(75, destinationAddress);
sendTextMessageInternal(destinationAddress, scAddress, text, sentIntent, deliveryIntent,
true /* persistMessage*/, getOpPackageName(), getAttributionTag(),
0L /* messageId */);
@@ -1427,6 +1428,7 @@ public final class SmsManager {
public void sendDataMessage(
String destinationAddress, String scAddress, short destinationPort,
byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent) {
+ android.util.SeempLog.record_str(73, destinationAddress);
if (TextUtils.isEmpty(destinationAddress)) {
throw new IllegalArgumentException("Invalid destinationAddress");
}
@@ -1757,6 +1759,7 @@ public final class SmsManager {
@RequiresPermission(Manifest.permission.ACCESS_MESSAGES_ON_ICC)
public boolean copyMessageToIcc(
@Nullable byte[] smsc, @NonNull byte[] pdu, @StatusOnIcc int status) {
+ android.util.SeempLog.record(79);
boolean success = false;
if (pdu == null) {
@@ -1800,6 +1803,7 @@ public final class SmsManager {
@UnsupportedAppUsage
@RequiresPermission(Manifest.permission.ACCESS_MESSAGES_ON_ICC)
public boolean deleteMessageFromIcc(int messageIndex) {
+ android.util.SeempLog.record(80);
boolean success = false;
try {
@@ -1843,6 +1847,7 @@ public final class SmsManager {
@UnsupportedAppUsage
@RequiresPermission(Manifest.permission.ACCESS_MESSAGES_ON_ICC)
public boolean updateMessageOnIcc(int messageIndex, int newStatus, byte[] pdu) {
+ android.util.SeempLog.record(81);
boolean success = false;
try {
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index e0ab0a368a4f..2bf411f8afc2 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -472,6 +472,35 @@ public class TelephonyManager {
}
/**
+ * The allowed values for multi sim voice capability
+ *
+ * @hide
+ */
+ public interface MultiSimVoiceCapability {
+ /** default */
+ static final int UNKNOWN = 0;
+ /** Concurrent calls on both subscriptions are not possbile. */
+ static final int DSDS = 1;
+ /** Concurrent calls on both subscriptions are not possible but user will have option to
+ * accept MT call on one subscription when there is an ongoing call on another subscription.
+ */
+ static final int PSEUDO_DSDA = 2;
+ /** Concurrent calls on both subscriptions are possible */
+ static final int DSDA = 3;
+ }
+
+ /**
+ * Returns true if concurrent calls on both subscriptions are possible (ex: DSDA).
+ * Returns false for other cases.
+ */
+ /** {@hide} */
+ public static boolean isConcurrentCallsPossible() {
+ int mSimVoiceConfig = TelephonyProperties.multi_sim_voice_capability().orElse(
+ MultiSimVoiceCapability.UNKNOWN);
+ return mSimVoiceConfig == MultiSimVoiceCapability.DSDA;
+ }
+
+ /**
* Returns the number of phones available.
* Returns 0 if none of voice, sms, data is not supported
* Returns 1 for Single standby mode (Single SIM functionality).
@@ -2017,6 +2046,7 @@ public class TelephonyManager {
@RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public String getDeviceId(int slotIndex) {
// FIXME this assumes phoneId == slotIndex
+ android.util.SeempLog.record_str(8, ""+slotIndex);
try {
IPhoneSubInfo info = getSubscriberInfoService();
if (info == null)
@@ -2348,6 +2378,7 @@ public class TelephonyManager {
@Deprecated
@RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION)
public CellLocation getCellLocation() {
+ android.util.SeempLog.record(49);
try {
ITelephony telephony = getITelephony();
if (telephony == null) {
@@ -2383,6 +2414,7 @@ public class TelephonyManager {
@Deprecated
@RequiresPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION)
public List<NeighboringCellInfo> getNeighboringCellInfo() {
+ android.util.SeempLog.record(50);
try {
ITelephony telephony = getITelephony();
if (telephony == null)
@@ -3830,6 +3862,7 @@ public class TelephonyManager {
@RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
@UnsupportedAppUsage
public String getSimSerialNumber(int subId) {
+ android.util.SeempLog.record_str(388, ""+subId);
try {
IPhoneSubInfo info = getSubscriberInfoService();
if (info == null)
@@ -4098,6 +4131,7 @@ public class TelephonyManager {
@RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
public String getSubscriberId(int subId) {
+ android.util.SeempLog.record_str(389, ""+subId);
try {
IPhoneSubInfo info = getSubscriberInfoService();
if (info == null)
@@ -4704,6 +4738,7 @@ public class TelephonyManager {
})
@UnsupportedAppUsage
public String getLine1Number(int subId) {
+ android.util.SeempLog.record_str(9, ""+subId);
String number = null;
try {
ITelephony telephony = getITelephony();
diff --git a/telephony/java/android/telephony/data/ApnSetting.java b/telephony/java/android/telephony/data/ApnSetting.java
index be1502ad49f2..442681ee71b2 100644
--- a/telephony/java/android/telephony/data/ApnSetting.java
+++ b/telephony/java/android/telephony/data/ApnSetting.java
@@ -1447,8 +1447,8 @@ public class ApnSetting implements Parcelable {
&& !typeSameAny(this, other)
&& xorEqualsString(this.mProxyAddress, other.mProxyAddress)
&& xorEqualsInt(this.mProxyPort, other.mProxyPort)
- && xorEquals(this.mProtocol, other.mProtocol)
- && xorEquals(this.mRoamingProtocol, other.mRoamingProtocol)
+ && xorEqualsInt(this.mProtocol, other.mProtocol)
+ && xorEqualsInt(this.mRoamingProtocol, other.mRoamingProtocol)
&& Objects.equals(this.mCarrierEnabled, other.mCarrierEnabled)
&& Objects.equals(this.mProfileId, other.mProfileId)
&& Objects.equals(this.mMvnoType, other.mMvnoType)
diff --git a/telephony/java/android/telephony/ims/ImsCallProfile.java b/telephony/java/android/telephony/ims/ImsCallProfile.java
index 486f74632ca2..5bfa1194962e 100644
--- a/telephony/java/android/telephony/ims/ImsCallProfile.java
+++ b/telephony/java/android/telephony/ims/ImsCallProfile.java
@@ -120,6 +120,11 @@ public final class ImsCallProfile implements Parcelable {
* VideoShare (video RX one way)
*/
public static final int CALL_TYPE_VS_RX = 10;
+ /**
+ * Unknown (audio / video inactive)
+ * @hide
+ */
+ public static final int CALL_TYPE_UNKNOWN = (-1);
/**
* Extra properties for IMS call.
diff --git a/telephony/java/android/telephony/ims/ImsCallSession.java b/telephony/java/android/telephony/ims/ImsCallSession.java
index 0aff99709a52..32a65660121f 100755..100644
--- a/telephony/java/android/telephony/ims/ImsCallSession.java
+++ b/telephony/java/android/telephony/ims/ImsCallSession.java
@@ -1307,7 +1307,9 @@ public class ImsCallSession {
if (mListener != null) {
if (newSession != null) {
// New session created after conference
- mListener.callSessionMergeComplete(new ImsCallSession(newSession));
+ ImsCallSession confSession = new ImsCallSession(newSession);
+ confSession.mListener = mListener;
+ mListener.callSessionMergeComplete(confSession);
} else {
// Session already exists. Hence no need to pass
mListener.callSessionMergeComplete(null);
diff --git a/telephony/java/android/telephony/ims/stub/ImsUtImplBase.java b/telephony/java/android/telephony/ims/stub/ImsUtImplBase.java
index eb3e8ed5a8e4..7694f5ee9981 100644
--- a/telephony/java/android/telephony/ims/stub/ImsUtImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/ImsUtImplBase.java
@@ -19,6 +19,7 @@ package android.telephony.ims.stub;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.os.Bundle;
import android.os.RemoteException;
@@ -139,6 +140,12 @@ public class ImsUtImplBase {
}
@Override
+ public int queryCFForServiceClass(int condition, String number, int serviceClass) throws
+ RemoteException {
+ return ImsUtImplBase.this.queryCFForServiceClass(condition, number, serviceClass);
+ }
+
+ @Override
public int queryCallWaiting() throws RemoteException {
return ImsUtImplBase.this.queryCallWaiting();
}
@@ -286,6 +293,15 @@ public class ImsUtImplBase {
}
/**
+ * Retrieves the configuration of the call forward for specified service class.
+ */
+ @SuppressLint("AcronymName")
+ public int queryCFForServiceClass(int condition, String number,
+ int serviceClass) {
+ return -1;
+ }
+
+ /**
* Retrieves the configuration of the call waiting.
*/
public int queryCallWaiting() {