Merge "Add satellite ConfigDataGenerator tool" into main
diff --git a/ecc/input/eccdata.txt b/ecc/input/eccdata.txt
index c4edc9e..95b70d5 100644
--- a/ecc/input/eccdata.txt
+++ b/ecc/input/eccdata.txt
@@ -1019,6 +1019,7 @@
   eccs {
     phone_number: "114"
     types: TYPE_UNSPECIFIED
+    routing: NORMAL
   }
   eccs {
     phone_number: "191"
diff --git a/ecc/output/eccdata b/ecc/output/eccdata
index 482ed79..513d6b9 100644
--- a/ecc/output/eccdata
+++ b/ecc/output/eccdata
Binary files differ
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 89f775a..987d5dd 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"কল ছেটিংসমূহ"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"কেৱল প্ৰশাসকে কল ছেটিংসমূহ সলনি কৰিব পাৰে।"</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"ফ’ন একাউণ্টৰ ছেটিং কেৱল প্ৰশাসক অথবা কৰ্মস্থানৰ ব্যৱহাৰকাৰীয়েহে সলনি কৰিব পাৰে।"</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"ডিভাইচৰ গৰাকীয়ে ম’বাইল নেটৱৰ্কৰ ছেটিং সলনি কৰাৰ ক্ষমতা সীমিত কৰিছে।"</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"ছেটিংসমূহ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"কল ছেটিংসমূহত আসোঁৱাহ"</string>
     <string name="reading_settings" msgid="1605904432450871183">"ছেটিংসমূহ পঢ়ি থকা হৈছে…"</string>
@@ -902,7 +901,7 @@
     <string name="radio_info_voice_network_type_label" msgid="2395347336419593265">"ভইচ নেটৱৰ্কৰ প্ৰকাৰ:"</string>
     <string name="radio_info_data_network_type_label" msgid="8886597029237501929">"ডেটা নেটৱৰ্কৰ প্ৰকাৰ:"</string>
     <string name="radio_info_override_network_type_label" msgid="4176280017221092005">"নেটৱৰ্ক প্ৰকাৰ অ’ভাৰৰাইড কৰক:"</string>
-    <string name="radio_info_voice_raw_registration_state_label" msgid="2822988327145825128">"কণ্ঠস্বৰৰ অসম্পাদিত পঞ্জীয়নৰ স্থিতি:"</string>
+    <string name="radio_info_voice_raw_registration_state_label" msgid="2822988327145825128">"ভইচৰ অসম্পাদিত পঞ্জীয়নৰ স্থিতি:"</string>
     <string name="radio_info_data_raw_registration_state_label" msgid="2895895513822604539">"ডেটাৰ অসম্পাদিত পঞ্জীয়নৰ স্থিতি:"</string>
     <string name="radio_info_wlan_data_raw_registration_state_label" msgid="6396894835757296612">"WLAN ডেটাৰ অসম্পাদিত পঞ্জীয়নৰ স্থিতি:"</string>
     <string name="phone_index_label" msgid="6222406512768964268">"ফ’নৰ ইনডেক্স বাছনি কৰক"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index ce8cfbb..bc42892 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Налады выклікаў"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Налады выклікаў можа мяняць толькі адміністратар."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Налады ўліковага запісу на тэлефоне можа мяняць толькі адміністратар ці карыстальнік працоўнага профілю."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Уладальнік прылады забараніў змяняць налады мабільнай сеткі."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Налады (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Памылка налад выкліку"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Чытанне налад..."</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 47d7b00..fb7264e 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Настройки за обаждане"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Само администраторът може да променя настройките за обаждане."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Настройките на профилите в телефона могат да се променят само от администратора или служебния потребител."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Собственикът на устройството е ограничил възможността за промяна на настройките за мобилната мрежа."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Настройки (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Грешка в настройките за обаждане"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Извършва се четене на настройки…"</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index aa52760..8f47094 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"কল সেটিংস"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"কেবলমাত্র প্রশাসক ব্যবহারকারী কল সেটিংস পরিবর্তন করতে পারবেন৷"</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"শুধুমাত্র অ্যাডমিন বা অফিস প্রোফাইল ব্যবহারকারী ফোনের অ্যাকাউন্ট সেটিংস পরিবর্তন করতে পারবেন।"</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"ডিভাইসের মালিক, মোবাইল নেটওয়ার্ক সেটিংস পরিবর্তন করার সুবিধা সীমাবদ্ধ করে রেখেছেন।"</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"সেটিংস (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"কল সেটিংসে ত্রুটি"</string>
     <string name="reading_settings" msgid="1605904432450871183">"সেটিংস পড়ছে…"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index c0ee99b..2fd44d8 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -134,7 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Postavke poziva"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Postavke poziva može promijeniti samo administrator."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Postavke računa na telefonu može promijeniti samo administrator ili poslovni korisnik."</string>
-    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Vlasnik uređaja ograničio je mogućnost promjene postavki mobilne mreže."</string>
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Vlasnik uređaja je ograničio mogućnost promjene postavki mobilne mreže."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Postavke (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Greška u postavkama poziva"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Čitanje postavki…"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index d01d946..e351f02 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Configuració de trucada"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Només l\'administrador pot canviar la configuració de trucades."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Només l\'administrador o l\'usuari de la feina pot canviar la configuració del compte del telèfon."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"El propietari del dispositiu ha restringit la possibilitat de canviar la configuració de la xarxa mòbil."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Configuració (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Error de configuració de trucada"</string>
     <string name="reading_settings" msgid="1605904432450871183">"S\'està llegint la configuració…"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 39b2eb5..5b76b8f 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Nastavení hovorů"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Nastavení hovorů může změnit pouze uživatel s oprávněním administrátora."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Nastavení telefonního účtu může změnit jen administrátor nebo uživatel pracovního účtu."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Vlastník zařízení omezil možnost změnit nastavení mobilní sítě."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Nastavení (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Chyba nastavení hovorů"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Načítání nastavení..."</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 5254dcc..1fc277f 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Kõneseaded"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Kõne seadeid saab muuta ainult administraator."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Telefoni konto seadeid saab muuta ainult administraator või tööprofiili kasutaja."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Seadme omanik on mobiilsidevõrgu seadete muutmise võimalust piiranud."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Seaded (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Kõneseadete viga"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Seadete lugemine ..."</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index db9da03..60abd7f 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"تنظیمات تماس"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"فقط کاربر سرپرست می‌تواند تنظیمات تماس را تغییر دهد."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"فقط کاربر کاری یا سرپرست می‌تواند تنظیمات حساب تلفن را تغییر دهد."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"مالک دستگاه امکان تغییر دادن تنظیمات شبکه تلفن همراه را محدود کرده است."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"تنظیمات (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"خطای تنظیمات تماس"</string>
     <string name="reading_settings" msgid="1605904432450871183">"در حال خواندن تنظیمات..."</string>
@@ -287,8 +286,8 @@
     <string name="roaming" msgid="1576180772877858949">"فراگردی"</string>
     <string name="roaming_enable" msgid="6853685214521494819">"اتصال به سرویس‌های داده هنگام فراگردی"</string>
     <string name="roaming_disable" msgid="8856224638624592681">"اتصال به سرویس‌های داده هنگام فراگردی"</string>
-    <string name="roaming_reenable_message" msgid="1951802463885727915">"فراگردی داده خاموش شده است. برای روشن کردن آن، ضربه بزنید."</string>
-    <string name="roaming_enabled_message" msgid="9022249120750897">"ممکن است هزینه‌های فراگردی اعمال شود. برای اصلاح ضربه بزنید."</string>
+    <string name="roaming_reenable_message" msgid="1951802463885727915">"فراگردی داده خاموش شده است. برای روشن کردن آن، تک‌ضرب بزنید."</string>
+    <string name="roaming_enabled_message" msgid="9022249120750897">"ممکن است هزینه‌های فراگردی اعمال شود. برای اصلاح تک‌ضرب بزنید."</string>
     <string name="roaming_notification_title" msgid="3590348480688047320">"اتصال داده تلفن همراه قطع شد"</string>
     <string name="roaming_on_notification_title" msgid="7451473196411559173">"فراگردی داده روشن است"</string>
     <string name="roaming_warning" msgid="7855681468067171971">"شاید هزینه زیادی برای شما داشته باشد."</string>
@@ -565,11 +564,11 @@
     <string name="incall_error_carrier_roaming_satellite_mode" msgid="678603203562886361">"‏می‌توانید بدون شبکه تلفن همراه یا شبکه Wi-Fi پیام ارسال و دریافت کنید."</string>
     <string name="emergency_information_hint" msgid="9208897544917793012">"اطلاعات اضطراری"</string>
     <string name="emergency_information_owner_hint" msgid="6256909888049185316">"مالک"</string>
-    <string name="emergency_information_confirm_hint" msgid="5109017615894918914">"برای دیدن اطلاعات، دوباره ضربه بزنید"</string>
+    <string name="emergency_information_confirm_hint" msgid="5109017615894918914">"برای دیدن اطلاعات، دوباره تک‌ضرب بزنید"</string>
     <string name="emergency_enable_radio_dialog_title" msgid="2667568200755388829">"تماس اضطراری"</string>
     <string name="single_emergency_number_title" msgid="8413371079579067196">"شماره تلفن اضطراری"</string>
     <string name="numerous_emergency_numbers_title" msgid="8972398932506755510">"شماره تلفن‌های اضطراری"</string>
-    <string name="emergency_call_shortcut_hint" msgid="1290485125107779500">"برای تماس با <xliff:g id="EMERGENCY_NUMBER">%s</xliff:g> دوباره ضربه بزنید"</string>
+    <string name="emergency_call_shortcut_hint" msgid="1290485125107779500">"برای تماس با <xliff:g id="EMERGENCY_NUMBER">%s</xliff:g> دوباره تک‌ضرب بزنید"</string>
     <string name="emergency_enable_radio_dialog_message" msgid="1695305158151408629">"در حال روشن کردن رادیو..."</string>
     <string name="emergency_enable_radio_dialog_retry" msgid="4329131876852608587">"سرویسی در دسترس نیست. دوباره امتحان کنید..."</string>
     <string name="radio_off_during_emergency_call" msgid="8011154134040481609">"در طول تماس اضطراری نمی‌توانید به حالت هواپیما بروید."</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index b99db67..d347488 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Puheluasetukset"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Vain järjestelmänvalvoja voi muuttaa puheluasetuksia."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Vain järjestelmänvalvoja tai työkäyttäjä voi muuttaa puhelintilin asetuksia."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Laitteen omistaja on rajoittanut mobiiliverkkoasetusten muuttamista."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Asetukset (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Virhe puheluasetuksissa"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Luetaan asetuksia…"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 8407e0b..8fac282 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Paramètres d\'appel"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Seul l\'administrateur peut modifier les paramètres d\'appel."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Seul l\'administrateur ou l\'utilisateur professionnel peut modifier les paramètres du compte téléphonique."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Le propriétaire de l\'appareil a limité la possibilité de modifier les paramètres du réseau mobile."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Paramètres (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Erreur des paramètres d\'appel"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Lecture des paramètres..."</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 0b630ab..19d127d 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"કૉલ સેટિંગ"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"કૉલ સેટિંગને ફક્ત ઍડમિન વપરાશકર્તા દ્વારા જ બદલી શકાય છે."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"ફોન એકાઉન્ટના સેટિંગને ફક્ત ઍડમિન અથવા ઑફિસના વપરાશકર્તા જ બદલી શકે છે."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"ડિવાઇસના માલિકે મોબાઇલ નેટવર્ક સેટિંગ બદલવાની ક્ષમતા પ્રતિબંધિત કરી છે."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"સેટિંગ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"કૉલ સેટિંગની ભૂલ"</string>
     <string name="reading_settings" msgid="1605904432450871183">"સેટિંગ વાંચી રહ્યાં છે…"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 991837b..731c6fb 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Զանգի կարգավորումներ"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Զանգի կարգավորումները կարող է փոխել միայն ադմինիստրատոր հանդիսացող օգտատերը:"</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Հեռախոսի հաշվի կարգավորումները կարող է փոխել միայն ադմինիստրատորը կամ աշխատանքային հաշվի օգտատերը։"</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Սարքի սեփականատերը սահմանափակել է բջջային ցանցի կարգավորումները փոխելու հնարավորությունը։"</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Կարգավորումներ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Զանգի կարգավորումների սխալ"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Ընթերցման կարգավորումներ..."</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index b7a2233..1e9ca9a 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Setelan panggilan"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Setelan panggilan telepon hanya dapat diubah oleh pengguna admin."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Setelan akun Telepon hanya dapat diubah admin atau pengguna untuk kerja."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Pemilik perangkat telah membatasi kemampuan untuk mengubah setelan jaringan seluler."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Setelan (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Kesalahan setelan panggilan"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Membaca setelan…"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 9e9ca3b..cadede4 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Impostazioni chiamate"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Le impostazioni delle chiamate possono essere modificate solo dall\'utente amministratore."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Le impostazioni dell\'account del telefono possono essere modificate solo dall\'amministratore o dall\'utente di lavoro."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Il proprietario del dispositivo ha limitato la possibilità di modificare le impostazioni della rete mobile."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Impostazioni (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Errore durante aggiornam. impostaz. chiamate"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Lettura impostazioni..."</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 18e69d4..f93dc1d 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"הגדרות שיחה"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"רק מנהל המערכת יכול לשנות הגדרות שיחה."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"אפשר לשנות את הגדרות החשבון בטלפון רק מהחשבון של האדמין או של העבודה."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"אי אפשר לשנות את הגדרות הרשת הסלולרית בגלל מגבלות שהוגדרו על ידי בעלי המכשיר."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"הגדרות (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"שגיאה בהגדרות שיחה"</string>
     <string name="reading_settings" msgid="1605904432450871183">"קריאת ההגדרות מתבצעת…"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index a3effbb..25ab94d 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Қоңырау параметрлері"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Қоңырау параметрлерін тек әкімші пайдаланушы өзгерте алады."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Телефонның аккаунт параметрлерін тек әкімші немесе жұмыстағы пайдаланушы өзгерте алады."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Құрылғының иесі мобильдік желі параметрлерін өзгертуге шектеу қойды."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Параметрлер (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Қоңырау параметрлерінің қателігі"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Параметрлерді оқуда…"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 7f2271e..9feb53a 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"ಕರೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"ಕರೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಕೇವಲ ನಿರ್ವಾಹಕ ಬಳಕೆದಾರರು ಮಾತ್ರ ಬದಲಾಯಿಸಬಹುದು."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"ಫೋನ್ ಖಾತೆಯ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನಿರ್ವಾಹಕರು ಅಥವಾ ಕೆಲಸದ ಬಳಕೆದಾರರಿಂದ ಮಾತ್ರ ಬದಲಾಯಿಸಬಹುದಾಗಿದೆ."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"ಸಾಧನದ ಮಾಲೀಕರು ಮೊಬೈಲ್ ನೆಟ್‌ವರ್ಕ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ನಿರ್ಬಂಧಿಸಿದ್ದಾರೆ."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"ಕರೆ ಸೆಟ್ಟಿಂಗ್‌ಗಳ ದೋಷ"</string>
     <string name="reading_settings" msgid="1605904432450871183">"ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಓದಲಾಗುತ್ತಿದೆ…"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index b275825..c3b4425 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"통화 설정"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"관리자만 통화 설정을 변경할 수 있습니다."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"전화 계정 설정은 관리자 또는 직장 사용자만 변경할 수 있습니다."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"기기 소유자가 모바일 네트워크 설정 변경 기능을 제한했습니다."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"설정(<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"통화 설정 오류"</string>
     <string name="reading_settings" msgid="1605904432450871183">"설정을 읽는 중..."</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index ee1714b..3b086e9 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Чалуу параметрлери"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Чалуу параметрлерин администратор гана өзгөртө алат."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Телефондогу аккаунттун параметрлерин администратор же жумуштагы колдонуучу гана өзгөртө алат."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Түзмөктүн ээси мобилдик тармактын параметрлерин өзгөртүүгө тыюу салды."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Параметрлер (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Чалуу жөндөөлөрүндө ката кетти"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Параметрлер окулууда…"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 2f3613c..3034573 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Skambinimo nustatymai"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Skambučių nustatymus gali keisti tik administruojantis naudotojas."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Telefono paskyros nustatymus gali keisti tik administratorius arba darbo paskyros naudotojas."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Įrenginio savininkas apribojo galimybę keisti mobiliojo ryšio tinklo nustatymus."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Nustatymai (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Skambinimo nustatymų klaida"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Analizuojami nustatymai..."</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 9222b9c..10a7a49 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Zvanu iestatījumi"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Tikai lietotājs ar administratora tiesībām var mainīt zvanu iestatījumus."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Tikai administrators vai primārais lietotājs var mainīt tālruņa konta iestatījumus."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Ierīces īpašnieks ir ierobežojis iespēju mainīt mobilā tīkla iestatījumus."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Iestatījumi (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Zvanu iestatījumu kļūda"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Notiek iestatījumu lasīšana..."</string>
@@ -845,8 +844,8 @@
     <string name="dsds_dialog_cancel" msgid="3245958947099586655">"Atcelt"</string>
     <string name="removable_esim_string" msgid="7931369811671787649">"Iestatīt noņemamu eSIM kā noklusējumu"</string>
     <string name="radio_info_radio_power" msgid="8805595022160471587">"Mobilā tālruņa radio signāla stiprums"</string>
-    <string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulācijas ierīce nedarbojas (tikai būvējuma atkļūdošana)"</string>
-    <string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mobilo sakaru operatora satelīta režīma imitēšana (tikai būvējuma atkļūdošana)"</string>
+    <string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulācijas ierīce nedarbojas (tikai atkļūdošanas būvējums)"</string>
+    <string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mobilo sakaru operatora satelīta režīma imitēšana (tikai atkļūdošanas būvējums)"</string>
     <string name="esos_satellite_string" msgid="7274794226125968657">"Izmēģināt īsta satelīta eSOS režīmu (tikai atkļūdošanas būvējumā)"</string>
     <string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Skatīt SIM adrešu grāmatu"</string>
     <string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Skatīt ierobežotā zvanu saraksta numurus"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 9a42ee7..450fce0 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Поставки за повици"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Поставките за повик може да ги измени само администраторскиот корисник."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Поставките за сметката на телефонот може да ги промени само администраторот или деловниот корисник."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Сопственикот на уредот ја ограничил можноста за менување на поставките за мобилната мрежа."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Поставки (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Грешка со поставки на повици"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Се читаат поставките..."</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index ba2d965..2975abd 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"कॉल सेटिंग्ज"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"कॉल सेटिंग्ज केवळ प्रशासक वापरकर्त्याद्वारे बदलल्‍या जाऊ शकतात."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"फोन खाते सेटिंग्ज फक्त ॲडमिन किंवा ऑफिसच्या वापरकर्त्याद्वारे बदलली जाऊ शकतात."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"डिव्हाइसच्या मालकाने मोबाइल नेटवर्क सेटिंग्ज बदलण्याची क्षमता प्रतिबंधित केली आहे."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"सेटिंग्ज (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"कॉल सेटिंग्ज एरर"</string>
     <string name="reading_settings" msgid="1605904432450871183">"सेटिंग्‍ज वाचत आहे…"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 28c6e45..f63b198 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"कल सेटिङहरू"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"कल सेटिङहरू केवल प्रशासकीय प्रयोगकर्ताद्वारा परिवर्तन गर्न सकिन्छ।"</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"एड्मिन वा कार्य प्रोफाइलका प्रयोगकर्ता मात्र फोनमा लिंक गरिएको खाताका सेटिङ बदल्न सक्नुहुन्छ।"</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"डिभाइसका मालिकले मोबाइल नेटवर्कसम्बन्धी सेटिङ परिवर्तन गर्न रोक लगाउनुभएको छ।"</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"सेटिङहरू (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"कल सेटिङमा त्रुटि"</string>
     <string name="reading_settings" msgid="1605904432450871183">"सेटिङहरू पढ्दै..."</string>
@@ -599,8 +598,8 @@
     <string name="importToFDNfromContacts" msgid="5068664870738407341">"कन्ट्याक्टबाट इम्पोर्ट गर्नुहोस्"</string>
     <string name="singleContactImportedMsg" msgid="3619804066300998934">"आयातित सम्पर्क"</string>
     <string name="failedToImportSingleContactMsg" msgid="228095510489830266">"सम्पर्क इम्पोर्ट गर्न असफल"</string>
-    <string name="hac_mode_title" msgid="4127986689621125468">"श्रवणका लागि सहयोगी यन्त्रहरू"</string>
-    <string name="hac_mode_summary" msgid="7774989500136009881">"श्रवण सहायता अनुकूलता खोल्नुहोस्"</string>
+    <string name="hac_mode_title" msgid="4127986689621125468">"हियरिङ डिभाइसहरू"</string>
+    <string name="hac_mode_summary" msgid="7774989500136009881">"हियरिङ डिभाइस कम्प्याटिबिलिटी अन गर्नुहोस्"</string>
     <string name="rtt_mode_title" msgid="3075948111362818043">"द्रुत टेक्स्ट म्यासेज (RTT) कल"</string>
     <string name="rtt_mode_summary" msgid="8631541375609989562">"भ्वाइस कलभित्रै सन्देश प्रवाह गर्ने अनुमति दिनुहोस्"</string>
     <string name="rtt_mode_more_information" msgid="587500128658756318">"RTT ले बहिरा, सुन्नमा कठिन हुने, बोल्न नसक्ने र आवाज मात्र नभई कल गर्दा थप कुराहरू चाहिने  मान्छेहरूलाई सहायता गर्छ!&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; - RTT कलहरूलाई सन्देशसम्बन्धी ट्रान्सक्रिप्टका रूपमा सुरक्षित गरिन्छ\n      &lt;br&gt; - RTT भिडियो कलहरूमा उपलब्ध छैन"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index f2fcb46..585a53e 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"ਕਾਲ ਸੈਟਿੰਗਾਂ"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"ਕਾਲ ਸੈਟਿੰਗਾਂ ਸਿਰਫ਼ ਪ੍ਰਸ਼ਾਸਕ ਵਰਤੋਂਕਾਰ ਵੱਲੋਂ ਹੀ ਬਦਲੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ।"</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"ਫ਼ੋਨ ਦੀਆਂ ਖਾਤਾ ਸੈਟਿੰਗਾਂ ਸਿਰਫ਼ ਪ੍ਰਸ਼ਾਸਕ ਜਾਂ ਕਾਰਜ-ਸਥਾਨ ਵਰਤੋਂਕਾਰ ਵੱਲੋਂ ਹੀ ਬਦਲੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ।"</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"ਡੀਵਾਈਸ ਦੇ ਮਾਲਕ ਨੇ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਸੈਟਿੰਗਾਂ ਨੂੰ ਬਦਲਣ ਦੀ ਯੋਗਤਾ \'ਤੇ ਪਾਬੰਦੀ ਲਗਾ ਦਿੱਤੀ ਹੈ।"</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"ਸੈਟਿੰਗਾਂ (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"ਕਾਲ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਗੜਬੜ"</string>
     <string name="reading_settings" msgid="1605904432450871183">"ਸੈਟਿੰਗਾਂ ਪੜ੍ਹ ਰਿਹਾ ਹੈ…"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 4ceb936..62c51e8 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Definições de chamadas"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"As definições de chamadas só podem ser alteradas pelo utilizador gestor."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"As definições da conta do telemóvel só podem ser alteradas pelo administrador ou utilizador de trabalho."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"O proprietário do dispositivo restringiu a capacidade de alterar as definições de rede móvel."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Definições (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Erro nas definições de chamada"</string>
     <string name="reading_settings" msgid="1605904432450871183">"A ler as definições..."</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 26c9ad1..dd8a134 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Setări pentru apeluri"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Numai administratorul poate să modifice setările pentru apeluri."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Setările contului de pe telefon pot fi modificate numai de administrator sau de un utilizator profesional."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Proprietarul dispozitivului a restricționat posibilitatea de a modifica setările pentru rețelele mobile."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Setări (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Eroare în setările pentru apeluri"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Se citesc setările..."</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 5a20434..c29bef1 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"ඇමතුම් සැකසීම්"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"ඇමතුම් සැකසීම් වෙනස් කළ හැක්කේ පරිපාලක පරිශීලකයාට පමණි."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"දුරකථන ගිණුම් සැකසීම් වෙනස් කළ හැක්කේ පරිපාලක හෝ කාර්යාල පරිශීලකයාට පමණි."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"උපාංග හිමිකරු ජංගම ජාල සැකසීම් වෙනස් කිරීමේ හැකියාව සීමා කර ඇත."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"සැකසීම් (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"ඇමතුම් සැකසුම් දෝෂය"</string>
     <string name="reading_settings" msgid="1605904432450871183">"සැකසුම් කියවමින්…"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 0914c42..d540299 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Nastavenia hovorov"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Nastavenia hovorov môže zmeniť iba používateľ s povoleniami správcu."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Nastavenia telefónneho účtu môže zmeniť iba správca alebo spravovaný používateľ."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Vlastník zariadenia obmedzil možnosť zmeny nastavení mobilnej siete."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Nastavenia (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Chyba nastavení hovorov"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Nastavenia sa načítavajú…"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 38e9aa9..214fcc4 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Nastavitve klicev"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Nastavitve klicanja lahko spremeni samo uporabnik s skrbniškim dostopom."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Nastavitve računa telefona lahko spremeni samo uporabnik s skrbniškim ali službenim dostopom."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Lastnik naprave je omejil možnost spreminjanja nastavitev mobilnega omrežja."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Nastavitve (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Napaka nastavitev klicev"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Branje nastavitev …"</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index da21924..a9aad0d 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Cilësimet e telefonatës"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Cilësimet e telefonatës mund të ndryshohen vetëm nga administratori."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Cilësimet e llogarisë të telefonit mund të ndryshohen vetëm nga administratori ose një përdorues në punë."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Zotëruesi i pajisjes ka kufizuar aftësinë për të ndryshuar cilësimet e rrjetit celular."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Cilësimet (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Gabim në cilësimet e telefonatës"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Po lexon cilësimet…"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 14a3732..65921b3 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Samtalsinställningar"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Det är bara administratören som kan ändra samtalsinställningar."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Endast administratören eller arbetsanvändaren får ändra telefonens kontoinställningar."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Enhetens ägare har begränsat möjligheten att ändra inställningar för mobilnätverk."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Inställningar (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Felaktiga samtalsinställningar"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Läser inställningar…"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index c8b23d2..61ff509 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Mipangilio ya simu"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Mipangilio ya simu inaweza kubadilishwa na mtumiaji wa akaunti ya msimamizi."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Mipangilio ya akaunti ya simu inaweza tu kubadilishwa na msimamizi au mtumiaji wa kazini."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Mmiliki wa kifaa amezuia kubadilisha mipangilio ya mtandao wa simu."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Mipangilio (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Hitilafu ya mipangilio ya kupiga simu"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Inasoma mipangilio…."</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 1ae8368..24a1a8c 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"அழைப்பு அமைப்பு"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"நிர்வாகிப் பயனர் மட்டுமே அழைப்பிற்கான அமைப்புகளை மாற்ற முடியும்."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"நிர்வாகி/பணிக்கணக்கு பயனர் மட்டுமே அமைப்புகளை மாற்றலாம்."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"மொபைல் நெட்வொர்க் அமைப்புகளை மாற்றும் வசதியைச் சாதன உரிமையாளர் முடக்கியுள்ளார்."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"அமைப்புகள் (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"அழைப்பு அமைப்புகளில் பிழை"</string>
     <string name="reading_settings" msgid="1605904432450871183">"அமைப்புகளைப் படிக்கிறது…"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 9f25981..ba6a581 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"కాల్ సెట్టింగ్‌లు"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"కాల్ సెట్టింగ్‌లను నిర్వాహక వినియోగదారు మాత్రమే మార్చగలరు."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"ఫోన్ ఖాతా సెట్టింగ్‌లను అడ్మిన్ లేదా వర్క్ యూజర్ మాత్రమే మార్చగలరు."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"పరికర ఓనర్ మొబైల్ నెట్‌వర్క్ సెట్టింగ్‌లను మార్చగల సామర్థ్యాన్ని పరిమితం చేశారు."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"సెట్టింగ్‌లు (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"కాల్ సెట్టింగ్‌ల ఎర్రర్"</string>
     <string name="reading_settings" msgid="1605904432450871183">"సెట్టింగ్‌లను చదువుతోంది…"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 675cd79..1994bdf 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"การตั้งค่าการโทร"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"ผู้ใช้ระดับผู้ดูแลระบบเท่านั้นที่สามารถเปลี่ยนแปลงการตั้งค่าการโทรได้"</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"เฉพาะผู้ดูแลระบบหรือผู้ใช้ที่ทำงานเท่านั้นที่สามารถเปลี่ยนการตั้งค่าบัญชีของโทรศัพท์ได้"</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"เจ้าของอุปกรณ์ได้จำกัดความสามารถในการเปลี่ยนการตั้งค่าเครือข่ายมือถือ"</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"การตั้งค่า (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"ข้อผิดพลาดในการตั้งค่าการโทร"</string>
     <string name="reading_settings" msgid="1605904432450871183">"กำลังประมวลการตั้งค่า…"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 7890362..5935a58 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Cài đặt cuộc gọi"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Chỉ người dùng quản trị mới có thể thay đổi cài đặt cuộc gọi."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Chỉ quản trị viên hoặc người dùng tài khoản cho công việc mới có thể thay đổi chế độ cài đặt tài khoản điện thoại."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Chủ sở hữu thiết bị đã hạn chế khả năng thay đổi chế độ cài đặt mạng di động."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Cài đặt (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Lỗi cài đặt cuộc gọi"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Đang đọc các tùy chọn cài đặt…"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 97ec241..12ac0bc 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -134,8 +134,7 @@
     <string name="updating_title" msgid="6130548922615719689">"Izilungiselelo zekholi"</string>
     <string name="call_settings_admin_user_only" msgid="7238947387649986286">"Izilungiselelo zekholi zingaguqulwa kuphela ngumsebenzisi oyinhloko."</string>
     <string name="phone_account_settings_user_restriction" msgid="9142685151087208396">"Amasethingi e-akhawunti yefoni angashintshwa kuphela umphathi noma umsebenzisi wasemsebenzini."</string>
-    <!-- no translation found for phone_account_no_config_mobile_networks (7351062247756521227) -->
-    <skip />
+    <string name="phone_account_no_config_mobile_networks" msgid="7351062247756521227">"Umnikazi wedivayisi ukhawule amandla okushintsha amasethingi enethiwekhi yeselula."</string>
     <string name="call_settings_with_label" msgid="8460230435361579511">"Izilungiselelo (<xliff:g id="SUBSCRIPTIONLABEL">%s</xliff:g>)"</string>
     <string name="error_updating_title" msgid="2024290892676808965">"Iphutha lokulungiselela ikholi"</string>
     <string name="reading_settings" msgid="1605904432450871183">"Ifunda izilungiselelo..."</string>
diff --git a/src/com/android/phone/CarrierConfigLoader.java b/src/com/android/phone/CarrierConfigLoader.java
index 47fd96e..d4822ad 100644
--- a/src/com/android/phone/CarrierConfigLoader.java
+++ b/src/com/android/phone/CarrierConfigLoader.java
@@ -44,7 +44,6 @@
 import android.os.Message;
 import android.os.PermissionEnforcer;
 import android.os.PersistableBundle;
-import android.os.Process;
 import android.os.RemoteException;
 import android.os.ResultReceiver;
 import android.os.SystemProperties;
@@ -1758,12 +1757,14 @@
     private void enforceCallerIsSystemOrRequestingPackage(@NonNull String requestingPackage)
             throws SecurityException {
         final int callingUid = Binder.getCallingUid();
-        if (callingUid == Process.ROOT_UID || callingUid == Process.SYSTEM_UID
-                || callingUid == Process.SHELL_UID || callingUid == Process.PHONE_UID) {
-            // Bug reports (dumpstate.cpp) run as SHELL, and let some other privileged UIDs through
-            // as well.
+        if (TelephonyPermissions.isRootOrShell(callingUid)
+                || TelephonyPermissions.isSystemOrPhone(
+                callingUid)) {
+            // Bug reports (dumpstate.cpp) run as SHELL, and let some other privileged UIDs
+            // through as well.
             return;
         }
+
         // An app is trying to dump extra detail, block it if they aren't who they claim to be.
         AppOpsManager appOps = mContext.getSystemService(AppOpsManager.class);
         if (appOps == null) {
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 07b027e..9aed910 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -165,6 +165,7 @@
 import android.telephony.satellite.ISatelliteTransmissionUpdateCallback;
 import android.telephony.satellite.NtnSignalStrength;
 import android.telephony.satellite.NtnSignalStrengthCallback;
+import android.telephony.satellite.ProvisionSubscriberId;
 import android.telephony.satellite.SatelliteCapabilities;
 import android.telephony.satellite.SatelliteDatagram;
 import android.telephony.satellite.SatelliteDatagramCallback;
@@ -4291,7 +4292,7 @@
     @Override
     public void disableVisualVoicemailSmsFilter(String callingPackage, int subId) {
         mAppOps.checkPackage(Binder.getCallingUid(), callingPackage);
-
+        enforceVisualVoicemailPackage(callingPackage, subId);
         enforceTelephonyFeatureWithException(callingPackage,
                 PackageManager.FEATURE_TELEPHONY_CALLING, "disableVisualVoicemailSmsFilter");
 
@@ -12296,7 +12297,7 @@
 
     private static void validateSignalStrengthUpdateRequest(Context context,
             SignalStrengthUpdateRequest request, int callingUid) {
-        if (callingUid == Process.PHONE_UID || callingUid == Process.SYSTEM_UID) {
+        if (TelephonyPermissions.isSystemOrPhone(callingUid)) {
             // phone/system process do not have further restriction on request
             return;
         }
@@ -14272,4 +14273,48 @@
         enforcePackageUsageStatsPermission("requestSatelliteSessionStats");
         mSatelliteController.requestSatelliteSessionStats(subId, result);
     }
+
+    /**
+     * Request to get list of prioritized satellite subscriber ids to be used for provision.
+     *
+     * @param result The result receiver, which returns the list of prioritized satellite tokens
+     * to be used for provision if the request is successful or an error code if the request failed.
+     *
+     * @throws SecurityException if the caller doesn't have the required permission.
+     */
+    @Override
+    public void requestProvisionSubscriberIds(@NonNull ResultReceiver result) {
+        enforceSatelliteCommunicationPermission("requestProvisionSubscriberIds");
+        mSatelliteController.requestProvisionSubscriberIds(result);
+    }
+
+    /**
+     * Request to get provisioned status for given a satellite subscriber id.
+     *
+     * @param satelliteSubscriberId Satellite subscriber id requiring provisioned status check.
+     * @param result The result receiver, which returns the provisioned status of the token if the
+     * request is successful or an error code if the request failed.
+     *
+     * @throws SecurityException if the caller doesn't have the required permission.
+     */
+    @Override
+    public void requestIsProvisioned(String satelliteSubscriberId, @NonNull ResultReceiver result) {
+        enforceSatelliteCommunicationPermission("requestIsProvisioned");
+        mSatelliteController.requestIsProvisioned(satelliteSubscriberId, result);
+    }
+
+    /**
+     * Deliver the list of provisioned satellite subscriber ids.
+     *
+     * @param list List of provisioned satellite subscriber ids.
+     * @param result The result receiver that returns whether deliver success or fail.
+     *
+     * @throws SecurityException if the caller doesn't have the required permission.
+     */
+    @Override
+    public void provisionSatellite(List<ProvisionSubscriberId> list,
+            @NonNull ResultReceiver result) {
+        enforceSatelliteCommunicationPermission("provisionSatellite");
+        mSatelliteController.provisionSatellite(list, result);
+    }
 }
diff --git a/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java b/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java
index 25f00dd..ac4c9f9 100644
--- a/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java
+++ b/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java
@@ -19,6 +19,7 @@
 import static android.telephony.satellite.SatelliteManager.KEY_SATELLITE_COMMUNICATION_ALLOWED;
 import static android.telephony.satellite.SatelliteManager.KEY_SATELLITE_PROVISIONED;
 import static android.telephony.satellite.SatelliteManager.KEY_SATELLITE_SUPPORTED;
+import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_LOCATION_NOT_AVAILABLE;
 import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_REQUEST_NOT_SUPPORTED;
 import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SUCCESS;
 
@@ -212,6 +213,11 @@
     private static final String CONFIG_UPDATER_SATELLITE_IS_ALLOW_ACCESS_CONTROL_KEY =
             "config_updater_satellite_is_allow_access_control";
 
+    private static final String LATEST_SATELLITE_COMMUNICATION_ALLOWED_SET_TIME_KEY =
+            "latest_satellite_communication_allowed_set_time";
+    private static final String LATEST_SATELLITE_COMMUNICATION_ALLOWED_KEY =
+            "latest_satellite_communication_allowed";
+
     private SharedPreferences mSharedPreferences;
     private final ConfigUpdaterMetricsStats mConfigUpdaterMetricsStats;
     @Nullable
@@ -618,6 +624,22 @@
         }
     }
 
+    private void persistLatestSatelliteCommunicationAllowedState() {
+        if (mSharedPreferences == null) {
+            ploge("persistLatestSatelliteCommunicationAllowedState: mSharedPreferences is null");
+            return;
+        }
+
+        try {
+            mSharedPreferences.edit().putLong(LATEST_SATELLITE_COMMUNICATION_ALLOWED_SET_TIME_KEY,
+                    mLatestSatelliteCommunicationAllowedSetTime).apply();
+            mSharedPreferences.edit().putBoolean(LATEST_SATELLITE_COMMUNICATION_ALLOWED_KEY,
+                    mLatestSatelliteCommunicationAllowed).apply();
+        } catch (Exception ex) {
+            ploge("persistLatestSatelliteCommunicationAllowedState error : " + ex);
+        }
+    }
+
     /**
      * Update country codes and S2CellFile with the new data from ConfigUpdater
      */
@@ -755,6 +777,27 @@
                 SatelliteConstants.CONFIG_DATA_SOURCE_CONFIG_UPDATER);
     }
 
+    private void loadCachedLatestSatelliteCommunicationAllowedState() {
+        if (mSharedPreferences == null) {
+            ploge("loadCachedLatestSatelliteCommunicationAllowedState: mSharedPreferences is null");
+            return;
+        }
+
+        try {
+            mLatestSatelliteCommunicationAllowedSetTime =
+                    mSharedPreferences.getLong(LATEST_SATELLITE_COMMUNICATION_ALLOWED_SET_TIME_KEY,
+                            0);
+            mLatestSatelliteCommunicationAllowed =
+                    mSharedPreferences.getBoolean(LATEST_SATELLITE_COMMUNICATION_ALLOWED_KEY,
+                            false);
+        } catch (Exception ex) {
+            ploge("loadCachedLatestSatelliteCommunicationAllowedState: ex=" + ex);
+        }
+        plogd("mLatestSatelliteCommunicationAllowedSetTime="
+                + mLatestSatelliteCommunicationAllowedSetTime
+                + ", mLatestSatelliteCommunicationAllowed=" + mLatestSatelliteCommunicationAllowed);
+    }
+
     private long getLocationFreshDurationNanos() {
         synchronized (mLock) {
             if (mIsOverlayConfigOverridden) {
@@ -877,7 +920,9 @@
 
     private void sendSatelliteAllowResultToReceivers(int resultCode, Bundle resultData,
             boolean allowed) {
-        updateCurrentSatelliteAllowedState(allowed);
+        if (resultCode == SATELLITE_RESULT_SUCCESS) {
+            updateCurrentSatelliteAllowedState(allowed);
+        }
         synchronized (mLock) {
             for (ResultReceiver resultReceiver : mSatelliteAllowResultReceivers) {
                 resultReceiver.send(resultCode, resultData);
@@ -946,7 +991,7 @@
         }
     }
 
-    /* returns true,if the latest query was executed in 24Hr, or returns false. */
+    /* returns true if the latest query was executed in 12Hr, or returns false. */
     private boolean isCommunicationAllowedCacheValid() {
         if (mLatestSatelliteCommunicationAllowedSetTime > 0) {
             long currentTime = SystemClock.elapsedRealtimeNanos();
@@ -1066,14 +1111,15 @@
             } else {
                 plogd("current location is not available");
                 if (isCommunicationAllowedCacheValid()) {
-                    plogd("onCurrentLocationAvailable: 24Hr cache is still valid, using it");
+                    plogd("onCurrentLocationAvailable: 12Hr cache is still valid, using it");
                     bundle.putBoolean(KEY_SATELLITE_COMMUNICATION_ALLOWED,
                             mLatestSatelliteCommunicationAllowed);
                     sendSatelliteAllowResultToReceivers(SATELLITE_RESULT_SUCCESS, bundle,
                             mLatestSatelliteCommunicationAllowed);
                 } else {
                     bundle.putBoolean(KEY_SATELLITE_COMMUNICATION_ALLOWED, false);
-                    sendSatelliteAllowResultToReceivers(SATELLITE_RESULT_SUCCESS, bundle, false);
+                    sendSatelliteAllowResultToReceivers(
+                            SATELLITE_RESULT_LOCATION_NOT_AVAILABLE, bundle, false);
                 }
             }
         }
@@ -1109,6 +1155,7 @@
                         satelliteAllowed);
                 mLatestSatelliteCommunicationAllowed = satelliteAllowed;
                 mLatestSatelliteCommunicationAllowedSetTime = SystemClock.elapsedRealtimeNanos();
+                persistLatestSatelliteCommunicationAllowedState();
             } catch (Exception ex) {
                 ploge("checkSatelliteAccessRestrictionForLocation: ex=" + ex);
                 reportAnomaly(UUID_ON_DEVICE_LOOKUP_EXCEPTION,
@@ -1544,9 +1591,11 @@
                 mLatestSatelliteCommunicationAllowedSetTime = 0;
                 mLatestSatelliteCommunicationAllowed = false;
                 mCurrentSatelliteAllowedState = false;
+                persistLatestSatelliteCommunicationAllowedState();
             } else if ("clear_cache_only".equalsIgnoreCase(state)) {
                 mLatestSatelliteCommunicationAllowedSetTime = 0;
                 mLatestSatelliteCommunicationAllowed = false;
+                persistLatestSatelliteCommunicationAllowedState();
             } else {
                 loge("setIsSatelliteCommunicationAllowedForCurrentLocationCache: invalid state="
                         + state);
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index 51c4fc7..4421f0c 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -1186,8 +1186,10 @@
         }
 
         if (mDomainSelectionResolver.isDomainSelectionSupported()) {
-            // Normal routing emergency number shall be handled by normal call domain selctor.
-            int routing = getEmergencyCallRouting(phone, number, needToTurnOnRadio);
+            // Normal routing emergency number shall be handled by normal call domain selector.
+            int routing = (isEmergencyNumber)
+                    ? getEmergencyCallRouting(phone, number, needToTurnOnRadio)
+                    : EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN;
             if (isEmergencyNumber && routing != EmergencyNumber.EMERGENCY_CALL_ROUTING_NORMAL) {
                 final Connection resultConnection =
                         placeEmergencyConnection(phone,
@@ -2668,6 +2670,12 @@
                     createEmergencyConnection(phone, (TelephonyConnection) resultConnection,
                             numberToDial, isTestEmergencyNumber, request, needToTurnOnRadio,
                             mEmergencyStateTracker.getEmergencyRegistrationResult());
+                } else if (result == android.telephony.DisconnectCause.EMERGENCY_PERM_FAILURE) {
+                    mEmergencyConnection.removeTelephonyConnectionListener(
+                            mEmergencyConnectionListener);
+                    TelephonyConnection c = mEmergencyConnection;
+                    releaseEmergencyCallDomainSelection(true, false);
+                    retryOutgoingOriginalConnection(c, phone, true);
                 } else {
                     mEmergencyConnection = null;
                     mAlternateEmergencyConnection = null;
@@ -2922,6 +2930,9 @@
     }
 
     private int getEmergencyCallRouting(Phone phone, String number, boolean needToTurnOnRadio) {
+        if (phone == null) {
+            return EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN;
+        }
         // This method shall be called only if AOSP domain selection is enabled.
         if (mDynamicRoutingController == null) {
             mDynamicRoutingController = DynamicRoutingController.getInstance();
@@ -3230,6 +3241,12 @@
                     recreateEmergencyConnection(c, phone, domain);
                     mIsEmergencyCallPending = false;
                 }, mDomainSelectionMainExecutor);
+            } else if (result == android.telephony.DisconnectCause.EMERGENCY_PERM_FAILURE) {
+                mEmergencyConnection.removeTelephonyConnectionListener(
+                        mEmergencyConnectionListener);
+                TelephonyConnection ec = mEmergencyConnection;
+                releaseEmergencyCallDomainSelection(true, false);
+                retryOutgoingOriginalConnection(ec, phone, true);
             } else {
                 mEmergencyConnection = null;
                 mAlternateEmergencyConnection = null;
diff --git a/src/com/android/services/telephony/domainselection/NormalCallDomainSelector.java b/src/com/android/services/telephony/domainselection/NormalCallDomainSelector.java
index 8d49634..aedd06e 100644
--- a/src/com/android/services/telephony/domainselection/NormalCallDomainSelector.java
+++ b/src/com/android/services/telephony/domainselection/NormalCallDomainSelector.java
@@ -35,6 +35,7 @@
 import android.telephony.ims.ImsReasonInfo;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.telephony.CallFailCause;
 
 /**
  * Implements domain selector for outgoing non-emergency calls.
@@ -325,33 +326,49 @@
         }
 
         // Check if this is a re-dial scenario
-        // IMS -> CS
         ImsReasonInfo imsReasonInfo = mSelectionAttributes.getPsDisconnectCause();
-        if (mReselectDomain && imsReasonInfo != null) {
-            logd("PsDisconnectCause:" + imsReasonInfo.getCode());
+        if (mReselectDomain) {
             mReselectDomain = false;
-            if (imsReasonInfo.getCode() == ImsReasonInfo.CODE_LOCAL_CALL_CS_RETRY_REQUIRED) {
-                if (isOutOfService()) {
-                    loge("Cannot place call in current ServiceState: " + mServiceState.getState());
-                    notifySelectionTerminated(DisconnectCause.OUT_OF_SERVICE);
-                } else {
-                    logd("Redialing over CS");
-                    notifyCsSelected();
-                }
-                return;
-            } else {
-                logd("Redialing cancelled.");
-                // Not a valid redial
-                notifySelectionTerminated(DisconnectCause.NOT_VALID);
+
+            // Out of service
+            if (isOutOfService()) {
+                loge("Cannot place call in current ServiceState: " + mServiceState.getState());
+                notifySelectionTerminated(DisconnectCause.OUT_OF_SERVICE);
+
                 return;
             }
-        }
 
-        // CS -> IMS
-        // TODO: @PreciseDisconnectCauses doesn't contain cause code related to redial on IMS.
-        if (mReselectDomain /*mSelectionAttributes.getCsDisconnectCause() == IMS_REDIAL_CODE*/) {
-            logd("Redialing cancelled.");
+            // IMS -> CS
+            if (imsReasonInfo != null) {
+                logd("PsDisconnectCause:" + imsReasonInfo.getCode());
+                if (imsReasonInfo.getCode() == ImsReasonInfo.CODE_LOCAL_CALL_CS_RETRY_REQUIRED) {
+                    logd("Redialing over CS");
+                    notifyCsSelected();
+                } else {
+                    // Not a valid redial
+                    logd("Redialing cancelled.");
+                    notifySelectionTerminated(DisconnectCause.NOT_VALID);
+                }
+                return;
+            }
+
+            // CS -> IMS
+            int csDisconnectCause = mSelectionAttributes.getCsDisconnectCause();
+            switch (csDisconnectCause) {
+                case CallFailCause.EMC_REDIAL_ON_IMS:
+                case CallFailCause.EMC_REDIAL_ON_VOWIFI:
+                    // Check IMS registration state.
+                    if (mImsStateTracker.isImsRegistered()) {
+                        logd("IMS is registered");
+                        notifyPsSelected();
+                        return;
+                    } else {
+                        logd("IMS is NOT registered");
+                    }
+            }
+
             // Not a valid redial
+            logd("Redialing cancelled.");
             notifySelectionTerminated(DisconnectCause.NOT_VALID);
             return;
         }
diff --git a/testapps/GbaTestApp/res/values-as/strings.xml b/testapps/GbaTestApp/res/values-as/strings.xml
index 3fbba0f..48b8163 100644
--- a/testapps/GbaTestApp/res/values-as/strings.xml
+++ b/testapps/GbaTestApp/res/values-as/strings.xml
@@ -20,7 +20,7 @@
     <string name="request_naf_url" msgid="4487793541217737042">"নেটৱৰ্ক এপ্লিকেশ্বন ফাংশ্বন (NAF) URL"</string>
     <string name="request_force_bootstrapping" msgid="206043602616214325">"বলেৰে বুটষ্ট্ৰেপিং কৰিবনে?"</string>
     <string name="request_org" msgid="8416693445448308975">"প্ৰতিষ্ঠানৰ ক’ড"</string>
-    <string name="request_security_protocol" msgid="1444164827561010482">"UA সুৰক্ষা প্ৰ’ট’কল আইডি"</string>
+    <string name="request_security_protocol" msgid="1444164827561010482">"UA সুৰক্ষা প্ৰ্ৰ\'টকল আইডি"</string>
     <string name="request_tls_cipher_suite" msgid="6659854717595308404">"TLS Cipher Suite আইডি"</string>
     <string name="response_success" msgid="2469204471244527663">"GBA প্ৰমাণীকৰণ সফল হৈছে নেকি?"</string>
     <string name="response_fail_reason" msgid="3401426967253202496">"ব্যৰ্থতাৰ কাৰণৰ আইডি"</string>
diff --git a/testapps/TestSatelliteApp/res/layout/activity_TestSatelliteWrapper.xml b/testapps/TestSatelliteApp/res/layout/activity_TestSatelliteWrapper.xml
index 7f2f026..43bb1c5 100644
--- a/testapps/TestSatelliteApp/res/layout/activity_TestSatelliteWrapper.xml
+++ b/testapps/TestSatelliteApp/res/layout/activity_TestSatelliteWrapper.xml
@@ -130,6 +130,18 @@
             android:layout_height="wrap_content"
             android:paddingRight="4dp"
             android:text="@string/getSatellitePlmnsForCarrier"/>
+        <Button
+            android:id="@+id/registerForCarrierRoamingNtnModeChanged"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingRight="4dp"
+            android:text="@string/registerForCarrierRoamingNtnModeChanged"/>
+        <Button
+            android:id="@+id/unregisterForCarrierRoamingNtnModeChanged"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingRight="4dp"
+            android:text="@string/unregisterForCarrierRoamingNtnModeChanged"/>
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
diff --git a/testapps/TestSatelliteApp/res/values/donottranslate_strings.xml b/testapps/TestSatelliteApp/res/values/donottranslate_strings.xml
index df2aaf7..e7fbb97 100644
--- a/testapps/TestSatelliteApp/res/values/donottranslate_strings.xml
+++ b/testapps/TestSatelliteApp/res/values/donottranslate_strings.xml
@@ -93,4 +93,7 @@
 
     <string name="Back">Back</string>
     <string name="ClearLog">Clear Log</string>
+
+    <string name="registerForCarrierRoamingNtnModeChanged">registerForCarrierRoamingNtnModeChanged</string>
+    <string name="unregisterForCarrierRoamingNtnModeChanged">unregisterForCarrierRoamingNtnModeChanged</string>
 </resources>
diff --git a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteWrapper.java b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteWrapper.java
index 27967f4..93a8131 100644
--- a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteWrapper.java
+++ b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteWrapper.java
@@ -23,6 +23,7 @@
 import android.os.OutcomeReceiver;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
+import android.telephony.satellite.wrapper.CarrierRoamingNtnModeListenerWrapper;
 import android.telephony.satellite.wrapper.NtnSignalStrengthCallbackWrapper;
 import android.telephony.satellite.wrapper.NtnSignalStrengthWrapper;
 import android.telephony.satellite.wrapper.SatelliteCapabilitiesCallbackWrapper;
@@ -53,6 +54,7 @@
     private final ExecutorService mExecutor = Executors.newSingleThreadExecutor();
     private SatelliteManagerWrapper mSatelliteManagerWrapper;
     private NtnSignalStrengthCallback mNtnSignalStrengthCallback = null;
+    private CarrierRoamingNtnModeListener mCarrierRoamingNtnModeListener = null;
     private SatelliteCapabilitiesCallbackWrapper mSatelliteCapabilitiesCallback;
     private SubscriptionManager mSubscriptionManager;
     private int mSubId;
@@ -99,6 +101,10 @@
                 .setOnClickListener(this::getAttachRestrictionReasonsForCarrier);
         findViewById(R.id.getSatellitePlmnsForCarrier)
                 .setOnClickListener(this::getSatellitePlmnsForCarrier);
+        findViewById(R.id.registerForCarrierRoamingNtnModeChanged)
+                .setOnClickListener(this::registerForCarrierRoamingNtnModeChanged);
+        findViewById(R.id.unregisterForCarrierRoamingNtnModeChanged)
+                .setOnClickListener(this::unregisterForCarrierRoamingNtnModeChanged);
         findViewById(R.id.Back).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
@@ -180,6 +186,39 @@
         }
     }
 
+    private void registerForCarrierRoamingNtnModeChanged(View view) {
+        addLogMessage("registerForCarrierRoamingNtnModeChanged");
+        logd("registerForCarrierRoamingNtnModeChanged()");
+        if (mCarrierRoamingNtnModeListener == null) {
+            logd("Creating new CarrierRoamingNtnModeListener instance.");
+            mCarrierRoamingNtnModeListener = new CarrierRoamingNtnModeListener();
+        }
+
+        try {
+            mSatelliteManagerWrapper.registerForCarrierRoamingNtnModeChanged(mSubId, mExecutor,
+                    mCarrierRoamingNtnModeListener);
+        } catch (Exception ex) {
+            String errorMessage = "registerForCarrierRoamingNtnModeChanged: " + ex.getMessage();
+            logd(errorMessage);
+            addLogMessage(errorMessage);
+            mCarrierRoamingNtnModeListener = null;
+        }
+    }
+
+    private void unregisterForCarrierRoamingNtnModeChanged(View view) {
+        addLogMessage("unregisterForCarrierRoamingNtnModeChanged");
+        logd("unregisterForCarrierRoamingNtnModeChanged()");
+        if (mCarrierRoamingNtnModeListener != null) {
+            mSatelliteManagerWrapper.unregisterForCarrierRoamingNtnModeChanged(mSubId,
+                    mCarrierRoamingNtnModeListener);
+            mCarrierRoamingNtnModeListener = null;
+            addLogMessage("mCarrierRoamingNtnModeListener was unregistered");
+        } else {
+            addLogMessage("mCarrierRoamingNtnModeListener is null, ignored.");
+        }
+    }
+
+
     private void registerForNtnSignalStrengthChanged(View view) {
         addLogMessage("registerForNtnSignalStrengthChanged");
         logd("registerForNtnSignalStrengthChanged()");
@@ -285,6 +324,16 @@
         }
     }
 
+    private class CarrierRoamingNtnModeListener implements CarrierRoamingNtnModeListenerWrapper {
+
+        @Override
+        public void onCarrierRoamingNtnModeChanged(boolean active) {
+            String message = "Received onCarrierRoamingNtnModeChanged active: " + active;
+            logd(message);
+            addLogMessage(message);
+        }
+    }
+
     private void isNonTerrestrialNetwork(View view) {
         boolean isNonTerrestrialNetwork = mSatelliteManagerWrapper.isNonTerrestrialNetwork(mSubId);
         addLogMessage("isNonTerrestrialNetwork=" + isNonTerrestrialNetwork);
diff --git a/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java b/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java
index f34b4a7..8eba53b 100644
--- a/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java
+++ b/tests/src/com/android/phone/satellite/accesscontrol/SatelliteAccessControllerTest.java
@@ -17,6 +17,7 @@
 package com.android.phone.satellite.accesscontrol;
 
 import static android.telephony.satellite.SatelliteManager.KEY_SATELLITE_COMMUNICATION_ALLOWED;
+import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_LOCATION_NOT_AVAILABLE;
 import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_MODEM_ERROR;
 import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_REQUEST_NOT_SUPPORTED;
 import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SUCCESS;
@@ -397,8 +398,10 @@
         assertEquals(SATELLITE_RESULT_SUCCESS, mQueriedSatelliteAllowedResultCode);
         assertTrue(mQueriedSatelliteAllowed);
 
-        // Timed out to wait for current location. No cached country codes.
+        // Timed out to wait for current location. No cached allowed state.
         clearAllInvocations();
+        mSatelliteAccessControllerUT.setIsSatelliteCommunicationAllowedForCurrentLocationCache(
+                "cache_clear_and_not_allowed");
         when(mMockCountryDetector.getCurrentNetworkCountryIso()).thenReturn(EMPTY_STRING_LIST);
         when(mMockTelecomManager.isInEmergencyCall()).thenReturn(false);
         when(mMockPhone.isInEcm()).thenReturn(true);
@@ -424,9 +427,7 @@
                 any(SatelliteOnDeviceAccessController.LocationToken.class));
         assertTrue(waitForRequestIsSatelliteAllowedForCurrentLocationResult(
                 mSatelliteAllowedSemaphore, 1));
-        assertEquals(SATELLITE_RESULT_SUCCESS,
-                mQueriedSatelliteAllowedResultCode);
-        assertTrue(mQueriedSatelliteAllowed);
+        assertEquals(SATELLITE_RESULT_LOCATION_NOT_AVAILABLE, mQueriedSatelliteAllowedResultCode);
 
         // Network country codes are not available. TelecomManager.isInEmergencyCall() returns
         // false. No phone is in ECM. Last known location is not fresh. Cached country codes should
@@ -453,7 +454,6 @@
                 mSatelliteAllowedSemaphore, 1));
         assertEquals(SATELLITE_RESULT_SUCCESS, mQueriedSatelliteAllowedResultCode);
         assertFalse(mQueriedSatelliteAllowed);
-
     }
 
     @Test
diff --git a/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java b/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java
index 22ab787..304cf2a 100644
--- a/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java
+++ b/tests/src/com/android/services/telephony/TelephonyConnectionServiceTest.java
@@ -3000,6 +3000,41 @@
     }
 
     @Test
+    public void testDomainSelectionSwitchPhones() throws Exception {
+        setupForCallTest();
+
+        doReturn(CompletableFuture.completedFuture(EMERGENCY_PERM_FAILURE))
+                .when(mEmergencyStateTracker)
+                .startEmergencyCall(eq(mPhone0), any(), eq(false));
+        doReturn(CompletableFuture.completedFuture(NOT_DISCONNECTED))
+                .when(mEmergencyStateTracker)
+                .startEmergencyCall(eq(mPhone1), any(), eq(false));
+
+        doReturn(mEmergencyCallDomainSelectionConnection).when(mDomainSelectionResolver)
+                .getDomainSelectionConnection(any(), anyInt(), eq(true));
+        doReturn(true).when(mTelephonyManagerProxy).isCurrentEmergencyNumber(anyString());
+
+        doReturn(true).when(mDomainSelectionResolver).isDomainSelectionSupported();
+
+        mTestConnectionService.onCreateOutgoingConnection(PHONE_ACCOUNT_HANDLE_1,
+                createConnectionRequest(PHONE_ACCOUNT_HANDLE_1,
+                        TEST_EMERGENCY_NUMBER, TELECOM_CALL_ID1));
+
+        ArgumentCaptor<DomainSelectionService.SelectionAttributes> attrCaptor =
+                ArgumentCaptor.forClass(
+                        DomainSelectionService.SelectionAttributes.class);
+
+        verify(mEmergencyStateTracker).startEmergencyCall(eq(mPhone0), any(), anyBoolean());
+        verify(mEmergencyStateTracker).startEmergencyCall(eq(mPhone1), any(), anyBoolean());
+        verify(mEmergencyCallDomainSelectionConnection).createEmergencyConnection(
+                attrCaptor.capture(), any());
+
+        DomainSelectionService.SelectionAttributes attr = attrCaptor.getValue();
+
+        assertEquals(mPhone1.getPhoneId(), attr.getSlotIndex());
+    }
+
+    @Test
     public void testOnSelectionTerminatedPerm() throws Exception {
         setupForCallTest();
 
diff --git a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
index d4ee933..fb3fef1 100644
--- a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
+++ b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
@@ -471,7 +471,8 @@
         doReturn(TelephonyManager.SIM_STATE_PIN_REQUIRED)
                 .when(mTelephonyManager).getSimState(anyInt());
         doReturn(true).when(mCsrdCtrl).isThereOtherSlot();
-        doReturn(new String[] {"jp"}).when(mResources).getStringArray(anyInt());
+        doReturn(new String[] {"jp"}).when(mResources).getStringArray(
+                eq(R.array.config_countries_require_sim_for_emergency));
 
         EmergencyRegistrationResult regResult = getEmergencyRegResult(
                 UNKNOWN, REGISTRATION_STATE_UNKNOWN, 0, false, false, 0, 0, "", "", "jp");
@@ -586,7 +587,8 @@
     @Test
     public void testDefaultCombinedImsRegisteredSelectPsThenExtendedServiceRequestFailIsoMatch()
             throws Exception {
-        doReturn(new String[] {"us"}).when(mResources).getStringArray(anyInt());
+        doReturn(new String[] {"us"}).when(mResources).getStringArray(
+                eq(R.array.config_countries_prefer_cs_preferred_scan_after_csfb_failure));
 
         createSelector(SLOT_0_SUB_ID);
         unsolBarringInfoChanged(false);
@@ -625,7 +627,8 @@
     @Test
     public void testDefaultCombinedImsRegisteredSelectPsThenExtendedServiceRequestFailIsoNotMatch()
             throws Exception {
-        doReturn(new String[] {"us"}).when(mResources).getStringArray(anyInt());
+        doReturn(new String[] {"us"}).when(mResources).getStringArray(
+                eq(R.array.config_countries_prefer_cs_preferred_scan_after_csfb_failure));
 
         createSelector(SLOT_0_SUB_ID);
         unsolBarringInfoChanged(false);
@@ -1788,7 +1791,8 @@
         doReturn(TelephonyManager.SIM_STATE_PIN_REQUIRED)
                 .when(mTelephonyManager).getSimState(anyInt());
         doReturn(true).when(mCsrdCtrl).isThereOtherSlot();
-        doReturn(new String[] {"jp"}).when(mResources).getStringArray(anyInt());
+        doReturn(new String[] {"jp"}).when(mResources).getStringArray(
+                eq(R.array.config_countries_require_sim_for_emergency));
 
         EmergencyRegistrationResult regResult = getEmergencyRegResult(EUTRAN,
                 REGISTRATION_STATE_UNKNOWN,
@@ -1812,7 +1816,8 @@
         doReturn(TelephonyManager.SIM_STATE_PIN_REQUIRED)
                 .when(mTelephonyManager).getSimState(anyInt());
         doReturn(true).when(mCsrdCtrl).isThereOtherSlot();
-        doReturn(new String[] {"jp"}).when(mResources).getStringArray(anyInt());
+        doReturn(new String[] {"jp"}).when(mResources).getStringArray(
+                eq(R.array.config_countries_require_sim_for_emergency));
 
         EmergencyRegistrationResult regResult = getEmergencyRegResult(UNKNOWN,
                 REGISTRATION_STATE_UNKNOWN,
@@ -1843,7 +1848,8 @@
         doReturn(TelephonyManager.SIM_STATE_PIN_REQUIRED)
                 .when(mTelephonyManager).getSimState(anyInt());
         doReturn(false).when(mCsrdCtrl).isThereOtherSlot();
-        doReturn(new String[] {"jp"}).when(mResources).getStringArray(anyInt());
+        doReturn(new String[] {"jp"}).when(mResources).getStringArray(
+                eq(R.array.config_countries_require_sim_for_emergency));
 
         EmergencyRegistrationResult regResult = getEmergencyRegResult(EUTRAN,
                 REGISTRATION_STATE_UNKNOWN,
@@ -1865,7 +1871,8 @@
         unsolBarringInfoChanged(false);
         doReturn(2).when(mTelephonyManager).getActiveModemCount();
         doReturn(true).when(mCsrdCtrl).isThereOtherSlotInService();
-        doReturn(new String[] {"in"}).when(mResources).getStringArray(anyInt());
+        doReturn(new String[] {"in"}).when(mResources).getStringArray(
+                eq(R.array.config_countries_prefer_normal_service_capable_subscription));
 
         EmergencyRegistrationResult regResult = getEmergencyRegResult(EUTRAN,
                 REGISTRATION_STATE_UNKNOWN,
@@ -1889,7 +1896,8 @@
 
         doReturn(2).when(mTelephonyManager).getActiveModemCount();
         doReturn(true).when(mCsrdCtrl).isThereOtherSlotInService();
-        doReturn(new String[] {"in"}).when(mResources).getStringArray(anyInt());
+        doReturn(new String[] {"in"}).when(mResources).getStringArray(
+                eq(R.array.config_countries_prefer_normal_service_capable_subscription));
 
         EmergencyRegistrationResult regResult = getEmergencyRegResult(UNKNOWN,
                 REGISTRATION_STATE_UNKNOWN,
diff --git a/tests/src/com/android/services/telephony/domainselection/NormalCallDomainSelectorTest.java b/tests/src/com/android/services/telephony/domainselection/NormalCallDomainSelectorTest.java
index 309418e..cf5f8e9 100644
--- a/tests/src/com/android/services/telephony/domainselection/NormalCallDomainSelectorTest.java
+++ b/tests/src/com/android/services/telephony/domainselection/NormalCallDomainSelectorTest.java
@@ -53,6 +53,8 @@
 
 import androidx.test.runner.AndroidJUnit4;
 
+import com.android.internal.telephony.CallFailCause;
+
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -446,7 +448,6 @@
                 .setEmergency(false)
                 .setVideoCall(false)
                 .setExitedFromAirplaneMode(false)
-                .setPsDisconnectCause(imsReasonInfoCsRetry)
                 .build();
 
         mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
@@ -590,6 +591,82 @@
                 mNormalCallDomainSelector.getSelectorState());
     }
 
+    @Test
+    public void testEmcCsFailureAndPsRedial() {
+        final TestTransportSelectorCallback transportSelectorCallback =
+                new TestTransportSelectorCallback(mNormalCallDomainSelector);
+
+        final ServiceState serviceState = new ServiceState();
+
+        // dial CS call
+        serviceState.setState(ServiceState.STATE_IN_SERVICE);
+        initialize(serviceState, false, false, false, false);
+        NetworkRegistrationInfo nwRegistrationInfo = new NetworkRegistrationInfo(
+                NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN,
+                NetworkRegistrationInfo.REGISTRATION_STATE_HOME,
+                AccessNetworkConstants.AccessNetworkType.UTRAN, 0, false,
+                null, null, null, false, 0, 0, 0);
+        serviceState.addNetworkRegistrationInfo(nwRegistrationInfo);
+        DomainSelectionService.SelectionAttributes attributes =
+                new DomainSelectionService.SelectionAttributes.Builder(
+                        SLOT_ID, SUB_ID_1, SELECTOR_TYPE_CALLING)
+                        .setAddress(TEST_URI)
+                        .setCallId(TEST_CALLID)
+                        .setEmergency(false)
+                        .setVideoCall(false)
+                        .setExitedFromAirplaneMode(false)
+                        .build();
+
+        mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
+
+        processAllMessages();
+        assertEquals(transportSelectorCallback.mSelectedDomain, NetworkRegistrationInfo.DOMAIN_CS);
+        assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+                mNormalCallDomainSelector.getSelectorState());
+
+        // EMC_REDIAL_ON_IMS
+        transportSelectorCallback.reset();
+        serviceState.setState(ServiceState.STATE_IN_SERVICE);
+        initialize(serviceState, true, false, true, false);
+        attributes = new DomainSelectionService.SelectionAttributes.Builder(
+                SLOT_ID, SUB_ID_1, SELECTOR_TYPE_CALLING)
+                .setAddress(TEST_URI)
+                .setCallId(TEST_CALLID)
+                .setEmergency(false)
+                .setVideoCall(false)
+                .setExitedFromAirplaneMode(false)
+                .setCsDisconnectCause(CallFailCause.EMC_REDIAL_ON_IMS)
+                .build();
+
+        mNormalCallDomainSelector.reselectDomain(attributes);
+
+        processAllMessages();
+        assertTrue(transportSelectorCallback.mWwanSelected);
+        assertEquals(NetworkRegistrationInfo.DOMAIN_PS, transportSelectorCallback.mSelectedDomain);
+        assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+                mNormalCallDomainSelector.getSelectorState());
+
+        // EMC_REDIAL_ON_VOWIFI
+        transportSelectorCallback.reset();
+        initialize(serviceState, true, true, true, false);
+        attributes = new DomainSelectionService.SelectionAttributes.Builder(
+                SLOT_ID, SUB_ID_1, SELECTOR_TYPE_CALLING)
+                .setAddress(TEST_URI)
+                .setCallId(TEST_CALLID)
+                .setEmergency(false)
+                .setVideoCall(false)
+                .setExitedFromAirplaneMode(false)
+                .setCsDisconnectCause(CallFailCause.EMC_REDIAL_ON_VOWIFI)
+                .build();
+
+        mNormalCallDomainSelector.reselectDomain(attributes);
+
+        processAllMessages();
+        assertTrue(transportSelectorCallback.mWlanSelected);
+        assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+                mNormalCallDomainSelector.getSelectorState());
+    }
+
     static class TestTransportSelectorCallback implements TransportSelectorCallback,
             WwanSelectorCallback {
         public boolean mCreated;
@@ -655,6 +732,7 @@
             Log.i(TAG, "onDomainSelected - called");
             mSelectedDomain = domain;
             mDomainSelected = true;
+            mWwanSelected = true;
 
             assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
                     mNormalCallDomainSelector.getSelectorState());