diff --git a/res/values/config.xml b/res/values/config.xml
index fa730d4..fbbbcd6 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -212,4 +212,7 @@
 
     <!-- Flag indicating whether to allow pstn phone accounts [DO NOT TRANSLATE] -->
     <bool name="config_pstn_phone_accounts_enabled">true</bool>
+
+    <!-- Flag indicating whether the the emergency phone account should be emergency calls only -->
+    <bool name="config_emergency_account_emergency_calls_only">false</bool>
 </resources>
diff --git a/src/com/android/services/telephony/TelecomAccountRegistry.java b/src/com/android/services/telephony/TelecomAccountRegistry.java
index 8cee71a..d43a4a0 100644
--- a/src/com/android/services/telephony/TelecomAccountRegistry.java
+++ b/src/com/android/services/telephony/TelecomAccountRegistry.java
@@ -174,9 +174,8 @@
             }
             mIsMergeCallSupported = isCarrierMergeCallSupported();
 
-            if (isEmergency && mContext.getPackageManager().hasSystemFeature(
-                    PackageManager.FEATURE_WATCH)) {
-                // For Wear, we mark the emergency phone account as emergency calls only.
+            if (isEmergency && mContext.getResources().getBoolean(
+                    R.bool.config_emergency_account_emergency_calls_only)) {
                 capabilities |= PhoneAccount.CAPABILITY_EMERGENCY_CALLS_ONLY;
             }
 
@@ -427,8 +426,14 @@
     private void cleanupPhoneAccounts() {
         ComponentName telephonyComponentName =
                 new ComponentName(mContext, TelephonyConnectionService.class);
-        List<PhoneAccountHandle> accountHandles =
-                mTelecomManager.getCallCapablePhoneAccounts(true /* includeDisabled */);
+        // This config indicates whether the emergency account was flagged as emergency calls only
+        // in which case we need to consider all phone accounts, not just the call capable ones.
+        final boolean emergencyCallsOnlyEmergencyAccount = mContext.getResources().getBoolean(
+                R.bool.config_emergency_account_emergency_calls_only);
+        List<PhoneAccountHandle> accountHandles = emergencyCallsOnlyEmergencyAccount
+                ? mTelecomManager.getAllPhoneAccountHandles()
+                : mTelecomManager.getCallCapablePhoneAccounts(true /* includeDisabled */);
+
         for (PhoneAccountHandle handle : accountHandles) {
             if (telephonyComponentName.equals(handle.getComponentName()) &&
                     !hasAccountEntryForPhoneAccount(handle)) {
