/* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.telephony; import android.Manifest; import android.annotation.CallbackExecutor; import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresFeature; import android.annotation.RequiresPermission; import android.annotation.SuppressAutoDoc; import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.annotation.SystemService; import android.compat.annotation.UnsupportedAppUsage; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; import android.net.NetworkCapabilities; import android.net.ipsec.ike.SaProposal; import android.os.Build; import android.os.Handler; import android.os.PersistableBundle; import android.os.RemoteException; import android.service.carrier.CarrierService; import android.telecom.TelecomManager; import android.telephony.AccessNetworkConstants.AccessNetworkType; import android.telephony.data.ApnSetting; import android.telephony.gba.TlsParams; import android.telephony.gba.UaSecurityProtocolIdentifier; import android.telephony.ims.ImsReasonInfo; import android.telephony.ims.ImsRegistrationAttributes; import android.telephony.ims.ImsSsData; import android.telephony.ims.MediaQualityStatus; import android.telephony.ims.RcsUceAdapter; import android.telephony.ims.feature.MmTelFeature; import android.telephony.ims.feature.RcsFeature; import com.android.internal.telephony.ICarrierConfigLoader; import com.android.internal.telephony.flags.Flags; import com.android.telephony.Rlog; import java.util.List; import java.util.Objects; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; /** * Provides access to telephony configuration values that are carrier-specific. */ @SystemService(Context.CARRIER_CONFIG_SERVICE) @RequiresFeature(PackageManager.FEATURE_TELEPHONY_SUBSCRIPTION) public class CarrierConfigManager { private static final String TAG = "CarrierConfigManager"; /** * Extra included in {@link #ACTION_CARRIER_CONFIG_CHANGED} to indicate the slot index that the * broadcast is for. */ public static final String EXTRA_SLOT_INDEX = "android.telephony.extra.SLOT_INDEX"; /** * {@link #ACTION_CARRIER_CONFIG_CHANGED} is broadcast once on device bootup and then again when * the device is unlocked. Direct-Boot-aware applications may use the first broadcast as an * early signal that the carrier config has been loaded, but other applications will only * receive the second broadcast, when the device is unlocked. * * This extra is included in {@link #ACTION_CARRIER_CONFIG_CHANGED} to indicate whether this is * a rebroadcast on unlock. */ public static final String EXTRA_REBROADCAST_ON_UNLOCK = "android.telephony.extra.REBROADCAST_ON_UNLOCK"; /** * Optional extra included in {@link #ACTION_CARRIER_CONFIG_CHANGED} to indicate the * subscription index that the broadcast is for, if a valid one is available. */ public static final String EXTRA_SUBSCRIPTION_INDEX = SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX; /** * Service class flag if no specific service class is specified. * Reference: 3GPP TS 27.007 Section 7.4 Facility lock +CLCK */ public static final int SERVICE_CLASS_NONE = ImsSsData.SERVICE_CLASS_NONE; /** * Service class flag for voice telephony. * Reference: 3GPP TS 27.007 Section 7.4 Facility lock +CLCK */ public static final int SERVICE_CLASS_VOICE = ImsSsData.SERVICE_CLASS_VOICE; /** * Only send USSD over IMS while CS is out of service, otherwise send USSD over CS. * {@link #KEY_CARRIER_USSD_METHOD_INT} */ public static final int USSD_OVER_CS_PREFERRED = 0; /** * Send USSD over IMS or CS while IMS is out of service or silent redial over CS if needed. * {@link #KEY_CARRIER_USSD_METHOD_INT} */ public static final int USSD_OVER_IMS_PREFERRED = 1; /** * Only send USSD over CS. * {@link #KEY_CARRIER_USSD_METHOD_INT} */ public static final int USSD_OVER_CS_ONLY = 2; /** * Only send USSD over IMS and disallow silent redial over CS. * {@link #KEY_CARRIER_USSD_METHOD_INT} */ public static final int USSD_OVER_IMS_ONLY = 3; /** * Indicates CARRIER_NR_AVAILABILITY_NSA determine that the carrier enable the non-standalone * (NSA) mode of 5G NR. */ public static final int CARRIER_NR_AVAILABILITY_NSA = 1; /** * Indicates CARRIER_NR_AVAILABILITY_SA determine that the carrier enable the standalone (SA) * mode of 5G NR. */ public static final int CARRIER_NR_AVAILABILITY_SA = 2; private final Context mContext; /** * @hide */ public CarrierConfigManager(Context context) { mContext = context; } /** * This intent is broadcast by the system when carrier config changes. An int is specified in * {@link #EXTRA_SLOT_INDEX} to indicate the slot index that this is for. An optional int extra * {@link #EXTRA_SUBSCRIPTION_INDEX} is included to indicate the subscription index if a valid * one is available for the slot index. An optional int extra * {@link TelephonyManager#EXTRA_CARRIER_ID} is included to indicate the carrier id for the * changed carrier configuration. An optional int extra * {@link TelephonyManager#EXTRA_SPECIFIC_CARRIER_ID} is included to indicate the precise * carrier id for the changed carrier configuration. * @see TelephonyManager#getSimCarrierId() * @see TelephonyManager#getSimSpecificCarrierId() */ public static final String ACTION_CARRIER_CONFIG_CHANGED = "android.telephony.action.CARRIER_CONFIG_CHANGED"; // Below are the keys used in carrier config bundles. To add a new variable, define the key and // give it a default value in sDefaults. If you need to ship a per-network override in the // system image, that can be added in packages/apps/CarrierConfig. /** * Specifies a value that identifies the version of the carrier configuration that is * currently in use. This string is displayed on the UI. * The format of the string is not specified. */ public static final String KEY_CARRIER_CONFIG_VERSION_STRING = "carrier_config_version_string"; /** * This flag specifies whether VoLTE availability is based on provisioning. By default this is * false. * Used for UCE to determine if EAB provisioning checks should be based on provisioning. * @deprecated Use {@link Ims#KEY_CARRIER_RCS_PROVISIONING_REQUIRED_BOOL} instead. */ @Deprecated public static final String KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool"; /** * Boolean indicating the Supplementary Services(SS) is disable when airplane mode on in the * Call Settings menu. * {@code true}: SS is disable when airplane mode on. * {@code false}: SS is enable when airplane mode on. * The default value for this key is {@code false} */ public static final String KEY_DISABLE_SUPPLEMENTARY_SERVICES_IN_AIRPLANE_MODE_BOOL = "disable_supplementary_services_in_airplane_mode_bool"; /** * Boolean indicating if the "Call forwarding" item is visible in the Call Settings menu. * true means visible. false means gone. * @hide */ public static final String KEY_CALL_FORWARDING_VISIBILITY_BOOL = "call_forwarding_visibility_bool"; /** * Boolean indicating if carrier supports call forwarding option "When unreachable". * * {@code true}: Call forwarding option "When unreachable" is supported. * {@code false}: Call forwarding option "When unreachable" is not supported. Option will be * removed in the UI. * * By default this value is true. * @hide */ public static final String KEY_CALL_FORWARDING_WHEN_UNREACHABLE_SUPPORTED_BOOL = "call_forwarding_when_unreachable_supported_bool"; /** * Boolean indicating if carrier supports call forwarding option "When unanswered". * * {@code true}: Call forwarding option "When unanswered" is supported. * {@code false}: Call forwarding option "When unanswered" is not supported. Option will be * removed in the UI. * * By default this value is true. * @hide */ public static final String KEY_CALL_FORWARDING_WHEN_UNANSWERED_SUPPORTED_BOOL = "call_forwarding_when_unanswered_supported_bool"; /** * Boolean indicating if carrier supports call forwarding option "When busy". * * {@code true}: Call forwarding option "When busy" is supported. * {@code false}: Call forwarding option "When busy" is not supported. Option will be * removed in the UI. * * By default this value is true. * @hide */ public static final String KEY_CALL_FORWARDING_WHEN_BUSY_SUPPORTED_BOOL = "call_forwarding_when_busy_supported_bool"; /** * Boolean indicating if the "Caller ID" item is visible in the Additional Settings menu. * true means visible. false means gone. * * The default value is true. */ @FlaggedApi(Flags.FLAG_SHOW_CALL_ID_AND_CALL_WAITING_IN_ADDITIONAL_SETTINGS_MENU) public static final String KEY_ADDITIONAL_SETTINGS_CALLER_ID_VISIBILITY_BOOL = "additional_settings_caller_id_visibility_bool"; /** * Boolean indicating if the "Call Waiting" item is visible in the Additional Settings menu. * true means visible. false means gone. * * The default value is true. */ @FlaggedApi(Flags.FLAG_SHOW_CALL_ID_AND_CALL_WAITING_IN_ADDITIONAL_SETTINGS_MENU) public static final String KEY_ADDITIONAL_SETTINGS_CALL_WAITING_VISIBILITY_BOOL = "additional_settings_call_waiting_visibility_bool"; /** * Boolean indicating if the "Call barring" item is visible in the Call Settings menu. * If true, the "Call Barring" menu will be visible. If false, the menu will be gone. * * Disabled by default. */ public static final String KEY_CALL_BARRING_VISIBILITY_BOOL = "call_barring_visibility_bool"; /** * Flag indicating whether or not changing the call barring password via the "Call Barring" * settings menu is supported. If true, the option will be visible in the "Call * Barring" settings menu. If false, the option will not be visible. * * Enabled by default. */ public static final String KEY_CALL_BARRING_SUPPORTS_PASSWORD_CHANGE_BOOL = "call_barring_supports_password_change_bool"; /** * Flag indicating whether or not deactivating all call barring features via the "Call Barring" * settings menu is supported. If true, the option will be visible in the "Call * Barring" settings menu. If false, the option will not be visible. * * Enabled by default. */ public static final String KEY_CALL_BARRING_SUPPORTS_DEACTIVATE_ALL_BOOL = "call_barring_supports_deactivate_all_bool"; /** * Specifies the service class for call barring service. Default value is * {@link #SERVICE_CLASS_VOICE}. * The value set as below: * */ public static final String KEY_CALL_BARRING_DEFAULT_SERVICE_CLASS_INT = "call_barring_default_service_class_int"; /** * This carrier supports dialing USSD codes to enable/disable supplementary services such as * call forwarding and call waiting over CDMA. *

* The supplementary service menu will still need to be set as visible, see * {@link #KEY_CALL_FORWARDING_VISIBILITY_BOOL} and * {@link #KEY_ADDITIONAL_SETTINGS_CALL_WAITING_VISIBILITY_BOOL}. *

* If this is set as false and the supplementary service menu is visible, the associated setting * will be enabled and disabled based on the availability of supplementary services over UT. See * {@link #KEY_CARRIER_SUPPORTS_SS_OVER_UT_BOOL}. * @hide */ public static final String KEY_SUPPORT_SS_OVER_CDMA_BOOL = "support_ss_over_cdma_bool"; /** * Flag indicating whether the Phone app should ignore EVENT_SIM_NETWORK_LOCKED * events from the Sim. * If true, this will prevent the IccNetworkDepersonalizationPanel from being shown, and * effectively disable the "Sim network lock" feature. */ public static final String KEY_IGNORE_SIM_NETWORK_LOCKED_EVENTS_BOOL = "ignore_sim_network_locked_events_bool"; /** * When checking if a given number is the voicemail number, if this flag is true * then in addition to comparing the given number to the voicemail number, we also compare it * to the mdn. If this flag is false, the given number is only compared to the voicemail number. * By default this value is false. */ public static final String KEY_MDN_IS_ADDITIONAL_VOICEMAIL_NUMBER_BOOL = "mdn_is_additional_voicemail_number_bool"; /** * Flag indicating whether the Phone app should provide a "Dismiss" button on the SIM network * unlock screen. The default value is true. If set to false, there will be *no way* to dismiss * the SIM network unlock screen if you don't enter the correct unlock code. (One important * consequence: there will be no way to make an Emergency Call if your SIM is network-locked and * you don't know the PIN.) */ public static final String KEY_SIM_NETWORK_UNLOCK_ALLOW_DISMISS_BOOL = "sim_network_unlock_allow_dismiss_bool"; /** * Flag indicating whether or not sending emergency SMS messages over IMS * is supported when in LTE/limited LTE (Emergency only) service mode.. */ public static final String KEY_SUPPORT_EMERGENCY_SMS_OVER_IMS_BOOL = "support_emergency_sms_over_ims_bool"; /** Flag indicating if the phone is a world phone */ public static final String KEY_WORLD_PHONE_BOOL = "world_phone_bool"; /** * Flag to require or skip entitlement checks. * If true, entitlement checks will be executed if device has been configured for it, * If false, entitlement checks will be skipped. */ public static final String KEY_REQUIRE_ENTITLEMENT_CHECKS_BOOL = "require_entitlement_checks_bool"; /** * Flag indicating if the carrier supports tethering of mobile data. */ public static final String KEY_CARRIER_SUPPORTS_TETHERING_BOOL = "carrier_supports_tethering_bool"; /** * Flag indicating whether radio is to be restarted on error PDP_FAIL_REGULAR_DEACTIVATION * This is false by default. * * @deprecated Use {@link #KEY_RADIO_RESTART_FAILURE_CAUSES_INT_ARRAY} instead */ @Deprecated public static final String KEY_RESTART_RADIO_ON_PDP_FAIL_REGULAR_DEACTIVATION_BOOL = "restart_radio_on_pdp_fail_regular_deactivation_bool"; /** * A list of failure cause codes that will trigger a modem restart when telephony receiving * one of those during data setup. The cause codes are defined in 3GPP TS 24.008 Annex I and * TS 24.301 Annex B. */ public static final String KEY_RADIO_RESTART_FAILURE_CAUSES_INT_ARRAY = "radio_restart_failure_causes_int_array"; /** * If true, enable vibration (haptic feedback) for key presses in the EmergencyDialer activity. * The pattern is set on a per-platform basis using config_virtualKeyVibePattern. To be * consistent with the regular Dialer, this value should agree with the corresponding values * from config.xml under apps/Contacts. */ public static final String KEY_ENABLE_DIALER_KEY_VIBRATION_BOOL = "enable_dialer_key_vibration_bool"; /** Flag indicating if dtmf tone type is enabled */ public static final String KEY_DTMF_TYPE_ENABLED_BOOL = "dtmf_type_enabled_bool"; /** Flag indicating if auto retry is enabled */ public static final String KEY_AUTO_RETRY_ENABLED_BOOL = "auto_retry_enabled_bool"; /** * Determine whether we want to play local DTMF tones in a call, or just let the radio/BP handle * playing of the tones. */ public static final String KEY_ALLOW_LOCAL_DTMF_TONES_BOOL = "allow_local_dtmf_tones_bool"; /** * Determines if the carrier requires that a tone be played to the remote party when an app is * recording audio during a call (e.g. using a call recording app). *

* Note: This requires the Telephony config_supports_telephony_audio_device overlay to be true * in order to work. * @hide */ public static final String KEY_PLAY_CALL_RECORDING_TONE_BOOL = "play_call_recording_tone_bool"; /** * Determines if the carrier requires converting the destination number before sending out an * SMS. Certain networks and numbering plans require different formats. */ public static final String KEY_SMS_REQUIRES_DESTINATION_NUMBER_CONVERSION_BOOL = "sms_requires_destination_number_conversion_bool"; /** * If true, show an onscreen "Dial" button in the dialer. In practice this is used on all * platforms, even the ones with hard SEND/END keys, but for maximum flexibility it's controlled * by a flag here (which can be overridden on a per-product basis.) */ public static final String KEY_SHOW_ONSCREEN_DIAL_BUTTON_BOOL = "show_onscreen_dial_button_bool"; /** Determines if device implements a noise suppression device for in call audio. */ public static final String KEY_HAS_IN_CALL_NOISE_SUPPRESSION_BOOL = "has_in_call_noise_suppression_bool"; /** * Determines if the current device should allow emergency numbers to be logged in the Call Log. * (Some carriers require that emergency calls *not* be logged, presumably to avoid the risk of * accidental redialing from the call log UI. This is a good idea, so the default here is * false.) */ public static final String KEY_ALLOW_EMERGENCY_NUMBERS_IN_CALL_LOG_BOOL = "allow_emergency_numbers_in_call_log_bool"; /** * A string array containing numbers that shouldn't be included in the call log. */ public static final String KEY_UNLOGGABLE_NUMBERS_STRING_ARRAY = "unloggable_numbers_string_array"; /** If true, removes the Voice Privacy option from Call Settings */ public static final String KEY_VOICE_PRIVACY_DISABLE_UI_BOOL = "voice_privacy_disable_ui_bool"; /** Control whether users can reach the carrier portions of Cellular Network Settings. */ public static final String KEY_HIDE_CARRIER_NETWORK_SETTINGS_BOOL = "hide_carrier_network_settings_bool"; /** * Only allow auto selection in Advanced Network Settings when in home network. * Manual selection is allowed when in roaming network. */ public static final String KEY_ONLY_AUTO_SELECT_IN_HOME_NETWORK_BOOL = "only_auto_select_in_home_network"; /** * Flag indicating whether to show single operator row in the choose network setting. * * The device configuration value {@code config_enableNewAutoSelectNetworkUI} ultimately * controls whether this carrier configuration option is used. * Where {@code config_enableNewAutoSelectNetworkUI} is false, the value of this * carrier configuration is ignored. * * If {@code true}, default value, merge the duplicate networks which with the same plmn, keep * the one that with the higher signal strength level. * If {@code false}, show all operators without merging. * @hide */ public static final String KEY_SHOW_SINGLE_OPERATOR_ROW_IN_CHOOSE_NETWORK_SETTING_BOOL = "show_single_operator_row_in_choose_network_setting_bool"; /** * Flag indicating whether to display SPN as network name for home network in choose * network setting. * * If {@code true}, display SPN as network name in choose network setting. * If {@code false}, display PLMN in choose network setting. * @hide */ public static final String KEY_SHOW_SPN_FOR_HOME_IN_CHOOSE_NETWORK_SETTING_BOOL = "show_spn_for_home_in_choose_network_setting_bool"; /** * Control whether users receive a simplified network settings UI and improved network * selection. * * @deprecated Never implemented. Has no behavior impact when override. DO NOT USE. */ @Deprecated public static final String KEY_SIMPLIFIED_NETWORK_SETTINGS_BOOL = "simplified_network_settings_bool"; /** Control whether users can reach the SIM lock settings. */ public static final String KEY_HIDE_SIM_LOCK_SETTINGS_BOOL = "hide_sim_lock_settings_bool"; /** Control whether users can edit APNs in Settings. */ public static final String KEY_APN_EXPAND_BOOL = "apn_expand_bool"; /** Control whether users can choose a network operator. */ public static final String KEY_OPERATOR_SELECTION_EXPAND_BOOL = "operator_selection_expand_bool"; /** * Used in the Preferred Network Types menu to determine if the 2G option is displayed. * Value defaults to false as of Android T to discourage the use of insecure 2G protocols. */ public static final String KEY_PREFER_2G_BOOL = "prefer_2g_bool"; /** * Used in the Preferred Network Types menu to determine if the 3G option is displayed. */ @FlaggedApi(Flags.FLAG_HIDE_PREFER_3G_ITEM) public static final String KEY_PREFER_3G_VISIBILITY_BOOL = "prefer_3g_visibility_bool"; /** * Used in Cellular Network Settings for preferred network type to show 4G only mode. * @hide */ public static final String KEY_4G_ONLY_BOOL = "4g_only_bool"; /** Show cdma network mode choices 1x, 3G, global etc. */ public static final String KEY_SHOW_CDMA_CHOICES_BOOL = "show_cdma_choices_bool"; /** CDMA activation goes through HFA */ public static final String KEY_USE_HFA_FOR_PROVISIONING_BOOL = "use_hfa_for_provisioning_bool"; /** * CDMA activation goes through OTASP. */ // TODO: This should be combined with config_use_hfa_for_provisioning and implemented as an enum // (NONE, HFA, OTASP). public static final String KEY_USE_OTASP_FOR_PROVISIONING_BOOL = "use_otasp_for_provisioning_bool"; /** Display carrier settings menu if true */ public static final String KEY_CARRIER_SETTINGS_ENABLE_BOOL = "carrier_settings_enable_bool"; /** Does not display additional call setting for IMS phone based on GSM Phone */ public static final String KEY_ADDITIONAL_CALL_SETTING_BOOL = "additional_call_setting_bool"; /** Show APN Settings for some CDMA carriers */ public static final String KEY_SHOW_APN_SETTING_CDMA_BOOL = "show_apn_setting_cdma_bool"; /** After a CDMA conference call is merged, the swap button should be displayed. */ public static final String KEY_SUPPORT_SWAP_AFTER_MERGE_BOOL = "support_swap_after_merge_bool"; /** * Determine whether user can edit voicemail number in Settings. */ public static final String KEY_EDITABLE_VOICEMAIL_NUMBER_SETTING_BOOL = "editable_voicemail_number_setting_bool"; /** * Since the default voicemail number is empty, if a SIM card does not have a voicemail number * available the user cannot use voicemail. This flag allows the user to edit the voicemail * number in such cases, and is false by default. */ public static final String KEY_EDITABLE_VOICEMAIL_NUMBER_BOOL = "editable_voicemail_number_bool"; /** * Determine whether the voicemail number in Settings is hidden. * @hide */ public static final String KEY_HIDE_VOICEMAIL_NUMBER_SETTING_BOOL = "hide_voicemail_number_setting_bool"; /** * Determine whether the voicemail notification is persistent in the notification bar. If true, * the voicemail notifications cannot be dismissed from the notification bar. */ public static final String KEY_VOICEMAIL_NOTIFICATION_PERSISTENT_BOOL = "voicemail_notification_persistent_bool"; /** For IMS video over LTE calls, determines whether video pause signalling is supported. */ public static final String KEY_SUPPORT_PAUSE_IMS_VIDEO_CALLS_BOOL = "support_pause_ims_video_calls_bool"; /** * Disables dialing "*228" (OTASP provisioning) on CDMA carriers where it is not supported or is * potentially harmful by locking the SIM to 3G. */ public static final String KEY_DISABLE_CDMA_ACTIVATION_CODE_BOOL = "disable_cdma_activation_code_bool"; /** * List of network type constants which support only a single data connection at a time. * Some carriers do not support multiple PDP on UMTS. * @see TelephonyManager NETWORK_TYPE_* * @see #KEY_ONLY_SINGLE_DC_ALLOWED_INT_ARRAY */ public static final String KEY_ONLY_SINGLE_DC_ALLOWED_INT_ARRAY = "only_single_dc_allowed_int_array"; /** * Only apply if {@link #KEY_ONLY_SINGLE_DC_ALLOWED_INT_ARRAY} specifies the network types that * support a single data connection at a time. This key defines a list of network capabilities * which, if requested, will exempt the request from single data connection checks. * @see NetworkCapabilities NET_CAPABILITY_* */ public static final String KEY_CAPABILITIES_EXEMPT_FROM_SINGLE_DC_CHECK_INT_ARRAY = "capabilities_exempt_from_single_dc_check_int_array"; /** * Override the platform's notion of a network operator being considered roaming. * Value is string array of MCCMNCs to be considered roaming for 3GPP RATs. */ public static final String KEY_GSM_ROAMING_NETWORKS_STRING_ARRAY = "gsm_roaming_networks_string_array"; /** * Override the platform's notion of a network operator being considered not roaming. * Value is string array of MCCMNCs to be considered not roaming for 3GPP RATs. */ public static final String KEY_GSM_NONROAMING_NETWORKS_STRING_ARRAY = "gsm_nonroaming_networks_string_array"; /** * The package name containing the ImsService that will be bound to the telephony framework to * support both IMS MMTEL and RCS feature functionality instead of the device default * ImsService for this subscription. * @deprecated Use {@link #KEY_CONFIG_IMS_MMTEL_PACKAGE_OVERRIDE_STRING} and * {@link #KEY_CONFIG_IMS_RCS_PACKAGE_OVERRIDE_STRING} instead to configure these values * separately. If any of those values are not empty, they will override this value. */ @Deprecated public static final String KEY_CONFIG_IMS_PACKAGE_OVERRIDE_STRING = "config_ims_package_override_string"; /** * The package name containing the ImsService that will be bound to the telephony framework to * support IMS MMTEL feature functionality instead of the device default ImsService for this * subscription. */ public static final String KEY_CONFIG_IMS_MMTEL_PACKAGE_OVERRIDE_STRING = "config_ims_mmtel_package_override_string"; /** * The package name containing the ImsService that will be bound to the telephony framework to * support IMS RCS feature functionality instead of the device default ImsService for this * subscription. */ public static final String KEY_CONFIG_IMS_RCS_PACKAGE_OVERRIDE_STRING = "config_ims_rcs_package_override_string"; /** * Override the package that will manage {@link SubscriptionPlan} * information instead of the {@link CarrierService} that defines this * value. * * @see SubscriptionManager#getSubscriptionPlans(int) * @see SubscriptionManager#setSubscriptionPlans(int, java.util.List) */ public static final String KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING = "config_plans_package_override_string"; /** * Override the platform's notion of a network operator being considered roaming. * Value is string array of SIDs to be considered roaming for 3GPP2 RATs. */ public static final String KEY_CDMA_ROAMING_NETWORKS_STRING_ARRAY = "cdma_roaming_networks_string_array"; /** * Override the platform's notion of a network operator being considered non roaming. * Value is string array of SIDs to be considered not roaming for 3GPP2 RATs. */ public static final String KEY_CDMA_NONROAMING_NETWORKS_STRING_ARRAY = "cdma_nonroaming_networks_string_array"; /** * Override the platform's notion of a network operator being considered non roaming. * If true all networks are considered as home network a.k.a. non-roaming. When false, * the 2 pairs of CMDA and GSM roaming/non-roaming arrays are consulted. * * @see #KEY_GSM_ROAMING_NETWORKS_STRING_ARRAY * @see #KEY_GSM_NONROAMING_NETWORKS_STRING_ARRAY * @see #KEY_CDMA_ROAMING_NETWORKS_STRING_ARRAY * @see #KEY_CDMA_NONROAMING_NETWORKS_STRING_ARRAY */ public static final String KEY_FORCE_HOME_NETWORK_BOOL = "force_home_network_bool"; /** * Flag specifying whether VoLTE should be available for carrier, independent of carrier * provisioning. If false: hard disabled. If true: then depends on carrier provisioning, * availability, etc. */ public static final String KEY_CARRIER_VOLTE_AVAILABLE_BOOL = "carrier_volte_available_bool"; /** * Flag specifying whether video telephony is available for carrier. If false: hard disabled. * If true: then depends on carrier provisioning, availability, etc. */ public static final String KEY_CARRIER_VT_AVAILABLE_BOOL = "carrier_vt_available_bool"; /** * Specify the method of selection for UE sending USSD requests. The default value is * {@link #USSD_OVER_CS_PREFERRED}. *

Available options: *

*/ public static final String KEY_CARRIER_USSD_METHOD_INT = "carrier_ussd_method_int"; /** * Flag specifying whether to show an alert dialog for 5G disable when the user disables VoLTE. * By default this value is {@code false}. * * @hide */ public static final String KEY_VOLTE_5G_LIMITED_ALERT_DIALOG_BOOL = "volte_5g_limited_alert_dialog_bool"; /** * Flag specifying whether the carrier wants to notify the user when a VT call has been handed * over from WIFI to LTE. *

* The handover notification is sent as a * {@link TelephonyManager#EVENT_HANDOVER_VIDEO_FROM_WIFI_TO_LTE} * {@link android.telecom.Connection} event, which an {@link android.telecom.InCallService} * should use to trigger the display of a user-facing message. *

* The Connection event is sent to the InCallService only once, the first time it occurs. * @hide */ public static final String KEY_NOTIFY_HANDOVER_VIDEO_FROM_WIFI_TO_LTE_BOOL = "notify_handover_video_from_wifi_to_lte_bool"; /** * Flag specifying whether the carrier supports merging a RTT call with a voice call, * downgrading the call in the process. * @hide */ public static final String KEY_ALLOW_MERGING_RTT_CALLS_BOOL = "allow_merging_rtt_calls_bool"; /** * Flag specifying whether the carrier wants to notify the user when a VT call has been handed * over from LTE to WIFI. *

* The handover notification is sent as a * {@link TelephonyManager#EVENT_HANDOVER_VIDEO_FROM_LTE_TO_WIFI} * {@link android.telecom.Connection} event, which an {@link android.telecom.InCallService} * should use to trigger the display of a user-facing message. * @hide */ public static final String KEY_NOTIFY_HANDOVER_VIDEO_FROM_LTE_TO_WIFI_BOOL = "notify_handover_video_from_lte_to_wifi_bool"; /** * Flag specifying whether the carrier supports downgrading a video call (tx, rx or tx/rx) * directly to an audio call. * @hide */ public static final String KEY_SUPPORT_DOWNGRADE_VT_TO_AUDIO_BOOL = "support_downgrade_vt_to_audio_bool"; /** * Where there is no preloaded voicemail number on a SIM card, specifies the carrier's default * voicemail number. * When empty string, no default voicemail number is specified. */ public static final String KEY_DEFAULT_VM_NUMBER_STRING = "default_vm_number_string"; /** * Where there is no preloaded voicemail number on a SIM card, specifies the carrier's default * voicemail number for roaming network. * When empty string, no default voicemail number is specified for roaming network. * @hide */ public static final String KEY_DEFAULT_VM_NUMBER_ROAMING_STRING = "default_vm_number_roaming_string"; /** * Where there is no preloaded voicemail number on a SIM card, specifies the carrier's default * voicemail number while the device is both roaming and not registered for IMS. * When empty string, no default voicemail number is specified for roaming network and * unregistered state in IMS. */ public static final String KEY_DEFAULT_VM_NUMBER_ROAMING_AND_IMS_UNREGISTERED_STRING = "default_vm_number_roaming_and_ims_unregistered_string"; /** * Flag that specifies to use the user's own phone number as the voicemail number when there is * no pre-loaded voicemail number on the SIM card. *

* {@link #KEY_DEFAULT_VM_NUMBER_STRING} takes precedence over this flag. *

* If false, the system default (*86) will be used instead. */ public static final String KEY_CONFIG_TELEPHONY_USE_OWN_NUMBER_FOR_VOICEMAIL_BOOL = "config_telephony_use_own_number_for_voicemail_bool"; /** * When {@code true}, changes to the mobile data enabled switch will not cause the VT * registration state to change. That is, turning on or off mobile data will not cause VT to be * enabled or disabled. * When {@code false}, disabling mobile data will cause VT to be de-registered. */ public static final String KEY_IGNORE_DATA_ENABLED_CHANGED_FOR_VIDEO_CALLS = "ignore_data_enabled_changed_for_video_calls"; /** * Flag indicating whether data used for a video call over LTE is metered or not. *

* When {@code true}, if the device hits the data limit or data is disabled during a ViLTE call, * the call will be downgraded to audio-only (or paused if * {@link #KEY_SUPPORT_PAUSE_IMS_VIDEO_CALLS_BOOL} is {@code true}). * * @hide */ public static final String KEY_VILTE_DATA_IS_METERED_BOOL = "vilte_data_is_metered_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. */ public static final String KEY_CARRIER_WFC_IMS_AVAILABLE_BOOL = "carrier_wfc_ims_available_bool"; /** * Flag specifying whether Cross SIM over IMS should be available for carrier. * When {@code false} the carrier does not support cross SIM calling. * When {@code true} the carrier does support cross sim calling, where available */ public static final String KEY_CARRIER_CROSS_SIM_IMS_AVAILABLE_BOOL = "carrier_cross_sim_ims_available_bool"; /** * Flag specifying whether cross sim calling on opportunistic data is supported for carrier. * When {@code false} the carrier does not support cross sim calling on opportunistic data. * When {@code true} the carrier does support cross sim calling on opportunistic data. */ public static final String KEY_ENABLE_CROSS_SIM_CALLING_ON_OPPORTUNISTIC_DATA_BOOL = "enable_cross_sim_calling_on_opportunistic_data_bool"; /** * Specifies a map from dialstrings to replacements for roaming network service numbers which * cannot be replaced on the carrier side. *

* Individual entries have the format: * [dialstring to replace]:[replacement] */ public static final String KEY_DIAL_STRING_REPLACE_STRING_ARRAY = "dial_string_replace_string_array"; /** * Specifies a map from dialstrings to replacements for international roaming network service * numbers which cannot be replaced on the carrier side. *

* Individual entries have the format: * [dialstring to replace]:[replacement] * @hide */ public static final String KEY_INTERNATIONAL_ROAMING_DIAL_STRING_REPLACE_STRING_ARRAY = "international_roaming_dial_string_replace_string_array"; /** * Flag specifying whether WFC over IMS supports the "wifi only" option. If false, the wifi * calling settings will not include an option for "wifi only". If true, the wifi calling * settings will include an option for "wifi only" *

* By default, it is assumed that WFC supports "wifi only". */ public static final String KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL = "carrier_wfc_supports_wifi_only_bool"; /** * Default mode for WFC over IMS on home network: *

*/ public static final String KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT = "carrier_default_wfc_ims_mode_int"; /** * Default mode for WFC over IMS on roaming network. * See {@link #KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT} for meaning of values. */ public static final String KEY_CARRIER_DEFAULT_WFC_IMS_ROAMING_MODE_INT = "carrier_default_wfc_ims_roaming_mode_int"; /** * Default WFC_IMS_enabled: true VoWiFi by default is on * false VoWiFi by default is off */ public static final String KEY_CARRIER_DEFAULT_WFC_IMS_ENABLED_BOOL = "carrier_default_wfc_ims_enabled_bool"; /** * Default WFC_IMS_roaming_enabled: true VoWiFi roaming by default is on * false VoWiFi roaming by default is off * @hide */ public static final String KEY_CARRIER_DEFAULT_WFC_IMS_ROAMING_ENABLED_BOOL = "carrier_default_wfc_ims_roaming_enabled_bool"; /** * Flag indicating whether failed calls due to no service should prompt the user to enable * WIFI calling. When {@code true}, if the user attempts to establish a call when there is no * service available, they are connected to WIFI, and WIFI calling is disabled, a different * call failure message will be used to encourage the user to enable WIFI calling. * @hide */ public static final String KEY_CARRIER_PROMOTE_WFC_ON_CALL_FAIL_BOOL = "carrier_promote_wfc_on_call_fail_bool"; /** * Flag specifying whether provisioning is required for RCS. */ public static final String KEY_CARRIER_RCS_PROVISIONING_REQUIRED_BOOL = "carrier_rcs_provisioning_required_bool"; /** * Flag specifying whether provisioning is required for VoLTE, Video Telephony, and WiFi * Calling. * Combines VoLTE, VT, VoWiFI calling provisioning into one parameter. * @deprecated Use {@link Ims#KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE} instead for * finer-grained control. * changing carrier_volte_provisioning_required_bool requires changes to * mmtel_requires_provisioning_bundle and vice versa * {@link Ims#KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE} */ @Deprecated public static final String KEY_CARRIER_VOLTE_PROVISIONING_REQUIRED_BOOL = "carrier_volte_provisioning_required_bool"; /** * Flag indicating whether or not the IMS MmTel UT capability requires carrier provisioning * before it can be set as enabled. * * If true, the UT capability will be set to false for the newly loaded subscription * and will require the carrier provisioning app to set the persistent provisioning result. * If false, the platform will not wait for provisioning status updates for the UT capability * and enable the UT over IMS capability for the subscription when the subscription is loaded. * * The default value for this key is {@code false}. * * @deprecated Use {@link Ims#KEY_MMTEL_REQUIRES_PROVISIONING_BUNDLE} instead for * determining if UT requires provisioning. */ @Deprecated public static final String KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL = "carrier_ut_provisioning_required_bool"; /** * Flag indicating whether or not the carrier supports Supplementary Services over the UT * interface for this subscription. * * If true, the device will use Supplementary Services over UT when provisioned (see * {@link #KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL}). If false, this device will fallback to * circuit switch for supplementary services and will disable this capability for IMS entirely. * * The default value for this key is {@code false}. */ public static final String KEY_CARRIER_SUPPORTS_SS_OVER_UT_BOOL = "carrier_supports_ss_over_ut_bool"; /** * Flag specifying if WFC provisioning depends on VoLTE provisioning. * * {@code false}: default value; honor actual WFC provisioning state. * {@code true}: when VoLTE is not provisioned, treat WFC as not provisioned; when VoLTE is * provisioned, honor actual WFC provisioning state. * * As of now, Verizon is the only carrier enforcing this dependency in their * WFC awareness and activation requirements. */ public static final String KEY_CARRIER_VOLTE_OVERRIDE_WFC_PROVISIONING_BOOL = "carrier_volte_override_wfc_provisioning_bool"; /** * Override the device's configuration for the cellular data service to use for this SIM card. * @hide */ public static final String KEY_CARRIER_DATA_SERVICE_WWAN_PACKAGE_OVERRIDE_STRING = "carrier_data_service_wwan_package_override_string"; /** * Override the device's configuration for the IWLAN data service to use for this SIM card. * @hide */ public static final String KEY_CARRIER_DATA_SERVICE_WLAN_PACKAGE_OVERRIDE_STRING = "carrier_data_service_wlan_package_override_string"; /** * Override the device's configuration for the cellular data service class to use * for this SIM card. * @hide */ public static final String KEY_CARRIER_DATA_SERVICE_WWAN_CLASS_OVERRIDE_STRING = "carrier_data_service_wwan_class_override_string"; /** * Override the device's configuration for the IWLAN data service class to use * for this SIM card. * @hide */ public static final String KEY_CARRIER_DATA_SERVICE_WLAN_CLASS_OVERRIDE_STRING = "carrier_data_service_wlan_class_override_string"; /** Flag specifying whether VoLTE TTY is supported. */ public static final String KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL = "carrier_volte_tty_supported_bool"; /** Flag specifying whether VoWIFI TTY is supported. * @hide */ public static final String KEY_CARRIER_VOWIFI_TTY_SUPPORTED_BOOL = "carrier_vowifi_tty_supported_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. */ public static final String KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL = "carrier_allow_turnoff_ims_bool"; /** * Flag specifying whether Generic Bootstrapping Architecture capable SIM is required for IMS. */ public static final String KEY_CARRIER_IMS_GBA_REQUIRED_BOOL = "carrier_ims_gba_required_bool"; /** * Flag specifying whether IMS instant lettering is available for the carrier. {@code True} if * instant lettering is available for the carrier, {@code false} otherwise. */ public static final String KEY_CARRIER_INSTANT_LETTERING_AVAILABLE_BOOL = "carrier_instant_lettering_available_bool"; /** * Flag specifying whether IMS should be the first phone attempted for E911 even if the * phone is not in service. */ public static final String KEY_CARRIER_USE_IMS_FIRST_FOR_EMERGENCY_BOOL = "carrier_use_ims_first_for_emergency_bool"; /** * When {@code true}, this carrier will preferentially dial normal routed emergency calls over * an in-service SIM if one is available. * @hide */ public static final String KEY_PREFER_IN_SERVICE_SIM_FOR_NORMAL_ROUTED_EMERGENCY_CALLS_BOOL = "prefer_in_service_sim_for_normal_routed_emergency_calls_bool"; /** * When {@code true}, the determination of whether to place a call as an emergency call will be * based on the known {@link android.telephony.emergency.EmergencyNumber}s for the SIM on which * the call is being placed. In a dual SIM scenario, if Sim A has the emergency numbers * 123, 456 and Sim B has the emergency numbers 789, and the user places a call on SIM A to 789, * it will not be treated as an emergency call in this case. * When {@code false}, the determination is based on the emergency numbers from all device SIMs, * regardless of which SIM the call is being placed on. If Sim A has the emergency numbers * 123, 456 and Sim B has the emergency numbers 789, and the user places a call on SIM A to 789, * the call will be dialed as an emergency number, but with an unspecified routing. * @hide */ public static final String KEY_USE_ONLY_DIALED_SIM_ECC_LIST_BOOL = "use_only_dialed_sim_ecc_list_bool"; /** * When IMS instant lettering is available for a carrier (see * {@link #KEY_CARRIER_INSTANT_LETTERING_AVAILABLE_BOOL}), determines the list of characters * which may not be contained in messages. Should be specified as a regular expression suitable * for use with {@link String#matches(String)}. */ public static final String KEY_CARRIER_INSTANT_LETTERING_INVALID_CHARS_STRING = "carrier_instant_lettering_invalid_chars_string"; /** * When IMS instant lettering is available for a carrier (see * {@link #KEY_CARRIER_INSTANT_LETTERING_AVAILABLE_BOOL}), determines a list of characters which * must be escaped with a backslash '\' character. Should be specified as a string containing * the characters to be escaped. For example to escape quote and backslash the string would be * a quote and a backslash. */ public static final String KEY_CARRIER_INSTANT_LETTERING_ESCAPED_CHARS_STRING = "carrier_instant_lettering_escaped_chars_string"; /** * When IMS instant lettering is available for a carrier (see * {@link #KEY_CARRIER_INSTANT_LETTERING_AVAILABLE_BOOL}), determines the character encoding * which will be used when determining the length of messages. Used in the InCall UI to limit * the number of characters the user may type. If empty-string, the instant lettering * message size limit will be enforced on a 1:1 basis. That is, each character will count * towards the messages size limit as a single byte. If a character encoding is specified, the * message size limit will be based on the number of bytes in the message per the specified * encoding. */ public static final String KEY_CARRIER_INSTANT_LETTERING_ENCODING_STRING = "carrier_instant_lettering_encoding_string"; /** * When IMS instant lettering is available for a carrier (see * {@link #KEY_CARRIER_INSTANT_LETTERING_AVAILABLE_BOOL}), the length limit for messages. Used * in the InCall UI to ensure the user cannot enter more characters than allowed by the carrier. * See also {@link #KEY_CARRIER_INSTANT_LETTERING_ENCODING_STRING} for more information on how * the length of the message is calculated. */ public static final String KEY_CARRIER_INSTANT_LETTERING_LENGTH_LIMIT_INT = "carrier_instant_lettering_length_limit_int"; /** * If Voice Radio Technology is RIL_RADIO_TECHNOLOGY_LTE:14 or RIL_RADIO_TECHNOLOGY_UNKNOWN:0 * this is the value that should be used instead. A configuration value of * RIL_RADIO_TECHNOLOGY_UNKNOWN:0 means there is no replacement value and that the default * assumption for phone type (GSM) should be used. */ public static final String KEY_VOLTE_REPLACEMENT_RAT_INT = "volte_replacement_rat_int"; /** * The default sim call manager to use when the default dialer doesn't implement one. A sim call * manager can control and route outgoing and incoming phone calls, even if they're placed * using another connection service (PSTN, for example). */ public static final String KEY_DEFAULT_SIM_CALL_MANAGER_STRING = "default_sim_call_manager_string"; /** * The default flag specifying whether ETWS/CMAS test setting is forcibly disabled in * Settings->More->Emergency broadcasts menu even though developer options is turned on. * @deprecated Use {@code com.android.cellbroadcastreceiver.CellBroadcastReceiver} resource * {@code show_test_settings} to control whether to show test alert settings or not. */ @Deprecated public static final String KEY_CARRIER_FORCE_DISABLE_ETWS_CMAS_TEST_BOOL = "carrier_force_disable_etws_cmas_test_bool"; /** * The default flag specifying whether "Allow alerts" option will be always shown in * emergency alerts settings regardless developer options is turned on or not. * * @deprecated The allow alerts option is always shown now. No longer need a config for that. */ @Deprecated public static final String KEY_ALWAYS_SHOW_EMERGENCY_ALERT_ONOFF_BOOL = "always_show_emergency_alert_onoff_bool"; /** * Default mobile network MTU value, in bytes. * @hide */ public static final String KEY_DEFAULT_MTU_INT = "default_mtu_int"; /** * Delay in milliseconds for retrying APN after disconnect * @hide */ public static final String KEY_CARRIER_DATA_CALL_APN_RETRY_AFTER_DISCONNECT_LONG = "carrier_data_call_apn_retry_after_disconnect_long"; /** * Data call setup permanent failure causes by the carrier. * * @deprecated This API key was added in mistake and is not used anymore by the telephony data * frameworks. */ @Deprecated public static final String KEY_CARRIER_DATA_CALL_PERMANENT_FAILURE_STRINGS = "carrier_data_call_permanent_failure_strings"; /** * A string array indicating the default APN types that are metered by the carrier. * * The string in the array is the name of the APN type. For example, "default" for * {@link ApnSetting#TYPE_DEFAULT}, "mms" for {@link ApnSetting#TYPE_MMS}, etc. * * The default value is {@code {"default", "mms", "dun", "supl"}}. * * @see ApnSetting#TYPE_DEFAULT * @see ApnSetting#TYPE_MMS * @see ApnSetting#TYPE_SUPL * @see ApnSetting#TYPE_DUN * @see ApnSetting#TYPE_HIPRI * @see ApnSetting#TYPE_FOTA * @see ApnSetting#TYPE_IMS * @see ApnSetting#TYPE_CBS * @see ApnSetting#TYPE_IA * @see ApnSetting#TYPE_EMERGENCY * @see ApnSetting#TYPE_MCX * @see ApnSetting#TYPE_XCAP * @see ApnSetting#TYPE_BIP * @see ApnSetting#TYPE_VSIM * @see ApnSetting#TYPE_ENTERPRISE */ public static final String KEY_CARRIER_METERED_APN_TYPES_STRINGS = "carrier_metered_apn_types_strings"; /** * A string array indicating the default APN types that are roaming-metered by the carrier. * * The string in the array is the name of the APN type. For example, "default" for * {@link ApnSetting#TYPE_DEFAULT}, "mms" for {@link ApnSetting#TYPE_MMS}, etc. * * The default value is {@code {"default", "mms", "dun", "supl"}}. * * @see ApnSetting#TYPE_DEFAULT * @see ApnSetting#TYPE_MMS * @see ApnSetting#TYPE_SUPL * @see ApnSetting#TYPE_DUN * @see ApnSetting#TYPE_HIPRI * @see ApnSetting#TYPE_FOTA * @see ApnSetting#TYPE_IMS * @see ApnSetting#TYPE_CBS * @see ApnSetting#TYPE_IA * @see ApnSetting#TYPE_EMERGENCY * @see ApnSetting#TYPE_MCX * @see ApnSetting#TYPE_XCAP * @see ApnSetting#TYPE_BIP * @see ApnSetting#TYPE_VSIM * @see ApnSetting#TYPE_ENTERPRISE */ public static final String KEY_CARRIER_METERED_ROAMING_APN_TYPES_STRINGS = "carrier_metered_roaming_apn_types_strings"; /** * CDMA carrier ERI (Enhanced Roaming Indicator) file name * @hide */ public static final String KEY_CARRIER_ERI_FILE_NAME_STRING = "carrier_eri_file_name_string"; /* The following 3 fields are related to carrier visual voicemail. */ /** * The carrier number mobile outgoing (MO) sms messages are sent to. */ public static final String KEY_VVM_DESTINATION_NUMBER_STRING = "vvm_destination_number_string"; /** * The port through which the mobile outgoing (MO) sms messages are sent through. */ public static final String KEY_VVM_PORT_NUMBER_INT = "vvm_port_number_int"; /** * The type of visual voicemail protocol the carrier adheres to. See {@link TelephonyManager} * for possible values. For example {@link TelephonyManager#VVM_TYPE_OMTP}. */ public static final String KEY_VVM_TYPE_STRING = "vvm_type_string"; /** * Whether cellular data is required to access visual voicemail. */ public static final String KEY_VVM_CELLULAR_DATA_REQUIRED_BOOL = "vvm_cellular_data_required_bool"; /** * The default OMTP visual voicemail client prefix to use. Defaulted to "//VVM" */ public static final String KEY_VVM_CLIENT_PREFIX_STRING = "vvm_client_prefix_string"; /** * Whether to use SSL to connect to the visual voicemail IMAP server. Defaulted to false. */ public static final String KEY_VVM_SSL_ENABLED_BOOL = "vvm_ssl_enabled_bool"; /** * A set of capabilities that should not be used even if it is reported by the visual voicemail * IMAP CAPABILITY command. */ public static final String KEY_VVM_DISABLED_CAPABILITIES_STRING_ARRAY = "vvm_disabled_capabilities_string_array"; /** * Whether legacy mode should be used when the visual voicemail client is disabled. * *

Legacy mode is a mode that on the carrier side visual voicemail is still activated, but on * the client side all network operations are disabled. SMSs are still monitored so a new * message SYNC SMS will be translated to show a message waiting indicator, like traditional * voicemails. * *

This is for carriers that does not support VVM deactivation so voicemail can continue to * function without the data cost. */ public static final String KEY_VVM_LEGACY_MODE_ENABLED_BOOL = "vvm_legacy_mode_enabled_bool"; /** * Whether to prefetch audio data on new voicemail arrival, defaulted to true. */ public static final String KEY_VVM_PREFETCH_BOOL = "vvm_prefetch_bool"; /** * The package name of the carrier's visual voicemail app to ensure that dialer visual voicemail * and carrier visual voicemail are not active at the same time. * * @deprecated use {@link #KEY_CARRIER_VVM_PACKAGE_NAME_STRING_ARRAY}. */ @Deprecated public static final String KEY_CARRIER_VVM_PACKAGE_NAME_STRING = "carrier_vvm_package_name_string"; /** * A list of the carrier's visual voicemail app package names to ensure that dialer visual * voicemail and carrier visual voicemail are not active at the same time. */ public static final String KEY_CARRIER_VVM_PACKAGE_NAME_STRING_ARRAY = "carrier_vvm_package_name_string_array"; /** * Flag specifying whether ICCID is showed in SIM Status screen, default to false. */ public static final String KEY_SHOW_ICCID_IN_SIM_STATUS_BOOL = "show_iccid_in_sim_status_bool"; /** * Flag specifying whether the {@link android.telephony.SignalStrength} is shown in the SIM * Status screen. The default value is true. */ public static final String KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL = "show_signal_strength_in_sim_status_bool"; /** * Flag specifying if we should interpret all signal strength as one bar higher * This is a replacement for the former resource config_inflateSignalStrength * The default value is false. * @hide */ public static final String KEY_INFLATE_SIGNAL_STRENGTH_BOOL = "inflate_signal_strength_bool"; /** * Flag specifying whether an additional (client initiated) intent needs to be sent on System * update */ public static final String KEY_CI_ACTION_ON_SYS_UPDATE_BOOL = "ci_action_on_sys_update_bool"; /** * Intent to be sent for the additional action on System update */ public static final String KEY_CI_ACTION_ON_SYS_UPDATE_INTENT_STRING = "ci_action_on_sys_update_intent_string"; /** * Extra to be included in the intent sent for additional action on System update */ public static final String KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_STRING = "ci_action_on_sys_update_extra_string"; /** * Value of extra included in intent sent for additional action on System update */ public static final String KEY_CI_ACTION_ON_SYS_UPDATE_EXTRA_VAL_STRING = "ci_action_on_sys_update_extra_val_string"; /** * Specifies the amount of gap to be added in millis between postdial DTMF tones. When a * non-zero value is specified, the UE shall wait for the specified amount of time before it * sends out successive DTMF tones on the network. */ public static final String KEY_GSM_DTMF_TONE_DELAY_INT = "gsm_dtmf_tone_delay_int"; /** * Specifies the amount of gap to be added in millis between DTMF tones. When a non-zero value * is specified, the UE shall wait for the specified amount of time before it sends out * successive DTMF tones on the network. */ public static final String KEY_IMS_DTMF_TONE_DELAY_INT = "ims_dtmf_tone_delay_int"; /** * Specifies the amount of gap to be added in millis between postdial DTMF tones. When a * non-zero value is specified, the UE shall wait for the specified amount of time before it * sends out successive DTMF tones on the network. */ public static final String KEY_CDMA_DTMF_TONE_DELAY_INT = "cdma_dtmf_tone_delay_int"; /** * Some carriers will send call forwarding responses for voicemail in a format that is not 3gpp * compliant, which causes issues during parsing. This causes the * {@link com.android.internal.telephony.CallForwardInfo#number} to contain non-numerical * characters instead of a number. * * If true, we will detect the non-numerical characters and replace them with "Voicemail". * @hide */ public static final String KEY_CALL_FORWARDING_MAP_NON_NUMBER_TO_VOICEMAIL_BOOL = "call_forwarding_map_non_number_to_voicemail_bool"; /** * When {@code true}, the phone will always tell the IMS stack to keep RTT enabled and * determine on a per-call basis (based on extras from the dialer app) whether a call should be * an RTT call or not. * * When {@code false}, the old behavior is used, where the toggle in accessibility settings is * used to set the IMS stack's RTT enabled state. */ public static final String KEY_IGNORE_RTT_MODE_SETTING_BOOL = "ignore_rtt_mode_setting_bool"; /** * Determines whether adhoc conference calls are supported by a carrier. When {@code true}, * adhoc conference calling is supported, {@code false otherwise}. */ public static final String KEY_SUPPORT_ADHOC_CONFERENCE_CALLS_BOOL = "support_adhoc_conference_calls_bool"; /** * Determines whether conference participants can be added to existing call to form an adhoc * conference call (in contrast to merging calls to form a conference). When {@code true}, * adding conference participants to existing call is supported, {@code false otherwise}. */ public static final String KEY_SUPPORT_ADD_CONFERENCE_PARTICIPANTS_BOOL = "support_add_conference_participants_bool"; /** * Determines whether conference calls are supported by a carrier. When {@code true}, * conference calling is supported, {@code false otherwise}. */ public static final String KEY_SUPPORT_CONFERENCE_CALL_BOOL = "support_conference_call_bool"; /** * Determines whether a maximum size limit for IMS conference calls is enforced on the device. * When {@code true}, IMS conference calls will be limited to at most * {@link #KEY_IMS_CONFERENCE_SIZE_LIMIT_INT} participants. When {@code false}, no attempt is * made to limit the number of participants in a conference (the carrier will raise an error * when an attempt is made to merge too many participants into a conference). *

* Note: The maximum size of a conference can ONLY be supported where * {@link #KEY_SUPPORT_IMS_CONFERENCE_EVENT_PACKAGE_BOOL} is {@code true} since the platform * needs conference event package data to accurately know the number of participants in the * conference. */ public static final String KEY_IS_IMS_CONFERENCE_SIZE_ENFORCED_BOOL = "is_ims_conference_size_enforced_bool"; /** * Determines the maximum number of participants the carrier supports for a conference call. * This number is exclusive of the current device. A conference between 3 devices, for example, * would have a size limit of 2 participants. * Enforced when {@link #KEY_IS_IMS_CONFERENCE_SIZE_ENFORCED_BOOL} is {@code true}. */ public static final String KEY_IMS_CONFERENCE_SIZE_LIMIT_INT = "ims_conference_size_limit_int"; /** * Determines whether manage IMS conference calls is supported by a carrier. When {@code true}, * manage IMS conference call is supported, {@code false otherwise}. * @hide */ public static final String KEY_SUPPORT_MANAGE_IMS_CONFERENCE_CALL_BOOL = "support_manage_ims_conference_call_bool"; /** * Determines whether the IMS conference merge process supports and returns its participants * data. When {@code true}, on merge complete, conference call would have a list of its * participants returned in XML format, {@code false otherwise}. */ public static final String KEY_SUPPORT_IMS_CONFERENCE_EVENT_PACKAGE_BOOL = "support_ims_conference_event_package_bool"; /** * Determines whether processing of conference event package data received on a device other * than the conference host is supported. *

* When a device A merges calls B and C into a conference it is considered the conference host * and B and C are considered the conference peers. *

* When {@code true}, the conference peer will display the conference state if it receives * conference event package data from the network. When {@code false}, the conference peer will * ignore conference event package data received from the network. * @hide */ public static final String KEY_SUPPORT_IMS_CONFERENCE_EVENT_PACKAGE_ON_PEER_BOOL = "support_ims_conference_event_package_on_peer_bool"; /** * Indicates whether the carrier supports the use of RFC8285 compliant RTP header extensions for * the purpose of device to device communication while in a call. *

* See also {@link #KEY_SUPPORTS_SDP_NEGOTIATION_OF_D2D_RTP_HEADER_EXTENSIONS_BOOL}. */ public static final String KEY_SUPPORTS_DEVICE_TO_DEVICE_COMMUNICATION_USING_RTP_BOOL = "supports_device_to_device_communication_using_rtp_bool"; /** * Indicates whether the carrier supports the negotiations of RFC8285 compliant RTP header * extensions supported on a call during the Session Description Protocol (SDP). This option * is only used when {@link #KEY_SUPPORTS_DEVICE_TO_DEVICE_COMMUNICATION_USING_RTP_BOOL} is * {@code true}. *

* When {@code true}, the RTP header extensions the platform uses for device to device * communication will be offered to the remote end during the SDP negotiation process. * When {@code false}, the RTP header extensions will not be negotiated during the SDP * negotiation process and the platform will send RTP header extensions without prior * negotiation if {@link #KEY_SUPPORTS_DEVICE_TO_DEVICE_COMMUNICATION_USING_RTP_BOOL} is * {@code true}. */ public static final String KEY_SUPPORTS_SDP_NEGOTIATION_OF_D2D_RTP_HEADER_EXTENSIONS_BOOL = "supports_sdp_negotiation_of_d2d_rtp_header_extensions_bool"; /** * Indicates whether the carrier supports the use of DTMF digits A-D for the purpose of device * to device communication while in a call. */ public static final String KEY_SUPPORTS_DEVICE_TO_DEVICE_COMMUNICATION_USING_DTMF_BOOL = "supports_device_to_device_communication_using_dtmf_bool"; /** * Determines whether High Definition audio property is displayed in the dialer UI. * If {@code false}, remove the HD audio property from the connection so that HD audio related * UI is not displayed. If {@code true}, keep HD audio property as it is configured. */ public static final String KEY_DISPLAY_HD_AUDIO_PROPERTY_BOOL = "display_hd_audio_property_bool"; /** * Determines whether IMS conference calls are supported by a carrier. When {@code true}, * IMS conference calling is supported, {@code false} otherwise. * @hide */ public static final String KEY_SUPPORT_IMS_CONFERENCE_CALL_BOOL = "support_ims_conference_call_bool"; /** * Determines whether the device will locally disconnect an IMS conference when the participant * count drops to zero. When {@code true}, it is assumed the carrier does NOT disconnect a * conference when the participant count drops to zero and that the device must do this by * disconnecting the conference locally. When {@code false}, it is assumed that the carrier * is responsible for disconnecting the conference when there are no longer any participants * present. *

* Note: both {@link #KEY_SUPPORT_IMS_CONFERENCE_CALL_BOOL} and * {@link #KEY_SUPPORT_IMS_CONFERENCE_EVENT_PACKAGE_BOOL} must be true for this configuration to * have any effect. *

* Defaults to {@code false}, meaning the carrier network is responsible for disconnecting an * empty IMS conference. * @hide */ public static final String KEY_LOCAL_DISCONNECT_EMPTY_IMS_CONFERENCE_BOOL = "local_disconnect_empty_ims_conference_bool"; /** * Determines whether video conference calls are supported by a carrier. When {@code true}, * video calls can be merged into conference calls, {@code false} otherwise. *

* Note: even if video conference calls are not supported, audio calls may be merged into a * conference if {@link #KEY_SUPPORT_CONFERENCE_CALL_BOOL} is {@code true}. * @hide */ public static final String KEY_SUPPORT_VIDEO_CONFERENCE_CALL_BOOL = "support_video_conference_call_bool"; /** * Determine whether user can toggle Enhanced 4G LTE Mode in Settings. */ public static final String KEY_EDITABLE_ENHANCED_4G_LTE_BOOL = "editable_enhanced_4g_lte_bool"; /** * Determines whether the Enhanced 4G LTE 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 4G LTE or not. */ public static final String KEY_HIDE_ENHANCED_4G_LTE_BOOL = "hide_enhanced_4g_lte_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. */ public static final String KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL = "enhanced_4g_lte_on_by_default_bool"; /** * Determine whether IMS apn can be shown. */ public static final String KEY_HIDE_IMS_APN_BOOL = "hide_ims_apn_bool"; /** * Determine whether preferred network type can be shown. */ public static final String KEY_HIDE_PREFERRED_NETWORK_TYPE_BOOL = "hide_preferred_network_type_bool"; /** * String array for package names that need to be enabled for this carrier. * If user has explicitly disabled some packages in the list, won't re-enable. * Other carrier specific apps which are not in this list may be disabled for current carrier, * and only be re-enabled when this config for another carrier includes it. * * @hide */ public static final String KEY_ENABLE_APPS_STRING_ARRAY = "enable_apps_string_array"; /** * Determine whether user can switch Wi-Fi preferred or Cellular preferred * in calling preference. * Some operators support Wi-Fi Calling only, not VoLTE. * They don't need "Cellular preferred" option. * In this case, set uneditable attribute for preferred preference. */ public static final String KEY_EDITABLE_WFC_MODE_BOOL = "editable_wfc_mode_bool"; /** * Flag to indicate if Wi-Fi needs to be disabled in ECBM. */ public static final String KEY_CONFIG_WIFI_DISABLE_IN_ECBM = "config_wifi_disable_in_ecbm"; /** * List operator-specific error codes and indices of corresponding error strings in * wfcOperatorErrorAlertMessages and wfcOperatorErrorNotificationMessages. * * Example: "REG09|0" specifies error code "REG09" and index "0". This index will be * used to find alert and notification messages in wfcOperatorErrorAlertMessages and * wfcOperatorErrorNotificationMessages. * * @hide */ public static final String KEY_WFC_OPERATOR_ERROR_CODES_STRING_ARRAY = "wfc_operator_error_codes_string_array"; /** * Indexes of SPN format strings in wfcSpnFormats. * *

Available options are: *