diff --git a/res/values/config.xml b/res/values/config.xml
index 2078049..8bd7a52 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -225,4 +225,10 @@
 
     <!-- The package name for the platform carrier config app, bundled with system image. -->
     <string name="platform_carrier_config_package" translatable="false">com.android.carrierconfig</string>
+
+    <!-- Flag indicating whether the TelephonyConnectionService supports the handover of calls from
+         the TelephonyConnectionService to another ConnectionService defined in the system.
+         Telecom performs the handover by placing a call using the "to" ConnectionService, and then
+         disconnecting the ongoing Telephony call when the call goes active. -->
+    <bool name="config_support_handover_from">false</bool>
 </resources>
diff --git a/src/com/android/services/telephony/TelecomAccountRegistry.java b/src/com/android/services/telephony/TelecomAccountRegistry.java
index b27d583..32ba0a0 100644
--- a/src/com/android/services/telephony/TelecomAccountRegistry.java
+++ b/src/com/android/services/telephony/TelecomAccountRegistry.java
@@ -210,11 +210,21 @@
             }
 
             mIsVideoPauseSupported = isCarrierVideoPauseSupported();
-            Bundle instantLetteringExtras = null;
+            Bundle extras = new Bundle();
             if (isCarrierInstantLetteringSupported()) {
                 capabilities |= PhoneAccount.CAPABILITY_CALL_SUBJECT;
-                instantLetteringExtras = getPhoneAccountExtras();
+                extras.putAll(getPhoneAccountExtras());
             }
+
+            final boolean isHandoverFromSupported = mContext.getResources().getBoolean(
+                    R.bool.config_support_handover_from);
+            if (isHandoverFromSupported && !isEmergency) {
+                // Only set the extra is handover is supported and this isn't the emergency-only
+                // acct.
+                extras.putBoolean(PhoneAccount.EXTRA_SUPPORTS_HANDOVER_FROM,
+                        isHandoverFromSupported);
+            }
+
             mIsMergeCallSupported = isCarrierMergeCallSupported();
             mIsMergeImsCallSupported = isCarrierMergeImsCallSupported();
             mIsVideoConferencingSupported = isCarrierVideoConferencingSupported();
@@ -270,7 +280,7 @@
                     .setShortDescription(description)
                     .setSupportedUriSchemes(Arrays.asList(
                             PhoneAccount.SCHEME_TEL, PhoneAccount.SCHEME_VOICEMAIL))
-                    .setExtras(instantLetteringExtras)
+                    .setExtras(extras)
                     .setGroupId(groupId)
                     .build();
 
@@ -384,6 +394,8 @@
         }
 
         /**
+         * Where a device supports instant lettering and call subjects, retrieves the necessary
+         * PhoneAccount extras for those features.
          * @return The {@link PhoneAccount} extras associated with the current subscription.
          */
         private Bundle getPhoneAccountExtras() {
