Merge "Clean up emergency app overlay intent" into qt-dev
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 8f463c1..f0c3b30 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -392,7 +392,7 @@
     <item msgid="6043847456049107742">"১"</item>
   </string-array>
     <string name="cdma_activate_device" msgid="3793805892364814518">"ডিভাইস সক্রিয় করুন"</string>
-    <string name="cdma_lte_data_service" msgid="4255018217292548962">"ডেটা পরিষেবা সেট আপ করুন"</string>
+    <string name="cdma_lte_data_service" msgid="4255018217292548962">"ডেটা পরিষেবা সেট-আপ করুন"</string>
     <string name="carrier_settings_title" msgid="9028166176523012300">"ক্যারিয়ার সেটিংস"</string>
     <string name="fdn" msgid="7878832555095183202">"স্থায়ী ডায়ালের নম্বরগুলি"</string>
     <string name="fdn_with_label" msgid="187084204115493366">"ফিক্সড ডায়ালিং নাম্বার (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 0374ff3..8ebe1ac 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -444,7 +444,7 @@
     <string name="simContacts_title" msgid="1861472842524839921">"Kontakte für Import auswählen"</string>
     <string name="simContacts_airplaneMode" msgid="5254946758982621072">"Deaktiviere den Flugmodus, um Kontakte von der SIM-Karte zu importieren."</string>
     <string name="enable_pin" msgid="5422767284133234860">"PIN-Abfrage für SIM-Karte aktivieren/deaktivieren"</string>
-    <string name="change_pin" msgid="9174186126330785343">"SIM-PIN ändern"</string>
+    <string name="change_pin" msgid="9174186126330785343">"PIN für SIM-Karte ändern"</string>
     <string name="enter_pin_text" msgid="8532615714751931951">"PIN der SIM-Karte:"</string>
     <string name="oldPinLabel" msgid="5287773661246368314">"Alte PIN"</string>
     <string name="newPinLabel" msgid="207488227285336897">"Neue PIN"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 03ae83e..f510813 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -34,7 +34,7 @@
     <string name="ok" msgid="3811371167865772377">"Ados"</string>
     <string name="audio_mode_speaker" msgid="27649582100085266">"Bozgorailua"</string>
     <string name="audio_mode_earpiece" msgid="4156527186373869107">"Aurikularrak"</string>
-    <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Kabledun entzungailua"</string>
+    <string name="audio_mode_wired_headset" msgid="1465350758489175975">"Entzungailu kableduna"</string>
     <string name="audio_mode_bluetooth" msgid="3047641300848211128">"Bluetooth entzungailua"</string>
     <string name="wait_prompt_str" msgid="7601815427707856238">"Ondorengo tonuak bidali?\n"</string>
     <string name="pause_prompt_str" msgid="1789964702154314806">"Tonuak bidaltzen\n"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index ada89b6..60058c9 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -65,7 +65,7 @@
     <string name="phone_accounts_make_sip_calls_with" msgid="4677789312053828493">"આના વડે SIP કૉલ્સ કરો"</string>
     <string name="phone_accounts_ask_every_time" msgid="4346499067149985702">"પહેલાં પૂછો"</string>
     <string name="phone_accounts_default_account_label" msgid="4183772241814460014">"કોઇ નેટવર્ક ઉપલબ્ધ નથી"</string>
-    <string name="phone_accounts_settings_header" msgid="4141710640883261094">"સેટિંગ્સ"</string>
+    <string name="phone_accounts_settings_header" msgid="4141710640883261094">"સેટિંગ"</string>
     <string name="phone_accounts_choose_accounts" msgid="5232948804226424002">"એકાઉન્ટ્સ પસંદ કરો"</string>
     <string name="phone_accounts_selection_header" msgid="1365215726106915865">"ફોન એકાઉન્ટ્સ"</string>
     <string name="phone_accounts_add_sip_account" msgid="2023821743341923271">"SIP એકાઉન્ટ ઉમેરો"</string>
@@ -80,7 +80,7 @@
     <string name="make_and_receive_calls" msgid="1258596928285972166">"કૉલ કરો અને પ્રાપ્ત કરો"</string>
     <string name="smart_forwarding_settings_menu" msgid="3874243342391798449">"સ્માર્ટ ફૉરવર્ડિંગ"</string>
     <string name="smart_forwarding_settings_menu_summary" msgid="8962247659470565059">"એક નંબર પર પહોંચી શકાય તેમ ન હોય, ત્યારે હંમેશાં તમારા અન્ય નંબર પર કૉલ ફૉરવર્ડ કરો"</string>
-    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"સૂચનાઓ"</string>
+    <string name="voicemail_notifications_preference_title" msgid="4019728578955102213">"નોટિફિકેશન"</string>
     <string name="cell_broadcast_settings" msgid="8740238216690502563">"કટોકટીના બ્રોડકાસ્ટ્સ"</string>
     <string name="call_settings" msgid="6112441768261754562">"કૉલ સેટિંગ્સ"</string>
     <string name="additional_gsm_call_settings" msgid="1391795981938800617">"વધારાની સેટિંગ્સ"</string>
@@ -123,8 +123,8 @@
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"જ્યારે તમારો ફોન પહોંચયોગ્ય ન હોય ત્યારે તમારા કેરિઅર કૉલ ફોરવર્ડિંગને અક્ષમ કરવાને સમર્થન આપતા નથી."</string>
     <string name="updating_title" msgid="6146755386174019046">"કૉલ સેટિંગ્સ"</string>
     <string name="call_settings_admin_user_only" msgid="4526094783818216374">"કૉલ સેટિંગ્સને ફક્ત એડમિન વપરાશકર્તા દ્વારા જ બદલી શકાય છે."</string>
-    <string name="call_settings_with_label" msgid="3401177261468593519">"સેટિંગ્સ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
-    <string name="error_updating_title" msgid="7970259216988931777">"કૉલ સેટિંગ્સની ભૂલ"</string>
+    <string name="call_settings_with_label" msgid="3401177261468593519">"સેટિંગ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
+    <string name="error_updating_title" msgid="7970259216988931777">"કૉલ સેટિંગની ભૂલ"</string>
     <string name="reading_settings" msgid="1920291699287055284">"સેટિંગ્સ વાંચી રહ્યાં છે…"</string>
     <string name="updating_settings" msgid="8171225533884883252">"સેટિંગ્સ અપડેટ કરી રહ્યાં છે..."</string>
     <string name="reverting_settings" msgid="4752151682666912828">"સેટિંગ્સ પાછી ફરાવી રહ્યાં છે…"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 39c6d75..7e48172 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -134,7 +134,7 @@
     <string name="stk_cc_ss_to_ussd_error" msgid="6095812685884176176">"SS अनुरोध को USSD अनुरोध में बदला गया"</string>
     <string name="stk_cc_ss_to_ss_error" msgid="7920654012697945858">"नए SS अनुरोध में बदला गया"</string>
     <string name="stk_cc_ss_to_dial_video_error" msgid="3873905132181743781">"SS अनुरोध को वीडियो कॉल में बदला गया"</string>
-    <string name="fdn_check_failure" msgid="18200614306525434">"आपके फ़ोन ऐप्स की फ़िक्‍स्‍ड डायलिंग नंबर सेटिंग चालू है. इसके परिणामस्‍वरूप, कॉल से संबंधित कुछ सुविधाएं कार्य नहीं कर रही हैं."</string>
+    <string name="fdn_check_failure" msgid="18200614306525434">"आपके फ़ोन ऐप्स की फ़िक्‍स्‍ड डायलिंग नंबर सेटिंग चालू है. इसके परिणामस्‍वरूप, कॉल से संबंधित कुछ सुविधाएं काम नहीं कर रही हैं."</string>
     <string name="radio_off_error" msgid="2304459933248513376">"इन सेटिंग को देखने के पहले रेडियो चालू करें."</string>
     <string name="close_dialog" msgid="2365884406356986917">"ठीक है"</string>
     <string name="enable" msgid="7248657275000173526">"चालू करें"</string>
@@ -447,8 +447,8 @@
     <string name="oldPinLabel" msgid="5287773661246368314">"पुराना पिन"</string>
     <string name="newPinLabel" msgid="207488227285336897">"नया पिन"</string>
     <string name="confirmPinLabel" msgid="257597715098070206">"नए पिन की दुबारा पूछें"</string>
-    <string name="badPin" msgid="8955102849303984935">"आपके द्वारा लिखा गया पुराना पिन सही नहीं है. फिर से प्रयास करें."</string>
-    <string name="mismatchPin" msgid="5923253370683071889">"आपके द्वारा लिखे गए पिन का मिलान नहीं होता. फिर से प्रयास करें."</string>
+    <string name="badPin" msgid="8955102849303984935">"  लिखा गया पुराना पिन सही नहीं है. फिर से प्रयास करें."</string>
+    <string name="mismatchPin" msgid="5923253370683071889">"  लिखे गए पिन का मिलान नहीं होता. फिर से प्रयास करें."</string>
     <string name="invalidPin" msgid="5981171102258684792">"कोई ऐसा पिन लिखें, जिसमें 4 से 8 अंक हों."</string>
     <string name="disable_sim_pin" msgid="3419351358300716472">"सिम पिन साफ़ करें"</string>
     <string name="enable_sim_pin" msgid="4845145659651484248">"सिम पिन सेट करें"</string>
@@ -475,7 +475,7 @@
     <string name="pin2_attempts" msgid="720736232885011507">\n"आपके पास <xliff:g id="NUMBER">%d</xliff:g> प्रयास शेष हैं."</string>
     <string name="pin2_unblocked" msgid="7791600368153469078">"PIN2 अब अवरोधित नहीं है"</string>
     <string name="pin2_error_exception" msgid="1088689322248996699">"नेटवर्क या SIM कार्ड गड़बड़ी"</string>
-    <string name="doneButton" msgid="2859593360997984240">"पूर्ण"</string>
+    <string name="doneButton" msgid="2859593360997984240">"पूरा हो गया"</string>
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"वॉइसमेल नबंर"</string>
     <string name="card_title_dialing" msgid="5769417478498348054">"डायल हो रहा है"</string>
     <string name="card_title_redialing" msgid="8253487008234167266">"फिर से डायल हो रहा है"</string>
@@ -554,7 +554,7 @@
     <string name="rtt_mode_more_information" msgid="6080420780730383030">"आरटीटी उन कॉल करने वालों की मदद करता है, जो सुन नहीं सकते हैं, ऊंचा सुनते हैं, जिन्हें बोलने में दिक्कत है या जिनके लिए सिर्फ़ आवाज़ काफ़ी नहीं होती.&lt;br&gt; &lt;a href=<xliff:g id="URL">http://support.google.com/mobile?p=telephony_rtt</xliff:g>&gt;ज़्यादा  जानें&lt;/a&gt;\n       &lt;br&gt;&lt;br&gt; - आरटीटी कॉल, मैसेज लेख के रूप में सेव किए जाते हैं\n       &lt;br&gt; - वीडियो कॉल के लिए आरटीटी उपलब्ध नहीं है"</string>
   <string-array name="tty_mode_entries">
     <item msgid="512950011423868021">"TTY बंद"</item>
-    <item msgid="3971695875449640648">"TTY पूर्ण"</item>
+    <item msgid="3971695875449640648">"TTY पूरा हुआ"</item>
     <item msgid="1937509904407445684">"TTY HCO"</item>
     <item msgid="5644925873488772224">"TTY VCO"</item>
   </string-array>
@@ -576,7 +576,7 @@
     <string name="ota_activate" msgid="1368528132525626264">"सक्रिय करें"</string>
     <string name="ota_title_activate_success" msgid="6570240212263372046">"फ़ोन सक्रिय हो गया."</string>
     <string name="ota_title_problem_with_activation" msgid="7095824491970084367">"सक्रियण में समस्या"</string>
-    <string name="ota_listen" msgid="162923839877584937">"जब तक आप यह न सुनें कि सक्रियण पूर्ण हो गया है, कहे गए निर्देशों का पालन करें."</string>
+    <string name="ota_listen" msgid="162923839877584937">"जब तक आप यह न सुनें कि चालू करना पूरा हो गया है, कहे गए निर्देशों का पालन करें."</string>
     <string name="ota_speaker" msgid="6904589278542719647">"स्‍पीकर"</string>
     <string name="ota_progress" msgid="460876637828044519">"आपका फ़ोन प्रोग्राम किया जा रहा है…"</string>
     <string name="ota_failure" msgid="7713756181204620397">"आपके फ़ोन को प्रोग्राम नहीं किया जा सका"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 6acc09a..7b7e6e6 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -763,7 +763,7 @@
     <string name="supp_service_clir_suppression_rejected" msgid="1581851661582189045">"חסימת המספר נדחתה."</string>
     <string name="supp_service_closed_user_group_call" msgid="5761735840904590950">"שיחה עם קבוצת משתמשים סגורה."</string>
     <string name="supp_service_incoming_calls_barred" msgid="3248813207307882723">"אי אפשר לקבל שיחות נכנסות."</string>
-    <string name="supp_service_outgoing_calls_barred" msgid="1962644621292054081">"אי אפשר לבצע שיחות יוצאות."</string>
+    <string name="supp_service_outgoing_calls_barred" msgid="1962644621292054081">"אי אפשר להוציא שיחות."</string>
     <string name="supp_service_call_forwarding_active" msgid="1253134771682248735">"העברת השיחות פעילה."</string>
     <string name="supp_service_additional_call_forwarded" msgid="5228624725214727315">"שיחה נוספת הועברה."</string>
     <string name="supp_service_additional_ect_connected" msgid="6396964292513707102">"העברת השיחה שנבחרה הסתיימה."</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 96effbd..6c6de71 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -255,7 +255,7 @@
     <string name="roaming_notification_title" msgid="4749053220884743110">"Mobildatatilkoblingen er tapt"</string>
     <string name="roaming_warning" msgid="1603164667540144353">"Det kan medføre betydelige kostnader."</string>
     <string name="roaming_check_price_warning" msgid="7497570906830902550">"Sjekk med nettverksleverandøren din for priser."</string>
-    <string name="roaming_alert_title" msgid="3654815360303826008">"Vil du tillate roaming?"</string>
+    <string name="roaming_alert_title" msgid="3654815360303826008">"Vil du tillate data-roaming?"</string>
     <string name="data_usage_title" msgid="4042209259808900283">"Appens databruk"</string>
     <string name="data_usage_template" msgid="8526428824844656364">"<xliff:g id="ID_1">%1$s</xliff:g> mobildata er brukt i perioden <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="advanced_options_title" msgid="8074895510265488035">"Avansert"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index b39b91f..9905a5e 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -619,7 +619,7 @@
     <string name="voicemail_visual_voicemail_switch_title" msgid="5012622186976275457">"Visuele voicemail"</string>
     <string name="voicemail_set_pin_dialog_title" msgid="2797924461029093837">"Pincode instellen"</string>
     <string name="voicemail_change_pin_dialog_title" msgid="6035421908626121564">"Pincode wijzigen"</string>
-    <string name="preference_category_ringtone" msgid="5197960752529332721">"Beltoon en trillen"</string>
+    <string name="preference_category_ringtone" msgid="5197960752529332721">"Ringtone en trillen"</string>
     <string name="pstn_connection_service_label" msgid="1743245930577325900">"Ingebouwde simkaarten"</string>
     <string name="enable_video_calling_title" msgid="7237253660669000899">"Videogesprekken inschakelen"</string>
     <string name="enable_video_calling_dialog_msg" msgid="8948186136957417948">"Als je videogesprekken wilt inschakelen, moet je de geoptimaliseerde 4G LTE-modus inschakelen in de netwerkinstellingen."</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index f3dd169..97c7a84 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Mobile Data"</string>
+    <string name="phoneAppLabel" product="tablet" msgid="8576272342240415145">"Dane mobilne"</string>
     <string name="phoneAppLabel" product="default" msgid="6790717591729922998">"Telefon – usługi"</string>
     <string name="emergencyDialerIconLabel" msgid="7812140032168171053">"Numery alarmowe"</string>
     <string name="phoneIconLabel" msgid="2331230813161304895">"Telefon"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 2cafd04..c725d00 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -475,7 +475,7 @@
     <string name="puk2_requested" msgid="5831015200030161434">"Неверный пароль. SIM-карта заблокирована. Введите код PUK2."</string>
     <string name="puk2_blocked" msgid="3150263853077280049">"Код PUK2 заблокирован навсегда"</string>
     <string name="pin2_attempts" msgid="720736232885011507">\n"Осталось попыток: <xliff:g id="NUMBER">%d</xliff:g>."</string>
-    <string name="pin2_unblocked" msgid="7791600368153469078">"Код PIN2 разблокирован"</string>
+    <string name="pin2_unblocked" msgid="7791600368153469078">"Код PIN2 разблокирован."</string>
     <string name="pin2_error_exception" msgid="1088689322248996699">"Ошибка сети или SIM-карты"</string>
     <string name="doneButton" msgid="2859593360997984240">"Готово"</string>
     <string name="voicemail_settings_number_label" msgid="8524164258691887790">"Номер голосовой почты"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 05749c0..fe6b7a1 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -256,7 +256,7 @@
     <string name="roaming_warning" msgid="1603164667540144353">"Detta kan leda till höga kostnader."</string>
     <string name="roaming_check_price_warning" msgid="7497570906830902550">"Kontakta din nätoperatör för priser."</string>
     <string name="roaming_alert_title" msgid="3654815360303826008">"Vill du tillåta dataroaming?"</string>
-    <string name="data_usage_title" msgid="4042209259808900283">"Appens dataanvändning"</string>
+    <string name="data_usage_title" msgid="4042209259808900283">"Appars dataanvändning"</string>
     <string name="data_usage_template" msgid="8526428824844656364">"<xliff:g id="ID_1">%1$s</xliff:g> mobildata använt mellan <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="advanced_options_title" msgid="8074895510265488035">"Avancerat"</string>
     <string name="carrier_settings_euicc" msgid="6714062862127226405">"Operatör"</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index e1bfbab..a3503be 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -134,7 +134,7 @@
     <string name="stk_cc_ss_to_ussd_error" msgid="6095812685884176176">"SS கோரிக்கை, USSD கோரிக்கைக்கு மாற்றப்பட்டது"</string>
     <string name="stk_cc_ss_to_ss_error" msgid="7920654012697945858">"புதிய SS கோரிக்கைக்கு மாற்றப்பட்டது"</string>
     <string name="stk_cc_ss_to_dial_video_error" msgid="3873905132181743781">"SS கோரிக்கை, வீடியோ அழைப்பிற்கு மாற்றப்பட்டது"</string>
-    <string name="fdn_check_failure" msgid="18200614306525434">"மொபைல் பயன்பாட்டின் நிலையான அழைப்பு எண்களுக்கான அமைப்பு இயக்கப்பட்டது. இதன் விளைவாக, அழைப்பு தொடர்பான சில அம்சங்கள் செயல்படவில்லை."</string>
+    <string name="fdn_check_failure" msgid="18200614306525434">"மொபைல் ஆப்ஸின் நிலையான அழைப்பு எண்களுக்கான அமைப்பு இயக்கப்பட்டது. இதன் விளைவாக, அழைப்பு தொடர்பான சில அம்சங்கள் செயல்படவில்லை."</string>
     <string name="radio_off_error" msgid="2304459933248513376">"அமைப்புகளைப் பார்ப்பதற்கு முன், ரேடியோவை இயக்கவும்."</string>
     <string name="close_dialog" msgid="2365884406356986917">"சரி"</string>
     <string name="enable" msgid="7248657275000173526">"இயக்கு"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 20cd1bd..149871e 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -263,7 +263,7 @@
     <string name="keywords_carrier_settings_euicc" msgid="6861505396475991277">"ผู้ให้บริการ, eSIM, ซิม, eUICC, เปลี่ยนผู้ให้บริการ, เพิ่มผู้ให้บริการ"</string>
     <string name="carrier_settings_euicc_summary" msgid="5115001942761995457">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> — <xliff:g id="PHONE_NUMBER">%2$s</xliff:g>"</string>
     <string name="mobile_data_settings_title" msgid="4661165467914727157">"เน็ตมือถือ"</string>
-    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"เข้าถึงข้อมูลโดยใช้เครือข่ายมือถือ"</string>
+    <string name="mobile_data_settings_summary" msgid="5087255915840576895">"เข้าถึงอินเทอร์เน็ตโดยใช้เครือข่ายมือถือ"</string>
     <string name="data_usage_disable_mobile" msgid="3577275288809667615">"ปิดเน็ตมือถือไหม"</string>
     <string name="sim_selection_required_pref" msgid="7049424902961844236">"ต้องเลือก"</string>
     <string name="sim_change_data_title" msgid="5332425991853799280">"เปลี่ยนซิมอินเทอร์เน็ตไหม"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 16d2ad2..cacb893 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -105,21 +105,21 @@
     <string name="sum_cfu_enabled_indicator" msgid="4014187342724130197">"Barcha qo‘ng‘iroqlar yo‘naltirilmoqda"</string>
     <string name="sum_cfu_enabled" msgid="2450052502198827927">"Barcha qo‘ng‘iroqlar <xliff:g id="PHONENUMBER">{0}</xliff:g>ga yo‘naltirilmoqda"</string>
     <string name="sum_cfu_enabled_no_number" msgid="6591985777096823616">"Raqam mavjud emas"</string>
-    <string name="sum_cfu_disabled" msgid="8384177689501334080">"O‘chiq"</string>
+    <string name="sum_cfu_disabled" msgid="8384177689501334080">"Yoqilmagan"</string>
     <string name="labelCFB" msgid="6139853033106283172">"Agar raqam band bo‘lsa"</string>
     <string name="messageCFB" msgid="3711089705936187129">"Ushbu raqamga yo‘naltirilsin"</string>
     <string name="sum_cfb_enabled" msgid="5984198104833116690">"<xliff:g id="PHONENUMBER">{0}</xliff:g> raqamiga yo‘naltiriladi"</string>
-    <string name="sum_cfb_disabled" msgid="4913145177320506827">"O‘chiq"</string>
+    <string name="sum_cfb_disabled" msgid="4913145177320506827">"Yoqilmagan"</string>
     <string name="disable_cfb_forbidden" msgid="3506984333877998061">"Telefoningiz band bo‘lganda qo‘ng‘iroqlarni boshqa raqamga yo‘naltirishni o‘chirish xususiyati tarmoq operatoringizda yo‘q."</string>
     <string name="labelCFNRy" msgid="1736067178393744351">"Agar javob berilmasa"</string>
     <string name="messageCFNRy" msgid="672317899884380374">"Ushbu raqamga yo‘naltirilsin"</string>
     <string name="sum_cfnry_enabled" msgid="6955775691317662910">"<xliff:g id="PHONENUMBER">{0}</xliff:g> raqamiga yo‘naltiriladi"</string>
-    <string name="sum_cfnry_disabled" msgid="3884684060443538097">"O‘chiq"</string>
+    <string name="sum_cfnry_disabled" msgid="3884684060443538097">"Yoqilmagan"</string>
     <string name="disable_cfnry_forbidden" msgid="4308233959150658058">"Telefoningiz javob bermayotganda qo‘ng‘iroqlarni boshqa raqamga yo‘naltirishni o‘chirish xususiyati operatoringizda yo‘q."</string>
     <string name="labelCFNRc" msgid="2614827454402079766">"Agar raqam tarmoqdan tashqarida bo‘lsa"</string>
     <string name="messageCFNRc" msgid="6380695421020295119">"Ushbu raqamga yo‘naltirilsin"</string>
     <string name="sum_cfnrc_enabled" msgid="7010898346095497421">"<xliff:g id="PHONENUMBER">{0}</xliff:g> raqamiga yo‘naltiriladi"</string>
-    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"O‘chiq"</string>
+    <string name="sum_cfnrc_disabled" msgid="2684474391807469832">"Yoqilmagan"</string>
     <string name="disable_cfnrc_forbidden" msgid="5646361343094064333">"Telefoningiz o‘chiq bo‘lganida qo‘ng‘iroqlarni boshqa raqamga yo‘naltirishni o‘chirish xususiyati tarmoq operatoringizda yo‘q."</string>
     <string name="updating_title" msgid="6146755386174019046">"Chaqiruv sozlamalari"</string>
     <string name="call_settings_admin_user_only" msgid="4526094783818216374">"Faqat administrator qo‘ng‘iroq sozlamalarini o‘zgartirishi mumkin."</string>
@@ -720,7 +720,7 @@
     <string name="clh_callFailed_interworking_unspecified_txt" msgid="6701560054199411045">"Chaqiruv amalga oshmadi. Xatolik kodi: 127."</string>
     <string name="labelCallBarring" msgid="3452870940716226978">"Chaqiruvlarni taqiqlash"</string>
     <string name="sum_call_barring_enabled" msgid="6804489690436703488">"Yoniq"</string>
-    <string name="sum_call_barring_disabled" msgid="5900772179198857783">"O‘chiq"</string>
+    <string name="sum_call_barring_disabled" msgid="5900772179198857783">"Yoqilmagan"</string>
     <string name="call_barring_baoc" msgid="1199843944333106035">"Barcha chiquvchi chaqiruvlar"</string>
     <string name="call_barring_baoc_enabled" msgid="8112118391869380361">"Barcha chiquvchi chaqiruvlarni bloklash bekor qilinsinmi?"</string>
     <string name="call_barring_baoc_disabled" msgid="7806697133004697974">"Barcha chiquvchi chaqiruvlar bloklansinmi?"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index bf9a050..9b4dac5 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -630,7 +630,7 @@
     <string name="sim_label_emergency_calls" msgid="4847699229529306397">"緊急電話"</string>
     <string name="sim_description_emergency_calls" msgid="7535215397212301562">"僅限撥打緊急電話"</string>
     <string name="sim_description_default" msgid="4778679519938775515">"SIM 卡,插槽:<xliff:g id="SLOT_ID">%s</xliff:g>"</string>
-    <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"協助工具"</string>
+    <string name="accessibility_settings_activity_title" msgid="8562004288733103868">"無障礙設定"</string>
     <string name="status_hint_label_incoming_wifi_call" msgid="5932176406432044638">"Wi-Fi 通話來電:"</string>
     <string name="status_hint_label_wifi_call" msgid="8900805254974653903">"Wi-Fi 通話"</string>
     <string name="emergency_action_launch_hint" msgid="4906759256275562674">"再次輕觸即可開啟"</string>
diff --git a/res/values/config.xml b/res/values/config.xml
index 232c57f..63c185b 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -254,4 +254,11 @@
     <!-- The country list that shortcut view can be enabled. -->
     <string-array name="config_countries_to_enable_shortcut_view" translatable="false">
     </string-array>
+
+    <!-- When an emergency call is placed and the carrier supports network initiated SUPL requests
+         for location, this configuration dictates whether or not the modem supports SUPL requests
+         being handled on the logical slot that is not currently configured as the default data
+         slot. If true, telephony will always try to place the emergency call on the subscription
+         associated with default data first, instead of using the default voice configuration.-->
+    <bool name="config_gnss_supl_requires_default_data_for_emergency">false</bool>
 </resources>
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 5f50002..ed1de19 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -4450,7 +4450,7 @@
                                 .setMinSdkVersionForFine(Build.VERSION_CODES.Q)
                                 .build());
         if (locationResult != LocationAccessPolicy.LocationPermissionResult.ALLOWED) {
-            SecurityException e = checkNetworkRequestForSanitizedLocationAccess(request);
+            SecurityException e = checkNetworkRequestForSanitizedLocationAccess(request, subId);
             if (e != null) {
                 if (locationResult == LocationAccessPolicy.LocationPermissionResult.DENIED_HARD) {
                     throw e;
@@ -4473,11 +4473,16 @@
     }
 
     private SecurityException checkNetworkRequestForSanitizedLocationAccess(
-            NetworkScanRequest request) {
-        if (mApp.checkCallingOrSelfPermission(android.Manifest.permission.NETWORK_SCAN)
-                != PERMISSION_GRANTED) {
-            return new SecurityException("permission.NETWORK_SCAN is needed for network scans"
-                    + " without location access.");
+            NetworkScanRequest request, int subId) {
+        boolean hasCarrierPriv = getCarrierPrivilegeStatusForUid(subId, Binder.getCallingUid())
+                == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS;
+        boolean hasNetworkScanPermission =
+                mApp.checkCallingOrSelfPermission(android.Manifest.permission.NETWORK_SCAN)
+                == PERMISSION_GRANTED;
+
+        if (!hasCarrierPriv && !hasNetworkScanPermission) {
+            return new SecurityException("permission.NETWORK_SCAN or carrier privileges is needed"
+                    + " for network scans without location access.");
         }
 
         if (request.getSpecifiers() != null && request.getSpecifiers().length > 0) {
@@ -7061,4 +7066,28 @@
                 PickSmsSubscriptionActivity.SMS_PICK_FOR_MESSAGE);
         mApp.startActivity(intent);
     }
+
+    @Override
+    public String getMmsUAProfUrl(int subId) {
+        //TODO investigate if this API should require proper permission check in R b/133791609
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            return SubscriptionManager.getResourcesForSubId(getDefaultPhone().getContext(), subId)
+                    .getString(com.android.internal.R.string.config_mms_user_agent_profile_url);
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+
+    @Override
+    public String getMmsUserAgent(int subId) {
+        //TODO investigate if this API should require proper permission check in R b/133791609
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            return SubscriptionManager.getResourcesForSubId(getDefaultPhone().getContext(), subId)
+                    .getString(com.android.internal.R.string.config_mms_user_agent);
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
 }
diff --git a/src/com/android/services/telephony/ImsConference.java b/src/com/android/services/telephony/ImsConference.java
index 1f157e3..8cd8051 100644
--- a/src/com/android/services/telephony/ImsConference.java
+++ b/src/com/android/services/telephony/ImsConference.java
@@ -259,6 +259,8 @@
     private boolean mCouldManageConference;
     private FeatureFlagProxy mFeatureFlagProxy;
     private boolean mIsEmulatingSinglePartyCall = false;
+    private boolean mIsUsingSimCallManager = false;
+
     /**
      * Where {@link #mIsEmulatingSinglePartyCall} is {@code true}, contains the
      * {@link ConferenceParticipantConnection#getUserEntity()} and
@@ -616,6 +618,7 @@
     private void updateManageConference() {
         boolean couldManageConference = can(Connection.CAPABILITY_MANAGE_CONFERENCE);
         boolean canManageConference = mFeatureFlagProxy.isUsingSinglePartyCallEmulation()
+                && mIsEmulatingSinglePartyCall
                 ? mConferenceParticipantConnections.size() > 1
                 : mConferenceParticipantConnections.size() != 0;
         Log.v(this, "updateManageConference was :%s is:%s", couldManageConference ? "Y" : "N",
@@ -675,6 +678,9 @@
 
             mConferenceHostAddress = new Uri[hostAddresses.size()];
             mConferenceHostAddress = hostAddresses.toArray(mConferenceHostAddress);
+
+            mIsUsingSimCallManager = mTelecomAccountRegistry.isUsingSimCallManager(
+                    mConferenceHostPhoneAccountHandle);
         }
 
         mConferenceHost.addConnectionListener(mConferenceHostListener);
@@ -725,12 +731,16 @@
             // Determine if the conference event package represents a single party conference.
             // A single party conference is one where there is no other participant other than the
             // conference host and one other participant.
+            // Note: We consider 0 to still be a single party conference since some carriers will
+            // send a conference event package with JUST the host in it when the conference is
+            // disconnected.  We don't want to change back to conference mode prior to disconnection
+            // or we will not log the call.
             boolean isSinglePartyConference = participants.stream()
                     .filter(p -> {
                         Pair<Uri, Uri> pIdent = new Pair<>(p.getHandle(), p.getEndpoint());
                         return !Objects.equals(mHostParticipantIdentity, pIdent);
                     })
-                    .count() == 1;
+                    .count() <= 1;
 
             // We will only process the CEP data if:
             // 1. We're not emulating a single party call.
@@ -829,8 +839,18 @@
      * 1. Tell telecom we're a conference again.
      * 2. Restore {@link Connection#CAPABILITY_MANAGE_CONFERENCE} capability.
      * 3. Null out the name/address.
+     *
+     * Note: Single party call emulation is disabled if the conference is taking place via a
+     * sim call manager.  Emulating a single party call requires properties of the conference to be
+     * changed (connect time, address, conference state) which cannot be guaranteed to be relayed
+     * correctly by the sim call manager to Telecom.
      */
     private void stopEmulatingSinglePartyCall() {
+        if (mIsUsingSimCallManager) {
+            Log.i(this, "stopEmulatingSinglePartyCall: using sim call manager; skip.");
+            return;
+        }
+
         Log.i(this, "stopEmulatingSinglePartyCall: conference now has more than one"
                 + " participant; make it look conference-like again.");
         mIsEmulatingSinglePartyCall = false;
@@ -867,8 +887,18 @@
      * 2. Tell telecom we're not a conference.
      * 3. Remove {@link Connection#CAPABILITY_MANAGE_CONFERENCE} capability.
      * 4. Set the name/address to that of the single participant.
+     *
+     * Note: Single party call emulation is disabled if the conference is taking place via a
+     * sim call manager.  Emulating a single party call requires properties of the conference to be
+     * changed (connect time, address, conference state) which cannot be guaranteed to be relayed
+     * correctly by the sim call manager to Telecom.
      */
     private void startEmulatingSinglePartyCall() {
+        if (mIsUsingSimCallManager) {
+            Log.i(this, "startEmulatingSinglePartyCall: using sim call manager; skip.");
+            return;
+        }
+
         Log.i(this, "startEmulatingSinglePartyCall: conference has a single "
                 + "participant; downgrade to single party call.");
 
diff --git a/src/com/android/services/telephony/TelecomAccountRegistry.java b/src/com/android/services/telephony/TelecomAccountRegistry.java
index 21685a3..46f7023 100644
--- a/src/com/android/services/telephony/TelecomAccountRegistry.java
+++ b/src/com/android/services/telephony/TelecomAccountRegistry.java
@@ -56,6 +56,7 @@
 import com.android.ims.ImsManager;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneFactory;
+import com.android.internal.telephony.SubscriptionController;
 import com.android.phone.PhoneGlobals;
 import com.android.phone.PhoneUtils;
 import com.android.phone.R;
@@ -84,6 +85,7 @@
         private final PstnPhoneCapabilitiesNotifier mPhoneCapabilitiesNotifier;
         private boolean mIsEmergency;
         private boolean mIsRttCapable;
+        private boolean mIsEmergencyPreferred;
         private MmTelFeature.MmTelCapabilities mMmTelCapabilities;
         private ImsMmTelManager.CapabilityCallback mMmtelCapabilityCallback;
         private ImsMmTelManager mMmTelManager;
@@ -96,6 +98,7 @@
         private boolean mIsVideoConferencingSupported;
         private boolean mIsMergeOfWifiCallsAllowedWhenVoWifiOff;
         private boolean mIsManageImsConferenceCallSupported;
+        private boolean mIsUsingSimCallManager;
         private boolean mIsShowPreciseFailedCause;
 
         AccountEntry(Phone phone, boolean isEmergency, boolean isDummy) {
@@ -271,6 +274,11 @@
                 capabilities |= PhoneAccount.CAPABILITY_PLACE_EMERGENCY_CALLS;
             }
 
+            mIsEmergencyPreferred = isEmergencyPreferredAccount(subId);
+            if (mIsEmergencyPreferred) {
+                capabilities |= PhoneAccount.CAPABILITY_EMERGENCY_PREFERRED;
+            }
+
             if (isRttCurrentlySupported()) {
                 capabilities |= PhoneAccount.CAPABILITY_RTT;
                 mIsRttCapable = true;
@@ -343,6 +351,7 @@
             mIsMergeOfWifiCallsAllowedWhenVoWifiOff =
                     isCarrierMergeOfWifiCallsAllowedWhenVoWifiOff();
             mIsManageImsConferenceCallSupported = isCarrierManageImsConferenceCallSupported();
+            mIsUsingSimCallManager = isCarrierUsingSimCallManager();
             mIsShowPreciseFailedCause = isCarrierShowPreciseFailedCause();
 
             if (isEmergency && mContext.getResources().getBoolean(
@@ -410,6 +419,36 @@
         }
 
         /**
+         * In some cases, we need to try sending the emergency call over this PhoneAccount due to
+         * restrictions and limitations in MSIM configured devices. This includes the following:
+         * 1) The device does not support GNSS SUPL requests on the non-DDS subscription due to
+         *   modem limitations. If the device does not support SUPL on non-DDS, we need to try the
+         *   emergency call on the DDS subscription first to allow for SUPL to be completed.
+         *
+         * @return true if Telecom should prefer this PhoneAccount, false if there is no preference
+         * needed.
+         */
+        private boolean isEmergencyPreferredAccount(int subId) {
+            final boolean gnssSuplRequiresDefaultData = mContext.getResources().getBoolean(
+                    R.bool.config_gnss_supl_requires_default_data_for_emergency);
+            if (!gnssSuplRequiresDefaultData) {
+                // No preference is necessary.
+                return false;
+            }
+
+            // Only set a preference on MSIM devices
+            if (mTelephonyManager.getPhoneCount() <= 1) {
+                return false;
+            }
+            // Check to see if this PhoneAccount is associated with the default Data subscription.
+            if (!SubscriptionManager.isValidSubscriptionId(subId)) {
+                return false;
+            }
+            SubscriptionController controller = SubscriptionController.getInstance();
+            return controller != null && (controller.getDefaultDataSubId() == subId);
+        }
+
+        /**
          * Determines from carrier configuration whether pausing of IMS video calls is supported.
          *
          * @return {@code true} if pausing IMS video calls is supported.
@@ -521,6 +560,19 @@
         }
 
         /**
+         * Determines from carrier config whether the carrier uses a sim call manager.
+         *
+         * @return {@code true} if the carrier uses a sim call manager,
+         *         {@code false} otherwise.
+         */
+        private boolean isCarrierUsingSimCallManager() {
+            PersistableBundle b =
+                    PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());
+            return !TextUtils.isEmpty(
+                    b.getString(CarrierConfigManager.KEY_DEFAULT_SIM_CALL_MANAGER_STRING));
+        }
+
+        /**
          * Determines from carrier config whether showing percise call diconnect cause to user
          * is supported.
          *
@@ -596,6 +648,14 @@
             }
         }
 
+        public void updateDefaultDataSubId() {
+            boolean isEmergencyPreferred = isEmergencyPreferredAccount(mPhone.getSubId());
+            if (isEmergencyPreferred != mIsEmergencyPreferred) {
+                Log.i(this, "updateDefaultDataSubId - changed, new value: " + isEmergencyPreferred);
+                mAccount = registerPstnPhoneAccount(mIsEmergency, mIsDummy);
+            }
+        }
+
         /**
          * Determines whether RTT is supported given the current state of the
          * device.
@@ -662,6 +722,15 @@
         }
 
         /**
+         * Indicates whether this account uses a sim call manger.
+         * @return {@code true} if the account uses a sim call manager,
+         *         {@code false} otherwise.
+         */
+        public boolean isUsingSimCallManager() {
+            return mIsUsingSimCallManager;
+        }
+
+        /**
          * Indicates whether this account supports showing the precise call disconnect cause
          * to user (i.e. conferencing).
          * @return {@code true} if the account supports showing the precise call disconnect cause,
@@ -743,6 +812,15 @@
             }
             mServiceState = newState;
         }
+
+        @Override
+        public void onActiveDataSubscriptionIdChanged(int subId) {
+            synchronized (mAccountsLock) {
+                for (AccountEntry account : mAccounts) {
+                    account.updateDefaultDataSubId();
+                }
+            }
+        }
     };
 
     private static TelecomAccountRegistry sInstance;
@@ -924,7 +1002,7 @@
      * @param handle The phone account handle to find the subscription address for.
      * @return The address.
      */
-    Uri getAddress(PhoneAccountHandle handle) {
+    public Uri getAddress(PhoneAccountHandle handle) {
         synchronized (mAccountsLock) {
             for (AccountEntry entry : mAccounts) {
                 if (entry.getPhoneAccountHandle().equals(handle)) {
@@ -936,6 +1014,24 @@
     }
 
     /**
+     * Returns whethere a the subscription associated with a {@link PhoneAccountHandle} is using a
+     * sim call manager.
+     *
+     * @param handle The phone account handle to find the subscription address for.
+     * @return {@code true} if a sim call manager is in use, {@code false} otherwise.
+     */
+    public boolean isUsingSimCallManager(PhoneAccountHandle handle) {
+        synchronized (mAccountsLock) {
+            for (AccountEntry entry : mAccounts) {
+                if (entry.getPhoneAccountHandle().equals(handle)) {
+                    return entry.isUsingSimCallManager();
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
      * Sets up all the phone accounts for SIMs on first boot.
      */
     public void setupOnBoot() {
@@ -951,7 +1047,8 @@
 
         // We also need to listen for changes to the service state (e.g. emergency -> in service)
         // because this could signal a removal or addition of a SIM in a single SIM phone.
-        mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);
+        mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE
+                | PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE);
 
         // Listen for user switches.  When the user switches, we need to ensure that if the current
         // use is not the primary user we disable video calling.
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index 632e9ac..7bb6b7d 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -2203,7 +2203,6 @@
         boolean isIms = phone.getPhoneType() == PhoneConstants.PHONE_TYPE_IMS;
         boolean isVoWifiEnabled = false;
         if (isIms) {
-            ImsPhone imsPhone = (ImsPhone) phone;
             isVoWifiEnabled = ImsUtil.isWfcEnabled(phone.getContext(), phone.getPhoneId());
         }
         PhoneAccountHandle phoneAccountHandle = isIms ? PhoneUtils
diff --git a/tests/src/com/android/services/telephony/ImsConferenceTest.java b/tests/src/com/android/services/telephony/ImsConferenceTest.java
index 56a6240..8d67973 100644
--- a/tests/src/com/android/services/telephony/ImsConferenceTest.java
+++ b/tests/src/com/android/services/telephony/ImsConferenceTest.java
@@ -16,9 +16,11 @@
 
 package com.android.services.telephony;
 
+import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 import static org.mockito.Mockito.any;
@@ -30,8 +32,10 @@
 
 import android.net.Uri;
 import android.os.Looper;
+import android.telecom.Conference;
 import android.telecom.ConferenceParticipant;
 import android.telecom.Connection;
+import android.telecom.PhoneAccountHandle;
 import android.test.suitebuilder.annotation.SmallTest;
 
 import com.android.internal.telephony.PhoneConstants;
@@ -53,9 +57,6 @@
     @Mock
     private TelecomAccountRegistry mMockTelecomAccountRegistry;
 
-    @Mock
-    private com.android.internal.telephony.Connection mOriginalConnection;
-
     private TestTelephonyConnection mConferenceHost;
 
     @Before
@@ -66,11 +67,122 @@
         }
         mConferenceHost = new TestTelephonyConnection();
         mConferenceHost.setManageImsConferenceCallSupported(true);
+        when(mMockTelecomAccountRegistry.getAddress(any(PhoneAccountHandle.class)))
+                .thenReturn(null);
     }
 
     @Test
     @SmallTest
     public void testSinglePartyEmulation() {
+        when(mMockTelecomAccountRegistry.isUsingSimCallManager(any(PhoneAccountHandle.class)))
+                .thenReturn(false);
+
+        ImsConference imsConference = new ImsConference(mMockTelecomAccountRegistry,
+                mMockTelephonyConnectionServiceProxy, mConferenceHost,
+                null /* phoneAccountHandle */, () -> true /* featureFlagProxy */);
+
+        ConferenceParticipant participant1 = new ConferenceParticipant(
+                Uri.parse("tel:6505551212"),
+                "A",
+                Uri.parse("sip:6505551212@testims.com"),
+                Connection.STATE_ACTIVE);
+        ConferenceParticipant participant2 = new ConferenceParticipant(
+                Uri.parse("tel:6505551213"),
+                "A",
+                Uri.parse("sip:6505551213@testims.com"),
+                Connection.STATE_ACTIVE);
+        imsConference.handleConferenceParticipantsUpdate(mConferenceHost,
+                Arrays.asList(participant1, participant2));
+        assertEquals(2, imsConference.getNumberOfParticipants());
+        verify(mMockTelephonyConnectionServiceProxy, times(2)).addExistingConnection(
+                any(PhoneAccountHandle.class), any(Connection.class),
+                eq(imsConference));
+
+        // Because we're pretending its a single party, there should be no participants any more.
+        imsConference.handleConferenceParticipantsUpdate(mConferenceHost,
+                Arrays.asList(participant1));
+        assertEquals(0, imsConference.getNumberOfParticipants());
+        verify(mMockTelephonyConnectionServiceProxy, times(2)).removeConnection(
+                any(Connection.class));
+        reset(mMockTelephonyConnectionServiceProxy);
+
+        // Back to 2!
+        imsConference.handleConferenceParticipantsUpdate(mConferenceHost,
+                Arrays.asList(participant1, participant2));
+        assertEquals(2, imsConference.getNumberOfParticipants());
+        verify(mMockTelephonyConnectionServiceProxy, times(2)).addExistingConnection(
+                any(PhoneAccountHandle.class), any(Connection.class),
+                eq(imsConference));
+    }
+
+    /**
+     * We have seen a scenario on a carrier where a conference event package comes in just prior to
+     * the call disconnecting with only the conference host in it.  This caused a problem because
+     * it triggered exiting single party conference mode (due to a bug) and caused the call to not
+     * be logged.
+     */
+    @Test
+    @SmallTest
+    public void testSinglePartyEmulationWithPreDisconnectParticipantUpdate() {
+        when(mMockTelecomAccountRegistry.isUsingSimCallManager(any(PhoneAccountHandle.class)))
+                .thenReturn(false);
+
+        ImsConference imsConference = new ImsConference(mMockTelecomAccountRegistry,
+                mMockTelephonyConnectionServiceProxy, mConferenceHost,
+                null /* phoneAccountHandle */, () -> true /* featureFlagProxy */);
+
+        final boolean[] isConferenceState = new boolean[1];
+        Conference.Listener conferenceListener = new Conference.Listener() {
+            @Override
+            public void onConferenceStateChanged(Conference c, boolean isConference) {
+                super.onConferenceStateChanged(c, isConference);
+                isConferenceState[0] = isConference;
+            }
+        };
+        imsConference.addListener(conferenceListener);
+
+        ConferenceParticipant participant1 = new ConferenceParticipant(
+                Uri.parse("tel:6505551212"),
+                "A",
+                Uri.parse("sip:6505551212@testims.com"),
+                Connection.STATE_ACTIVE);
+        ConferenceParticipant participant2 = new ConferenceParticipant(
+                Uri.parse("tel:6505551213"),
+                "A",
+                Uri.parse("sip:6505551213@testims.com"),
+                Connection.STATE_ACTIVE);
+        imsConference.handleConferenceParticipantsUpdate(mConferenceHost,
+                Arrays.asList(participant1, participant2));
+        assertEquals(2, imsConference.getNumberOfParticipants());
+        verify(mMockTelephonyConnectionServiceProxy, times(2)).addExistingConnection(
+                any(PhoneAccountHandle.class), any(Connection.class),
+                eq(imsConference));
+
+        // Because we're pretending its a single party, there should be only a single participant.
+        imsConference.handleConferenceParticipantsUpdate(mConferenceHost,
+                Arrays.asList(participant1));
+        assertEquals(0, imsConference.getNumberOfParticipants());
+        verify(mMockTelephonyConnectionServiceProxy, times(2)).removeConnection(
+                any(Connection.class));
+
+        // Emulate a pre-disconnect conference event package; there will be zero participants.
+        imsConference.handleConferenceParticipantsUpdate(mConferenceHost,
+                Arrays.asList());
+
+        // We should still not be considered a conference (hence we should be logging this call).
+        assertFalse(isConferenceState[0]);
+    }
+
+    /**
+     * Verify that we do not use single party emulation when a sim call manager is in use.
+     */
+    @Test
+    @SmallTest
+    public void testNoSinglePartyEmulationWithSimCallManager() {
+        // Make it look like there is a sim call manager in use.
+        when(mMockTelecomAccountRegistry.isUsingSimCallManager(
+                any(PhoneAccountHandle.class))).thenReturn(true);
+
         ImsConference imsConference = new ImsConference(mMockTelecomAccountRegistry,
                 mMockTelephonyConnectionServiceProxy, mConferenceHost,
                 null /* phoneAccountHandle */, () -> true /* featureFlagProxy */);
@@ -89,10 +201,10 @@
                 Arrays.asList(participant1, participant2));
         assertEquals(2, imsConference.getNumberOfParticipants());
 
-        // Because we're pretending its a single party, there should be no participants any more.
+        // Because we're not using single party emulation, should still be one participant.
         imsConference.handleConferenceParticipantsUpdate(mConferenceHost,
                 Arrays.asList(participant1));
-        assertEquals(0, imsConference.getNumberOfParticipants());
+        assertEquals(1, imsConference.getNumberOfParticipants());
 
         // Back to 2!
         imsConference.handleConferenceParticipantsUpdate(mConferenceHost,
@@ -103,6 +215,9 @@
     @Test
     @SmallTest
     public void testNormalConference() {
+        when(mMockTelecomAccountRegistry.isUsingSimCallManager(any(PhoneAccountHandle.class)))
+                .thenReturn(false);
+
         ImsConference imsConference = new ImsConference(mMockTelecomAccountRegistry,
                 mMockTelephonyConnectionServiceProxy, mConferenceHost,
                 null /* phoneAccountHandle */, () -> false /* featureFlagProxy */);
diff --git a/tests/src/com/android/services/telephony/TestTelephonyConnection.java b/tests/src/com/android/services/telephony/TestTelephonyConnection.java
index c064ef6..b6e4bf3 100644
--- a/tests/src/com/android/services/telephony/TestTelephonyConnection.java
+++ b/tests/src/com/android/services/telephony/TestTelephonyConnection.java
@@ -82,9 +82,11 @@
                 any(Connection.PostDialListener.class));
         when(mMockPhone.getRingingCall()).thenReturn(mMockCall);
         when(mMockPhone.getContext()).thenReturn(mMockContext);
+        when(mMockPhone.getCurrentSubscriberUris()).thenReturn(null);
         when(mMockContext.getResources()).thenReturn(mMockResources);
         when(mMockResources.getBoolean(anyInt())).thenReturn(false);
         when(mMockPhone.getDefaultPhone()).thenReturn(mMockPhone);
+        when(mMockPhone.getPhoneType()).thenReturn(PhoneConstants.PHONE_TYPE_IMS);
         when(mMockCall.getState()).thenReturn(Call.State.ACTIVE);
         when(mMockCall.getPhone()).thenReturn(mMockPhone);
     }