Merge "Add DynamicRoutingController" into 24D1-dev am: a9af6ad54c
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/Telephony/+/27416683
Change-Id: Ic05c606e22c277ae08187c91da523972a59d3aa1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/Android.bp b/Android.bp
index c717d86..78e6afb 100644
--- a/Android.bp
+++ b/Android.bp
@@ -45,10 +45,10 @@
"modules-utils-os",
"nist-sip",
"service-entitlement",
- "telephony_flags_core_java_lib",
- "android.permission.flags-aconfig-java",
+ "android.permission.flags-aconfig-java-export",
"satellite-s2storage-ro",
"s2-geometry-library-java",
+ "dropbox_flags_lib",
],
srcs: [
@@ -101,3 +101,4 @@
name: "TeleService-platform-compat-config",
src: ":TeleService",
}
+
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 1190d38..97f5858 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -119,6 +119,7 @@
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
<uses-permission android:name="android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
+ <uses-permission android:name="android.permission.READ_SYSTEM_GRAMMATICAL_GENDER" />
<!-- Needed to block messages. -->
<uses-permission android:name="android.permission.READ_BLOCKED_NUMBERS" />
<!-- Needed for emergency contact notification. -->
diff --git a/assets/CarrierRestrictionOperatorDetails.json b/assets/CarrierRestrictionOperatorDetails.json
index 8602d4e..a088f94 100644
--- a/assets/CarrierRestrictionOperatorDetails.json
+++ b/assets/CarrierRestrictionOperatorDetails.json
@@ -1,6 +1,10 @@
{
- "_comment": "Operator should register with its application package name, carrierId and all the corresponding SHAIDs",
- "_comment": "Example format :: << \"packageName\" : {\"carrierId\":<int>, \"callerSHA1Id\":[<SHAID1>, <SHAID2>]} >>",
- "com.vzw.hss.myverizon":{"carrierId":1839,"callerSHA1Id":["C58EE7871896786F8BF70EBDB137DE10074043E9","AE23A03436DF07B0CD70FE881CDA2EC1D21215D7B7B0CC68E67B67F5DF89526A"]},
- "com.google.android.apps.tycho":{"carrierId":1989,"callerSHA1Id":["B9CFCE1C47A6AC713442718F15EF55B00B3A6D1A6D48CB46249FA8EB51465350","4C36AF4A5BDAD97C1F3D8B283416D244496C2AC5EAFE8226079EF6F676FD1859"]}
+ "_comment": "Operator should register with its application package name, carrierId and all the corresponding SHA256IDs",
+ "_comment": "Example format :: << \"packageName\" : {\"carrierId\":[<int>], \"callerSHA256Ids\":[<SHAID1>, <SHAID2>]} >>",
+ "com.vzw.hss.myverizon":{"carrierIds":[1839],"callerSHA256Ids":["AE23A03436DF07B0CD70FE881CDA2EC1D21215D7B7B0CC68E67B67F5DF89526A"]},
+ "com.google.android.apps.tycho":{"carrierIds":[1989],"callerSHA256Ids":["B9CFCE1C47A6AC713442718F15EF55B00B3A6D1A6D48CB46249FA8EB51465350","4C36AF4A5BDAD97C1F3D8B283416D244496C2AC5EAFE8226079EF6F676FD1859"]},
+ "com.comcast.mobile.mxs":{"carrierIds": [2032,2532,2556],"callerSHA256Ids":["914C26403B57D2D482359FC235CC825AD00D52B0121C18EF2B2B9D4DDA4B8996"]},
+ "com.xfinity.digitalhome": {"carrierIds": [2032,2532,2556],"callerSHA256Ids":["31b4c17315c2269040d535f7b6a79cf4d11517c664d9de8f1ddf4f8a785aad47"]},
+ "com.xfinity.digitalhome.debug":{"carrierIds": [2032,2532,2556],"callerSHA256Ids":["c9133e8168f97573c8c567f46777dff74ade0c015ecf2c5e91be3e4e76ddcae2"]},
+ "com.xfinity.dh.xm.app": {"carrierIds": [2032,2532,2556],"callerSHA256Ids":["c9133e8168f97573c8c567f46777dff74ade0c015ecf2c5e91be3e4e76ddcae2"]}
}
\ No newline at end of file
diff --git a/proguard.flags b/proguard.flags
index 8eafd30..c572e1b 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -12,4 +12,6 @@
-keep class com.android.phone.callcomposer.** {
*;
}
+# Keep the FakeFeatureFlagsImpl
+-keep class com.android.internal.telephony.flags.FakeFeatureFlagsImpl { *; }
-verbose
\ No newline at end of file
diff --git a/res/layout/radio_info.xml b/res/layout/radio_info.xml
index 972996f..f18eda0 100644
--- a/res/layout/radio_info.xml
+++ b/res/layout/radio_info.xml
@@ -20,6 +20,7 @@
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ android:paddingTop="40dp"
android:layoutDirection="locale"
android:textDirection="locale">
@@ -185,6 +186,12 @@
<TextView android:id="@+id/network_slicing_config" style="@style/info_value" />
</LinearLayout>
+ <!-- eUICC info -->
+ <LinearLayout style="@style/RadioInfo_entry_layout" android:orientation="horizontal">
+ <TextView android:id="@+id/euicc_info_label" android:text="@string/radio_info_euicc_info" style="@style/info_label" />
+ <TextView android:id="@+id/euicc_info" style="@style/info_value" />
+ </LinearLayout>
+
<!-- Horizontal Rule -->
<View
android:layout_width="fill_parent"
@@ -204,6 +211,22 @@
android:layout_height="wrap_content"
/>
+ <!-- Mock signal strength -->
+ <LinearLayout style="@style/RadioInfo_entry_layout">
+ <TextView android:text="@string/radio_info_signal_strength_label" style="@style/info_label" />
+ <Spinner android:id="@+id/signalStrength"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ </LinearLayout>
+
+ <!-- Mock data network type -->
+ <LinearLayout style="@style/RadioInfo_entry_layout">
+ <TextView android:text="@string/radio_info_data_network_type_label" style="@style/info_label" />
+ <Spinner android:id="@+id/dataNetworkType"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ </LinearLayout>
+
<!-- Horizontal Rule -->
<View
android:layout_width="fill_parent"
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index ca03bfb..316a31c 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Verlaat noodterugbelmodus om \'n nienoodoproep te maak."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Nie geregistreer op netwerk nie."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobiele netwerk nie beskikbaar nie."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Selnetwerk is nie beskikbaar nie.\n\nVerbind met ’n draadlose netwerk om ’n oproep te maak.\n\n2G is gedeaktiveer op hierdie toestel, wat dalk jou konnektiwiteit kan beïnvloed. Gaan na Instellings en aktiveer Laat 2G toe om voort te gaan."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobiele netwerk is nie beskikbaar nie. Koppel aan \'n draadlose netwerk om \'n oproep te maak."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Selnetwerk is nie beskikbaar nie.\n\nVerbind met ’n draadlose netwerk om ’n oproep te maak.\n\n2G is gedeaktiveer op hierdie toestel, wat jou konnektiwiteit kan beïnvloed. Gaan na Instellings en aktiveer Laat 2G toe om voort te gaan."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Voer \'n geldige nommer in om \'n oproep te maak."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Oproep het misluk."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Oproep kan nie op die oomblik bygevoeg word nie. Jy kan probeer in verbinding tree deur \'n boodskap te stuur."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobieleradiokrag"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simuleer is nie beskikbaar nie (Slegs ontfoutingbou)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Satellietmodus van skyndiensverskaffer (net ontfoutingsbou)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Bekyk SIM-adresboek"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Kyk na vaste skakelnommers"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Bekyk skakeldiensnommers"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 6aa032e..afde6df 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"አስቸኳይ ያልሆነ ጥሪ ለማድረግ ከአስቸኳይ መልሰህ ደውል ሁነታ ይውጡ።"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"በአውታረ መረቡ ላይ አልተመዘገበም።"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"የተንቀሳቃሽ አደራጅ የለም።"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"የተንቀሳቃሽ ስልክ አውታረ መረብ አይገኝም።\n\nጥሪ ለማድረግ ከሽቦ አልባ አውታር ጋር ያገናኙ።\n\n2G በዚህ መሣሪያ ላይ ተሰናክሏል፣ ይህም ግንኙነትዎ ላይ ተጽዕኖ እያሳደረ ይሆናል። ወደ ቅንብሮች ይሂዱ እና ለመቀጠል 2G ፍቀድ የሚለውን ያንቁ።"</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"የተንቀሳቃሽ ስልክ አውታረ መረብ አይገኝም። ጥሪ ለማድረግ ከሽቦ አልባ አውታረ መረብ ጋር ያገናኙ።"</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"የተንቀሳቃሽ ስልክ አውታረ መረብ አይገኝም።\n\nጥሪ ለማድረግ ከሽቦ አልባ አውታር ጋር ያገናኙ።\n\n2G እዚህ መሣሪያ ላይ ተሰናክሏል፣ ይህም ግንኙነትዎ ላይ ተጽዕኖ እያደረገ ይሆናል። ወደ ቅንብሮች ይሂዱ እና ለመቀጠል 2G ፍቀድ የሚለውን ያንቁ።"</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"አንድ ጥሪ ለማድረግ የሚሰራ ቁጥር ያስገቡ።"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"ጥሪ አልተሳካም።"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"ጥሪ አሁን መታከል አይችልም። መልዕክት በመላክ ለማግኘት መሞከር ይችላሉ።"</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"የሞባይል ሬዲዮ ኃይል"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"ከአገልግሎት ውጭን አስመስል (የስህተት ማረሚያ ግንብ ብቻ)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mock Carrier Satellite Mode (የስህተት ማረሚያ ግንባታ ብቻ)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"የሲም አድራሻ ደብተር አሳይ"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"በቋሚነት የሚደወልባቸው ቁጥሮች"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"የአገልግሎት መደወያ ቁጥሮችን ተመልከት"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 13c1822..687157c 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"ينبغي الخروج من وضع معاودة الاتصال بالطوارئ لإجراء مكالمة غير طارئة."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"غير مسجل على الشبكة."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"شبكة الجوال غير متاحة."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"شبكة الجوّال غير متوفّرة.\n\nيُرجى الاتصال بشبكة لاسلكية لإجراء مكالمة.\n\nتم إيقاف شبكة الجيل الثاني على هذا الجهاز، ما قد يؤثر في إمكانية الاتصال بالإنترنت. انتقِل إلى \"الإعدادات\" وفعِّل خيار \"السماح بشبكة الجيل الثاني\" للمتابعة."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"شبكة الجوّال ليست متوفرة. اتصل بشبكة لاسلكية لإجراء مكالمة."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"شبكة الجوّال غير متوفّرة.\n\nيُرجى الاتصال بشبكة لاسلكية لإجراء مكالمة.\n\nتم إيقاف شبكة الجيل الثاني على هذا الجهاز، ما قد يؤثر في إمكانية الاتصال بالإنترنت. انتقِل إلى \"الإعدادات\" وفعِّل خيار \"السماح بشبكة الجيل الثاني\" للمتابعة."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"لإجراء مكالمة، أدخل رقمًا صالحًا."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"تعذّرت المكالمة."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"يتعذر إجراء المكالمة في الوقت الحالي. يمكنك محاولة التواصل من خلال إرسال رسالة."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"طاقة اللاسلكي للجوّال"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"محاكاة الخطأ \"خارج الخدمة\" (الإصدار المخصص لتصحيح الأخطاء فقط)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"وضع القمر الصناعي التجريبي لمشغّل شبكة الجوّال (إصدار مخصّص لتصحيح الأخطاء فقط)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"عرض دفتر عناوين SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"عرض أرقام الطلب الثابت"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"عرض أرقام طلب الخدمة"</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 11105cd..0cd2946 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"সাধাৰণ কল কৰিবৰ কাৰণে জৰুৰীকালীন কলবেক ম\'ডৰ পৰা বাহিৰ হওক।"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"নেটৱৰ্কত পঞ্জীকৃত নহয়।"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"ম’বাইল নেটৱৰ্ক উপলব্ধ নহয়।"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"ম’বাইল নেটৱৰ্ক উপলব্ধ নহয়।\n\nকল কৰিবলৈ এটা ৱায়াৰলেছ নেটৱৰ্কৰ সৈতে সংযোগ কৰক।\n\nএই ডিভাইচটোত 2G অক্ষম কৰা হৈছে, যিটোৱে আপোনাৰ সংযোগত প্ৰভাৱ পেলাব পাৰে। অব্যাহত ৰাখিবলৈ ছেটিঙলৈ গৈ 2Gক অনুমতি দিয়ক সক্ষম কৰক।"</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"ম’বাইল নেটৱৰ্ক উপলব্ধ নহয়। কল কৰিবৰ কাৰণে কোনো বেতাঁৰ নেটৱৰ্কৰ সৈতে সংযোগ কৰক।"</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"ম’বাইল নেটৱৰ্ক উপলব্ধ নহয়।\n\nকল কৰিবলৈ এটা বেতাঁৰ নেটৱৰ্কৰ সৈতে সংযোগ কৰক।\n\nএই ডিভাইচটোত 2G অক্ষম কৰা হৈছে, যিটোৱে আপোনাৰ সংযোগত প্ৰভাৱ পেলাব পাৰে। অব্যাহত ৰাখিবলৈ ছেটিঙলৈ গৈ 2Gক অনুমতি দিয়ক সক্ষম কৰক।"</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"কল কৰিবৰ কাৰণে এটা মান্য নম্বৰ দিয়ক।"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"কল বিফল হৈছে"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"এই মুহূৰ্তত কল যোগ কৰিব নোৱাৰি। আপুনি এটা বাৰ্তা পঠাই যোগাযোগ কৰিবলৈ চেষ্টা কৰি চাব পাৰে।"</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"ম’বাইলৰ ৰেডিঅ’ পাৱাৰ"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"সেৱাত নাই ছিমুলে’ট কৰক (কেৱল ডিবাগ বিল্ড)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"নকল বাহক উপগ্ৰহ ম’ড (কেৱল ডিবাগ বিল্ড)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"ছিম ঠিকনা সূচী চাওক"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"ফিক্সড্ ডায়েলিং নম্বৰসমূহ চাওক"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"সেৱা ডায়েলিং নম্বৰসমূহ চাওক"</string>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index f27d4e2..1c3a4d8 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Qeyri-fövqəladə zəng etmək üçün fövqəladə zəng rejimindən çıxın."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Şəbəkədə qeydə alınmayıb."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobil şəbəkə əlçatımlı deyil."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobil şəbəkə əlçatan deyil.\n\nZəng etmək üçün simsiz şəbəkəyə qoşulun.\n\nBu cihazda 2G deaktiv edilib, bu da bağlantınıza təsir edə bilər. Davam etmək üçün Ayarlara keçib \"2G-yə icazə verin\" seçimini aktiv edin."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobil şəbəkə əlçatmazdır. Zəng etmək üçün Wi-Fi şəbəkəsinə qoşulun."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobil şəbəkə əlçatan deyil.\n\nZəng etmək üçün simsiz şəbəkəyə qoşulun.\n\nBu cihazda 2G deaktiv edilib, bu da bağlantınıza təsir edə bilər. Davam etmək üçün Ayarlara keçib \"2G-yə icazə verin\" seçimini aktiv edin."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Zəngi yerləşdirmək üçün düzgün nömrə daxil edin."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Zəng alınmadı."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Hazırda zəngi əlavə etmək mümkün deyil. Mesaj göndərərək təkrar əlaqə saxlaya bilərsiniz."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobil Radio Enerjisi"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"\"Xidmətdənkənar\" Simulyasiyası (yalnız Debaq Versiyası)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Sınaq Daşıyıcı Peyk Rejimi (yalnız sazlama versiyası)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM Ünvan Kitabçasına Baxın"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Sabit Yığım Nömrələrinə Baxın"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Xidmət Yığım Nömrələrinə Baxın"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 40050b7..a8aa252 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Izađite iz režima hitnog povratnog poziva da biste uputili poziv koji nije hitan."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Nije registrovano na mreži."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilna mreža nije dostupna."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobilna mreža nije dostupna.\n\nPovežite se na bežičnu mrežu da biste uputili poziv.\n\n2G je onemogućen na ovom uređaju, što može da utiče na povezivanje. Idite u Podešavanja i omogućite opciju Dozvoli 2G da biste nastavili."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobilna mreža nije dostupna. Povežite se na bežičnu da biste uputili poziv."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobilna mreža nije dostupna.\n\nPovežite se na bežičnu mrežu da biste uputili poziv.\n\n2G je onemogućen na ovom uređaju, što može da utiče na povezivanje. Idite u Podešavanja i omogućite opciju Dozvoli 2G da biste nastavili."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Da biste uputili poziv, unesite važeći broj."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Poziv nije uspeo."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Dodavanje poziva trenutno nije moguće. Možete da pokušate da ostvarite kontakt pomoću poruke."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Napajanje za radio na mobilnim uređajima"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulacija ne funkcioniše (samo verzija sa otklonjenim greškama)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Lažni režim mobilnog operatera za slanje preko satelita (samo verzija za otklanjanje grešaka)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Prikaži adresar SIM-a"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Prikaži brojeve za fiksno biranje"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Prikaži brojeve za servisno biranje"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 5269786..b8a085c 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Каб зрабіць звычайны выклік, выйдзіце з рэжыму экстранных зваротных выклікаў."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Не зарэгістраваны ў сетцы."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Мабільная сетка недаступная."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Мабільная сетка недаступная.\n\nКаб зрабіць выклік, падключыцеся да бесправадной сеткі.\n\nНа гэтай прыладзе адключана перадача даных у рэжыме 2G, што можа ўплываць на магчымасць падключэння. Каб працягнуць, перайдзіце ў налады і ўключыце параметр \"Дазволіць 2G\"."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Мабільная сетка недаступная. Падлучыцеся да бесправадной сеткі, каб зрабіць выклік."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Мабільная сетка недаступная.\n\nКаб зрабіць выклік, падключыцеся да бесправадной сеткі.\n\nНа гэтай прыладзе адключана перадача даных у рэжыме 2G, што можа ўплываць на магчымасць падключэння. Каб працягнуць, перайдзіце ў налады і ўключыце параметр \"Дазволіць 2G\"."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Каб зрабіць выклік, увядзіце сапраўдны нумар."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Збой выклiку."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Немагчыма зараз дадаць выклік. Можна выйсці на сувязь, адправіўшы паведамленне."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Магутнасць радыёсігналу"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Мадэляванне знаходжання па-за сеткай (толькі ў зборцы для адладкі)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Імітацыя рэжыму спадарожніка з SIM-картай ад аператара (толькі ў зборцы для адладкі)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Праглядзець адрасную кнігу на SIM-карце"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Прагляд фіксаваных нумароў"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Паглядзець сэрвісныя нумары"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index e2fb21d..3fa1876 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Излезте от режима на обратно обаждане при спешност, за да можете да извършвате обаждания, които не са спешни."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Няма регистрация в мрежата."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Няма мобилна мрежа."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Не е налице мобилна мрежа.\n\nСвържете се с безжична мрежа, за да извършите обаждане.\n\nУслугата 2G е деактивирана на това устройство, което може да влияе на свързаността ви. За да продължите, отворете настройките и активирайте „Разрешаване на 2G“."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Няма мобилна мрежа. Свържете се с безжична, за да се обадите."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Не е налице мобилна мрежа.\n\nСвържете се с безжична мрежа, за да извършите обаждане.\n\nУслугата 2G е деактивирана на това устройство, което може да влияе на свързаността ви. За да продължите, отворете настройките и активирайте „Разрешаване на 2G“."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"За да извършите обаждане, въведете валиден номер."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Обаждането не бе успешно."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Обаждането не може да бъде добавено сега. Може да се опитате да се свържете чрез изпращане на съобщение."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Мощност на мобилното радио"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Симулиране на липса на услуга (само в компилацията за отстраняване на грешки)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Симулиран сателитен режим от оператора (само в компилацията за отстраняване на грешки)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Преглед на указателя на SIM картата"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Преглед на номера за фиксирано набиране"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Преглед на номера за набиране на услуги"</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 8a194b2..a44223d 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"একটি সাধারণ কল করতে জরুরি কলব্যাক মোডের বাইরে আসুন৷"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"নেটওয়ার্কে নিবন্ধিত নয়৷"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"মোবাইল নেটওয়ার্ক উপলব্ধ নয়৷"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"মোবাইল নেটওয়ার্ক উপলভ্য নেই।\n\nকল করতে হলে ওয়্যারলেস নেটওয়ার্কের সাথে কানেক্ট করুন।\n\nএই ডিভাইসে 2G পরিষেবা বন্ধ করে দেওয়া হয়েছে, যার ফলে হয়ত আপনার কানেক্টিভিটি প্রভাবিত হচ্ছে। সেটিংসে যান এবং চালিয়ে যেতে \'2G পরিষেবার অনুমতি দিন\' বিকল্পটি চালু করুন।"</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"মোবাইল নেটওয়ার্ক উপলব্ধ নেই৷ একটি কল করতে কোনো ওয়্যারলেস নেটওয়ার্কে সংযোগ করুন৷"</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"মোবাইল নেটওয়ার্ক উপলভ্য নেই।\n\nকল করতে হলে ওয়্যারলেস নেটওয়ার্কের সাথে কানেক্ট করুন।\n\nএই ডিভাইসে 2G পরিষেবা বন্ধ করে দেওয়া হয়েছে, যার ফলে হয়ত আপনার কানেক্টিভিটি প্রভাবিত হচ্ছে। সেটিংসে যান এবং চালিয়ে যেতে \'2G পরিষেবার অনুমতি দিন\' বিকল্পটি চালু করুন।"</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"কোনো কল স্থাপন করতে, একটি বৈধ নম্বর লিখুন৷"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"কল ব্যর্থ হয়েছে৷"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"এই সময়ে কলটি যোগ করা যাবে না। আপনি একটি মেসেজ পাঠিয়ে যোগাযোগ করার চেষ্টা করতে পারেন।"</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"মোবাইল রেডিওর গুণমান"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"আউট-অফ-সার্ভিস সিমুলেট করা (শুধুমাত্র ডিবাগ বিল্ডের জন্য)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"নকল পরিষেবা প্রদানকারী উপগ্রহ মোড (শুধুমাত্র ডিবাগ বিল্ড)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"সিম অ্যাড্রেস বুক দেখুন"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"স্থায়ী ডায়াল নম্বরগুলি দেখুন"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"সার্ভিস ডায়াল নম্বরগুলি দেখুন"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index c577c73..d61c992 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Izađite iz načina rada za hitni povratni poziv da uputite poziv koji nije hitan."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Nije registrirano na mreži."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilna mreža nije dostupna."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobilna mreža nije dostupna.\n\nPovežite se s bežičnom mrežom da uputite poziv.\n\n2G je onemogućen na uređaju, što može uticati na povezivost. Da nastavite, idite u Postavke i omogućite Dozvoli 2G."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobilna mreža nije dostupna. Povežite se na bežičnu mrežu da pozovete."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobilna mreža nije dostupna.\n\nPovežite se s bežičnom mrežom da uputite poziv.\n\n2G je onemogućen na uređaju, što može uticati na povezivost. Da nastavite, idite u Postavke i omogućite Dozvoli 2G."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Da uputite poziv, upišite važeći broj."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Poziv nije uspio."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Trenutno nije moguće dodati poziv. Možete pokušati poslati poruku."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Snaga mobilnog radija"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulacija ne radi (samo verzija za otklanjanje grešaka)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Lažni način rada operatera za slanje putem satelita (samo verzija za otklanjanje grešaka)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Prikaži SIM adresar"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Prikaži brojeve fiksnog biranja"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Prikaži brojeve biranja usluga"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index e3bf00c..10b40e9 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Surt del mode de devolució de trucada d\'emergència per fer un altre tipus de trucada."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"No registrat a la xarxa."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"La xarxa mòbil no està disponible."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"La xarxa mòbil no està disponible.\n\nConnecta\'t a una xarxa sense fil per fer una trucada.\n\nEl 2G està desactivat en aquest dispositiu, cosa que pot afectar la connectivitat. Ves a Configuració i activa Permet 2G per continuar."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"La xarxa mòbil no està disponible. Per fer una trucada, connecta\'t a una xarxa sense fil."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"La xarxa mòbil no està disponible.\n\nConnecta\'t a una xarxa sense fil per fer una trucada.\n\nEl 2G està desactivat en aquest dispositiu, cosa que pot afectar la connectivitat. Ves a Configuració i activa Permet 2G per continuar."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Per realitzar una trucada, introdueix un número vàlid."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"No s\'ha pogut fer la trucada."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"En aquest moment no es pot afegir la trucada. Prova d\'enviar un missatge."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Potència del senyal mòbil"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simula que està fora de servei (només per a la compilació de depuració)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mode de satèl·lit d\'un operador de telefonia mòbil simulat (només per a la compilació de depuració)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Mostra la llibreta d\'adreces de la SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Mostra els números de marcatge fix"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Mostra els números de marcatge de serveis"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 4caad61..bb5a314 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Chcete-li uskutečnit běžný hovor, opusťte režim tísňového volání."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Přihlášení k síti nebylo úspěšné."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilní síť je nedostupná."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobilní síť není k dispozici.\n\nAbyste mohli uskutečnit hovor, připojte se k bezdrátové síti.\n\nV tomto zařízení není aktivní připojení 2G, což může ovlivňovat možnosti připojení. Přejděte do nastavení a zapněte volbu Povolit 2G."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobilní síť není k dispozici. Pokud chcete provést hovor, připojte se k bezdrátové síti."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobilní síť není k dispozici.\n\nAbyste mohli uskutečnit hovor, připojte se k bezdrátové síti.\n\nV tomto zařízení není aktivní připojení 2G, což může ovlivňovat možnosti připojení. Přejděte do nastavení a zapněte volbu Povolit 2G."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Chcete-li uskutečnit hovor, zadejte platné telefonní číslo."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Volání se nezdařilo."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Hovor momentálně není možné přidat. Můžete místo toho zkusit poslat zprávu."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Výkon mobilního přijímače"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulovat provoz mimo službu (pouze ladicí sestavení)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Simulace satelitního režimu operátora (pouze ladicí sestavení)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Zobrazit adresář SIM karty"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Zobrazit povolená telefonní čísla"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Zobrazit čísla volání služeb"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 43410cb..6852e5c 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Afslut nødtilbagekaldstilstand for at foretage et almindeligt opkald."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Ikke registreret på netværk."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilnetværket er ikke tilgængeligt."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobilnetværk er ikke tilgængeligt.\n\nOpret forbindelse til et trådløst netværk for at foretage et opkald.\n\n2G er deaktiveret på denne enhed, hvilket kan påvirke dine forbindelsesmuligheder. Gå til Indstillinger, og aktivér Tillad 2G for at fortsætte."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobilnetværk er ikke tilgængeligt. Opret forbindelse til et trådløst netværk for at foretage et opkald."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobilnetværk er ikke tilgængeligt.\n\nOpret forbindelse til et trådløst netværk for at foretage et opkald.\n\n2G er deaktiveret på denne enhed, hvilket kan påvirke dine forbindelsesmuligheder. Gå til Indstillinger, og aktivér Tillad 2G for at fortsætte."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Angiv et gyldigt nummer for at foretage et opkald."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Opkald mislykkedes."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Opkaldet kan ikke tilføjes lige nu. Du kan prøve at sende en besked i stedet."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobilsendestyrke"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulering af enhed, der er ude af drift (kun i fejlretningsbuild)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Test af satellittilstand via mobilselskab (kun fejlretningsbuild)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Vis adressebog på SIM-kortet"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Vis numre til begrænset opkald"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Vis tjenestens faste opkaldsnumre"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 6c7d41a..a1c9708 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Beende den Notfallrückrufmodus, um einen Anruf zu tätigen, bei dem es sich nicht um einen Notfall handelt."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Nicht in Netzwerk registriert."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilfunknetz ist nicht verfügbar."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobilfunknetz nicht verfügbar.\n\nStelle eine Verbindung zu einem drahtlosen Netzwerk her, um zu telefonieren.\n\n2G ist auf diesem Gerät deaktiviert. Dies kann deine Verbindung beeinträchtigen. Gehe zu den Einstellungen und aktiviere „2G zulassen“, um fortzufahren."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Es ist kein Mobilfunknetz verfügbar. Stelle zum Telefonieren eine WLAN-Verbindung her."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobilfunknetz nicht verfügbar.\n\nStelle eine Verbindung zu einem drahtlosen Netzwerk her, um zu telefonieren.\n\n2G ist auf diesem Gerät deaktiviert. Dies kann deine Verbindung beeinträchtigen. Gehe zu den Einstellungen und aktiviere „2G zulassen“, um fortzufahren."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Gib eine gültige Nummer ein."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Fehler beim Anruf."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Der Anruf kann momentan nicht hinzugefügt werden. Versuche stattdessen, eine Nachricht zu senden."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobilfunkstärke"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"„Außer Betrieb“ simulieren (nur Debug-Build)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Vom Mobilfunkanbieter simulierter Satellitenmodus (nur Debug-Build)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM-Adressbuch anzeigen"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Rufnummernbeschränkung ansehen"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Servicerufnummern anzeigen"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 0f49f2f..de04199 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Πραγματοποιήστε έξοδο από τη λειτουργία επιστροφής κλήσης έκτακτης ανάγκης για να πραγματοποιήσετε μια κλήση μη έκτακτης ανάγκης."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Δεν έχετε εγγραφεί στο δίκτυο."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Το δίκτυο κινητής τηλεφωνίας δεν είναι διαθέσιμο."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Το δίκτυο κινητής τηλεφωνίας δεν είναι διαθέσιμο.\n\nΣυνδεθείτε σε ένα ασύρματο δίκτυο για να πραγματοποιήσετε μια κλήση.\n\nΤο 2G είναι απενεργοποιημένο σε αυτή τη συσκευή και αυτό ενδέχεται να επηρεάζει τη σύνδεσή σας. Μεταβείτε στις Ρυθμίσεις και ενεργοποιήστε το στοιχείο Να επιτρέπεται το 2G για να συνεχίσετε."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Το δίκτυο κινητής τηλεφωνίας δεν είναι διαθέσιμο. Συνδεθείτε σε ένα ασύρματο δίκτυο για να πραγματοποιήσετε μια κλήση."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Το δίκτυο κινητής τηλεφωνίας δεν είναι διαθέσιμο.\n\nΣυνδεθείτε σε ένα ασύρματο δίκτυο για να πραγματοποιήσετε μια κλήση.\n\nΤο δίκτυο 2G είναι απενεργοποιημένο σε αυτή τη συσκευή και αυτό ενδέχεται να επηρεάζει τη σύνδεσή σας. Μεταβείτε στις Ρυθμίσεις και ενεργοποιήστε το στοιχείο Να επιτρέπεται το 2G για να συνεχίσετε."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Για να πραγματοποιήσετε κλήση, εισαγάγετε έναν έγκυρο αριθμό."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Η κλήση απέτυχε."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Δεν είναι δυνατή η προσθήκη της κλήσης αυτήν τη στιγμή. Δοκιμάστε να επικοινωνήσετε με αποστολή μηνύματος."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Ισχύς πομπού κινητής τηλεφωνίας"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Η προσομοίωση δεν λειτουργεί (μόνο έκδοση εντοπισμού σφαλμάτων)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Εικονική λειτουργία δορυφόρου εταιρείας κινητής τηλεφωνίας (μόνο έκδοση εντοπισμού σφαλμάτων)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Προβολή βιβλίου διευθύνσεων κάρτας SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Προβολή προκαθορισμένων αριθμών κλήσης"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Προβολή αριθμών κλήσης υπηρεσίας"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 02bf46d..7853652 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Exit emergency callback mode to make a non-emergency call."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Not registered on network."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobile network not available."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobile network not available.\n\nConnect to a wireless network to make a call.\n\n2G is disabled on this device, which may be impacting your connectivity. Go to Settings and enable Allow 2G to continue."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobile network isn\'t available. Connect to a wireless network to make a call."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobile network is not available.\n\nConnect to a wireless network to make a call.\n\n2 G is disabled on this device, which may be impacting your connectivity. Go to Settings and enable Allow 2 G to continue."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"To place a call, enter a valid number."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Call failed."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Call cannot be added at this time. You can try to get in touch by sending a message."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobile radio power"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulate out of service (debug build only)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mock operator satellite mode (debug build only)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"View SIM address book"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"View fixed dialling numbers"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"View service dialling numbers"</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 7daee5a..b4abe94 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Exit emergency callback mode to make a non-emergency call."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Not registered on network."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobile network not available."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobile network not available.\n\nConnect to a wireless network to make a call.\n\n2G is disabled on this device, which may be impacting your connectivity. Go to Settings and enable Allow 2G to continue."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobile network is not available. Connect to a wireless network to make a call."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobile network is not available.\n\nConnect to a wireless network to make a call.\n\n2G is disabled on this device, which may be impacting your connectivity. Go to Settings and enable Allow 2G to continue."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"To place a call, enter a valid number."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Call failed."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Call cannot be added at this time. You can try to reach out by sending a message."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobile Radio Power"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulate Out of Service (Debug Build only)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mock Carrier Satellite Mode (Debug Build only)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"View SIM Address Book"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"View Fixed Dialing Numbers"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"View Service Dialing Numbers"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 02bf46d..7853652 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Exit emergency callback mode to make a non-emergency call."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Not registered on network."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobile network not available."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobile network not available.\n\nConnect to a wireless network to make a call.\n\n2G is disabled on this device, which may be impacting your connectivity. Go to Settings and enable Allow 2G to continue."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobile network isn\'t available. Connect to a wireless network to make a call."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobile network is not available.\n\nConnect to a wireless network to make a call.\n\n2 G is disabled on this device, which may be impacting your connectivity. Go to Settings and enable Allow 2 G to continue."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"To place a call, enter a valid number."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Call failed."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Call cannot be added at this time. You can try to get in touch by sending a message."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobile radio power"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulate out of service (debug build only)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mock operator satellite mode (debug build only)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"View SIM address book"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"View fixed dialling numbers"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"View service dialling numbers"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 02bf46d..7853652 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Exit emergency callback mode to make a non-emergency call."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Not registered on network."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobile network not available."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobile network not available.\n\nConnect to a wireless network to make a call.\n\n2G is disabled on this device, which may be impacting your connectivity. Go to Settings and enable Allow 2G to continue."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobile network isn\'t available. Connect to a wireless network to make a call."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobile network is not available.\n\nConnect to a wireless network to make a call.\n\n2 G is disabled on this device, which may be impacting your connectivity. Go to Settings and enable Allow 2 G to continue."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"To place a call, enter a valid number."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Call failed."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Call cannot be added at this time. You can try to get in touch by sending a message."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobile radio power"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulate out of service (debug build only)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mock operator satellite mode (debug build only)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"View SIM address book"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"View fixed dialling numbers"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"View service dialling numbers"</string>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index e27767b..ba6b4c4 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Exit emergency callback mode to make a non-emergency call."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Not registered on network."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobile network not available."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobile network not available.\n\nConnect to a wireless network to make a call.\n\n2G is disabled on this device, which may be impacting your connectivity. Go to Settings and enable Allow 2G to continue."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobile network is not available. Connect to a wireless network to make a call."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobile network is not available.\n\nConnect to a wireless network to make a call.\n\n2G is disabled on this device, which may be impacting your connectivity. Go to Settings and enable Allow 2G to continue."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"To place a call, enter a valid number."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Call failed."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Call cannot be added at this time. You can try to reach out by sending a message."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobile Radio Power"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulate Out of Service (Debug Build only)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mock Carrier Satellite Mode (Debug Build only)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"View SIM Address Book"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"View Fixed Dialing Numbers"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"View Service Dialing Numbers"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 78a1eba..aadd7ac 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Para realizar una llamada que no sea de emergencia, sal del modo de devolución de llamada de emergencia."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"No registrado en la red."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"La red móvil no está disponible."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"La red móvil no está disponible.\n\nConéctate a una red inalámbrica para realizar una llamada.\n\nLa conexión 2G está inhabilitada en este dispositivo, lo que podría afectar la conectividad. Ve a Configuración y habilita Permitir 2G para continuar."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"La red móvil no está disponible. Conéctate a una red inalámbrica para realizar una llamada."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"La red móvil no está disponible.\n\nConéctate a una red inalámbrica para realizar una llamada.\n\nLa conexión 2G está inhabilitada en este dispositivo, lo que podría afectar la conectividad. Ve a Configuración y habilita Permitir 2G para continuar."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Para realizar una llamada, ingresa un número válido."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Error en la llamada"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"No se puede agregar la llamada en este momento. Para comunicarte, puedes enviar un mensaje."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Potencia de la señal móvil"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simular fuera de servicio (solo para la compilación de depuración)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Modo Satélite del operador de prueba (solo en la compilación de depuración)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Ver libreta de direcciones de SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Ver números de marcación fija"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Ver números de marcación de servicio"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index bbc8096..af56b69 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Sal del modo de devolución de llamada de emergencia para hacer otro tipo de llamada."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"No se ha podido conectar a la red"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"La red móvil no está disponible."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"La red móvil no está disponible.\n\nConéctate a una red inalámbrica para hacer una llamada.\n\nEl 2G está inhabilitado en este dispositivo, lo que puede afectar a tu conectividad. Ve a Ajustes y habilita Permitir 2G para continuar."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"La red móvil no está disponible. Conéctate a una para llamar."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"La red móvil no está disponible.\n\nConéctate a una red inalámbrica para hacer una llamada.\n\nEl 2G está inhabilitado en este dispositivo, lo que puede afectar a tu conectividad. Ve a Ajustes y habilita Permitir 2G para continuar."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Para realizar una llamada, introduce un número válido."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"No se ha podido llamar."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"No se puede realizar la llamada en estos momentos. Intenta ponerte en contacto mediante un mensaje."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Potencia de la señal móvil"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simular fuera del servicio (solo versión de depuración)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Simulación del modo Satélite de operador (solo versión de depuración)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Ver libreta de direcciones de tarjeta SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Ver números de marcación fija"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Ver números de marcación de servicio"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 421a5ec..159a16d 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Muude kui hädaabikõne tegemiseks väljuge hädaabikõnede režiimist."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Ei ole võrku registreeritud."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobiilsidevõrk pole saadaval."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobiilsidevõrk pole saadaval.\n\nHelistamiseks looge ühendus juhtmeta võrguga.\n\n2G on selles seadmes keelatud, mis võib teie ühenduvust mõjutada. Jätkamiseks avage Seaded ja lubage lüliti Luba 2G."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobiilsidevõrk pole saadaval. Helistamiseks looge ühendus traadita võrguga."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobiilsidevõrk pole saadaval.\n\nHelistamiseks looge ühendus juhtmeta võrguga.\n\n2G on selles seadmes keelatud, mis võib teie ühenduvust mõjutada. Jätkamiseks avage Seaded ja lubage lüliti Luba 2G."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Helistamiseks sisestage kehtiv number."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Kõne ebaõnnestus."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Kõnet ei saa praegu lisada. Proovige helistamise asemel sõnum saata."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobiiliraadio toide"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simuleerimine ei tööta (ainult silumisjärgus)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Simuleeritud operaatori satelliidirežiim (ainult silumisjärgus)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Kuva SIM-i aadressiraamat"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Kuva fikseeritud valimisnumbrid"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Kuva teenuse valimise numbrid"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 4b8d6a0..8764c47 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Larrialdikoak ez diren deiak egiteko, irten larrialdi-zerbitzuen deiak jasotzeko modutik."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Ez dago sarean erregistratuta."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Sare mugikorra ez dago erabilgarri."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Sare mugikorra ez dago erabilgarri.\n\nDeia egiteko, konektatu hari gabeko sare batera.\n\n2G desgaituta dago gailuan, eta baliteke horrek konexioan eragina izatea. Aurrera egiteko, joan ezarpenetara eta eman 2G erabiltzeko baimena."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Sare mugikorra ez dago erabilgarri. Deia egiteko, konektatu haririk gabeko sare batera."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Sare mugikorra ez dago erabilgarri.\n\nDeia egiteko, konektatu hari gabeko sare batera.\n\n2G desgaituta dago gailuan, eta baliteke horrek konexioan eragina izatea. Aurrera egiteko, joan ezarpenetara eta eman 2G erabiltzeko baimena."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Deitzeko, idatzi balio duen zenbaki bat."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Ezin izan da deitu."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Une honetan, ezin da egin deia. Deitu ordez, mezu bat bidaltzen saia zaitezke."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Sare mugikor bidezko irratiaren indarra"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulatu gailua ez dabilela (arazketa-konpilazioa soilik)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Simulatu operadorearen satelite modua (arazketa-konpilazioa soilik)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Ikusi SIMeko kontaktuak"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Ikusi markatze finkoko zenbakiak"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Ikusi zerbitzuaren markatze-zenbakiak"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index b7b8977..833c671 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"برای برقراری تماس غیراضطراری از حالت پاسخ تماس اضطراری خارج شوید."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"در شبکه ثبت نشده است."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"شبکهٔ تلفن همراه موجود نیست."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"شبکه تلفن همراه دردسترس نیست.\n\nبرای تماس گرفتن به شبکه بیسیم متصل شوید.\n\nشبکه نسل دوم در این دستگاه غیرفعال است که ممکن است بر قابلیت اتصالتان تأثیر بگذارد. برای ادامه دادن به «تنظیمات» بروید و گزینه «اجازه دادن به شبکه نسل دوم» را فعال کنید."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"شبکه تلفن همراه دردسترس نیست. برای برقراری تماس به شبکه بیسیم متصل شوید."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"شبکه تلفن همراه دردسترس نیست.\n\nبرای تماس گرفتن به شبکه بیسیم متصل شوید.\n\nشبکه نسل دوم در این دستگاه غیرفعال است که ممکن است بر قابلیت اتصالتان تأثیر بگذارد. برای ادامه دادن به «تنظیمات» بروید و گزینه «اجازه دادن به شبکه نسل دوم» را فعال کنید."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"برای برقراری تماس، یک شماره معتبر وارد کنید."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"تماس ناموفق بود."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"درحال حاضر برقراری تماس امکانپذیر نیست. میتوانید با ارسال پیام ارتباط برقرار کنید."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"توان رادیوی تلفن همراه"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"شبیهسازی از کار افتادن (فقط ساخت اشکالزدایی)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"حالت ماهوارهای شرکت مخابراتی ساختگی (فقط ساخت اشکالزدایی)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"مشاهده دفترچه نشانی سیمکارت"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"مشاهده شمارههای شمارهگیری ثابت"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"مشاهده شمارههای شمارهگیری سرویس"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index ba6c66e..6e7cc02 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Poistu hätäpuhelujen takaisinsoittotilasta soittaaksesi muun kuin hätäpuhelun."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Ei rekisteröity verkkoon."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobiiliverkko ei käytettävissä."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobiiliverkko ei ole käytettävissä.\n\nYhdistä langattomaan verkkoon, jos haluat soittaa puhelun.\n\n2G ei ole käytössä tällä laitteella, mikä saattaa vaikuttaa yhteyksiin. Jatka siirtymällä asetuksiin ja ottamalla \"Salli 2G\" käyttöön."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobiiliverkko ei ole käytettävissä. Yhdistä langattomaan verkkoon, jos haluat soittaa puhelun."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobiiliverkko ei ole käytettävissä.\n\nYhdistä langattomaan verkkoon, jos haluat soittaa puhelun.\n\n2G ei ole käytössä tällä laitteella, mikä saattaa vaikuttaa yhteyksiin. Jatka siirtymällä asetuksiin ja ottamalla \"Salli 2G\" käyttöön."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Soita antamalla kelvollinen numero."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Puhelu epäonnistui."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Puhelua ei voi lisätä juuri nyt. Voit sen sijaan yrittää lähettää viestin."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobiiliradion voimakkuus"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Epäkunnossa-simulaatio (vain virheenkorjauksen koontiversio)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Operaattorin satelliittitilaesimerkki (vain virheenkorjauksen koontiversio)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Näytä SIM-kortin osoitekirja"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Näytä sallitut numerot"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Näytä sallitut palvelunumerot"</string>
diff --git a/res/values-fr-feminine/strings.xml b/res/values-fr-feminine/strings.xml
new file mode 100644
index 0000000..af39013
--- /dev/null
+++ b/res/values-fr-feminine/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="manual_mode_disallowed_summary" msgid="3970048592179890197">"Indisponible lorsque vous êtes connectée à %1$s"</string>
+</resources>
diff --git a/res/values-fr-masculine/strings.xml b/res/values-fr-masculine/strings.xml
new file mode 100644
index 0000000..457cf38
--- /dev/null
+++ b/res/values-fr-masculine/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="manual_mode_disallowed_summary" msgid="3970048592179890197">"Indisponible lorsque vous êtes connecté à %1$s"</string>
+</resources>
diff --git a/res/values-fr-neuter/strings.xml b/res/values-fr-neuter/strings.xml
new file mode 100644
index 0000000..221e1eb
--- /dev/null
+++ b/res/values-fr-neuter/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2007 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="manual_mode_disallowed_summary" msgid="3970048592179890197">"Indisponible lorsque vous êtes connecté·e à %1$s"</string>
+</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index ea0c8e4..3a2a742 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Quittez le mode de rappel d\'urgence pour effectuer un appel non urgent."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Non enregistré sur le réseau"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Réseau pour mobile non disponible"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Réseau mobile non disponible.\n\nConnectez-vous à un réseau sans fil pour passer un appel.\n\nLe réseau 2G est désactivé sur cet appareil, ce qui peut affecter votre connectivité. Accédez aux paramètres et activez Autoriser les réseaux 2G pour continuer."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Le réseau mobile n\'est pas accessible. Connectez-vous à un réseau sans fil pour effectuer un appel."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Le réseau mobile n\'est pas disponible.\n\nConnectez-vous à un réseau sans fil pour passer un appel.\n\nLe réseau 2G est désactivé sur cet appareil, ce qui peut affecter votre connectivité. Accédez aux paramètres et activez Autoriser les réseaux 2G pour continuer."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Pour faire un appel, entrez un numéro valide."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Échec de l\'appel."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Impossible d\'ajouter l\'appel pour le moment. Vous pouvez essayer de joindre la personne en lui envoyant un message."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Alimentation de radio cellulaire"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulation de l\'appareil hors service (version de débogage uniquement)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mode Satellite de l\'opérateur simulé (version de débogage uniquement)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Afficher le carnet d\'adresses de la carte SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Afficher les numéros d\'appel fixes"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Afficher les numéros de service"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 677fd3e..20b55eb 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Veuillez quitter le mode de rappel d\'urgence pour passer un appel standard."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Non enregistré sur le réseau."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Réseau mobile non disponible"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Réseau mobile non disponible.\n\nConnectez-vous à un réseau sans fil pour passer un appel.\n\nLa 2G est désactivée sur cet appareil, ce qui peut affecter votre connectivité. Accédez aux paramètres et activez \"Autoriser la 2G\" pour continuer."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Le réseau mobile n\'est pas disponible. Connectez-vous à un réseau sans fil pour passer un appel."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Réseau mobile non disponible.\n\nConnectez-vous à un réseau sans fil pour passer un appel.\n\nLa 2G est désactivée sur cet appareil, ce qui peut affecter votre connectivité. Accédez aux paramètres et activez \"Autoriser la 2G\" pour continuer."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Pour émettre un appel, veuillez saisir un numéro valide."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Échec de l\'appel."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Impossible d\'ajouter un appel pour le moment. Essayez plutôt d\'envoyer un message."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Alimentation radio mobile"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simuler une panne (version de débogage uniquement)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Simuler le mode Satellite de l\'opérateur (version de débogage uniquement)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Afficher le carnet d\'adresses de la carte SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Afficher les numéros autorisés"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Afficher les numéros de service"</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index ad75da9..463fc76 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Sae do modo de devolución de chamada de emerxencia para facer unha chamada que non sexa de emerxencia."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Sen rexistro na rede"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"A rede móbil non está dispoñible."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"A rede de telefonía móbil non está dispoñible.\n\nConéctate a unha rede sen fíos para facer chamadas.\n\nA rede 2G está desactivada neste dispositivo, o que pode impedir que te conectes. Para continuar, vai a Configuración e activa a opción Permitir uso de 2G."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"A rede móbil non está dispoñible. Conéctate a unha rede sen fíos para facer unha chamada."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"A rede de telefonía móbil non está dispoñible.\n\nConéctate a unha rede sen fíos para facer chamadas.\n\nA rede 2G está desactivada neste dispositivo, o que pode impedir que te conectes. Para continuar, vai a Configuración e activa a opción Permitir uso de 2G."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Para realizar unha chamada, introduce un número válido."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Produciuse un erro na chamada."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Non se pode realizar a chamada neste momento. Podes tentar poñerte en contacto mediante unha mensaxe."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Alimentación da radio móbil"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simular Fóra de servizo (só compilación de depuración)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Simular o modo Satélite do operador (só compilación de depuración)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Ver axenda de enderezos da SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Ver números de marcación fixa"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Ver números de marcación de servizo"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 9ce8a75..2a65f36 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"બિન-કટોકટીનો કૉલ કરવા માટે કટોકટી કૉલબૅક મોડમાંથી બહાર નીકળો."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"નેટવર્ક પર નોંધણી કરાયેલ નથી."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"મોબાઇલ નેટવર્ક ઉપલબ્ધ નથી."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"મોબાઇલ નેટવર્ક ઉપલબ્ધ નથી.\n\nકોઈ કૉલ કરવા માટે, વાયરલેસ નેટવર્કથી કનેક્ટ કરો.\n\nઆ ડિવાઇસ પર 2G સેવા બંધ છે, જે તમારી કનેક્ટિવિટીને અસર કરી શકે છે. સેટિંગમાં જાઓ અને આ સેવાને ચાલુ રાખવા માટે \'2Gને મંજૂરી આપો\' ચાલુ કરો."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"મોબાઇલ નેટવર્ક ઉપલબ્ધ નથી. કૉલ કરવા માટે વાયરલેસ નેટવર્ક સાથે કનેક્ટ કરો."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"મોબાઇલ નેટવર્ક ઉપલબ્ધ નથી.\n\nકોઈ કૉલ કરવા માટે, વાયરલેસ નેટવર્કથી કનેક્ટ કરો.\n\nઆ ડિવાઇસ પર 2G સેવા બંધ છે, જે તમારી કનેક્ટિવિટીને અસર કરી શકે છે. સેટિંગમાં જાઓ અને આ સેવાને ચાલુ રાખવા માટે \'2Gને મંજૂરી આપો\' ચાલુ કરો."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"કૉલ કરવા માટે, માન્ય નંબર દાખલ કરો."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"કૉલ નિષ્ફળ થયો."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"આ સમયે કૉલ ઉમેરી શકાતો નથી. તમે એક સંદેશ મોકલીને સંપર્ક કરવાનો પ્રયાસ કરી શકો છો."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"મોબાઇલ રેડિયો પાવર"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"\'સેવા ઉપલબ્ધ નથી\' મોડ સિમ્યુલેટ કરો (માત્ર ડિબગ બિલ્ડ માટે)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"મૉક કૅરિઅર સૅટલાઇટ મોડ (માત્ર ડિબગ બિલ્ડ માટે)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"સિમમાં સરનામા પુસ્તિકા જુઓ"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"ફિક્સ્ડ ડાયલિંગ નંબર જુઓ"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"સર્વિસ ડાયલિંગ નંબર જુઓ"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index e6b1adb..e8297c3 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"गैर-आपातकालीन कॉल करने के लिए आपातकालीन कॉलबैक मोड से बाहर निकलें."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"नेटवर्क पर पंजीकृत नहीं."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"मोबाइल नेटवर्क उपलब्ध नहीं."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"मोबाइल नेटवर्क उपलब्ध नहीं है.\n\nकॉल करने के लिए किसी वायरलेस नेटवर्क से कनेक्ट करें.\n\nइस डिवाइस पर 2G नेटवर्क इस्तेमाल करने की सुविधा बंद है. ऐसा हो सकता है कि इसका असर कनेक्टिविटी पर पड़ा हो. जारी रखने के लिए, Settings में जाकर ‘2G के इस्तेमाल की मंज़ूरी दें’ को चालू करें."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"मोबाइल नेटवर्क उपलब्ध नहीं है. कॉल करने के लिए किसी वायरलेस नेटवर्क से कनेक्ट करें."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"मोबाइल नेटवर्क उपलब्ध नहीं है.\n\nकॉल करने के लिए किसी वायरलेस नेटवर्क से कनेक्ट करें.\n\nइस डिवाइस पर 2G नेटवर्क इस्तेमाल करने की सुविधा बंद है, जिससे कनेक्टिविटी पर असर पड़ सकता है. जारी रखने के लिए, Settings में जाएं और ‘2G के इस्तेमाल की मंज़ूरी दें’ को चालू करें."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"कॉल करने के लिए, मान्य नंबर डालें."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"कॉल विफल."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"अभी कॉल जोड़ा नहीं जा सकता. आप संदेश भेजकर संपर्क करने की कोशिश कर सकते हैं."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"मोबाइल रेडियो पावर"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"सिम्युलेट किया गया डिवाइस काम नहीं कर रहा है (सिर्फ़ डीबग के लिए बिल्ड)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"मोबाइल और इंटरनेट सेवा देने वाली कंपनी के सैटलाइट मोड की मॉक टेस्टिंग करें (सिर्फ़ डीबग के लिए बिल्ड)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"सिम में संपर्कों के पते की सूची देखें"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"फ़िक्स्ड डायलिंग नंबर देखें"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"सेवा के डायलिंग नंबर देखें"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 4102ec3..228e559 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Isključite način hitnih poziva da biste uputili poziv koji nije hitan."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Nije registrirano na mreži."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilna mreža nije dostupna."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobilna mreža nije dostupna.\n\nPovežite se s bežičnom mrežom da biste uputili poziv.\n\n2G je onemogućen na ovom uređaju, što možda utječe na povezivost. Za nastavak otvorite postavke i omogućite opciju Dopusti 2G."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobilna mreža nije dostupna. Povežite se s bežičnom mrežom da biste uputili poziv."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobilna mreža nije dostupna.\n\nPovežite se s bežičnom mrežom da biste uputili poziv.\n\n2G je onemogućen na ovom uređaju, što možda utječe na povezivost. Za nastavak otvorite postavke i omogućite opciju Dopusti 2G."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Unesite važeći broj da biste uspostavili poziv."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Poziv nije uspio."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Poziv se trenutačno ne može dodati. Pokušajte poslati poruku."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Snaga mobilnog radija"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulacija stanja \"izvan upotrebe\" (samo međuverzija programa za otklanjanje pogrešaka)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Lažni način mobilnog operatera za slanje putem satelita (samo međuverzija programa za otklanjanje pogrešaka)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Prikaži imenik SIM-a"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Prikaži brojeve za fiksno biranje"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Prikaži brojeve za servisno biranje"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 8cbd7f9..3a56474 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Lépjen ki a Segélykérő visszahívása módból nem vészjellegű hívás kezdeményezéséhez."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Nincs regisztrálva a hálózaton."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"A mobilhálózat nem érhető el."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Nem áll rendelkezésre mobilhálózat.\n\nHívás indításához csatlakozzon vezeték nélküli hálózathoz.\n\nA 2G le van tiltva ezen az eszközön, ami hatással lehet a kapcsolódásra. A folytatáshoz nyissa meg a beállításokat, és kapcsolja be a 2G engedélyezése lehetőséget."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"A mobilhálózat nem érhető el. Hívás indításához csatlakozzon egy vezeték nélküli hálózathoz."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Nem áll rendelkezésre mobilhálózat.\n\nHívás indításához csatlakozzon vezeték nélküli hálózathoz.\n\nA 2G le van tiltva ezen az eszközön, ami hatással lehet a kapcsolódásra. A folytatáshoz nyissa meg a beállításokat, és kapcsolja be a 2G engedélyezése lehetőséget."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Hívásindításhoz adjon meg egy érvényes számot."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Sikertelen hívás."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Jelenleg nem indítható hívás. Üzenet küldésével érheti el a másik felet."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobil rádióadó teljesítménye"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Szolgáltatáskiesés szimulációja (csak hibaelhárító build)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Szimulált szolgáltató – Műholdas mód (csak hibaelhárító build)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM-kártya telefonkönyvének megtekintése"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Fix hívószámok megtekintése"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Szolgáltatásszámok megtekintése"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 25778e0..29abdb6 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Սովորական զանգ կատարելու համար դուրս եկեք շտապ կանչի ռեժիմից։"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Ցանցում գրանցված չէ:"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Բջջային ցանցն անհասանելի է:"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Բջջային ցանցն անհասանելի է։\n\nԶանգելու համար միացեք անլար ցանցին։\n\n2G-ն անջատված է այս սարքում, ինչը կարող է ազդել կապի վրա։ Շարունակելու համար անցեք Կարգավորումներ և միացրեք «Թույլատրել 2G-ն»։"</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Բջջային ցանցն անհասանելի է: Զանգելու համար միացեք Wi-Fi ցանցին:"</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Բջջային ցանցն անհասանելի է։\n\nԶանգելու համար միացեք անլար ցանցին։\n\n2G-ն անջատված է այս սարքում, ինչը կարող է ազդել կապի վրա։ Շարունակելու համար անցեք Կարգավորումներ և միացրեք «Թույլատրել 2G-ն»։"</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Զանգ կատարելու համար մուտքագրեք ճիշտ համար:"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Զանգը ձախողվեց:"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Զանգն այս պահին հնարավոր չէ ավելացնել: Փորձեք հաղորդագրություն ուղարկել:"</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Բջջային ռադիոազդանշանի հզորությունը"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Սպասարկման գոտուց դուրս գտնվելու սիմուլյացիա (միայն վրիպազերծման կառուցում)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Օպերատորի արբանյակի ռեժիմի սիմուլյացիա (միայն վրիպազերծման կառուցում)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Դիտել SIM քարտի հասցեագիրքը"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Տեսնել ամրակցված հեռախոսահամարները"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Տեսնել ծառայությունների հեռախոսահամարները"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 91bbbe5..c5ec112 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Keluar dari mode telepon balik darurat untuk melakukan panggilan non-darurat."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Tidak terdaftar pada jaringan."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Jaringan seluler tidak tersedia."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Jaringan seluler tidak tersedia.\n\nHubungkan ke jaringan nirkabel untuk melakukan panggilan.\n\n2G dinonaktifkan di perangkat ini, yang mungkin memengaruhi konektivitas Anda. Buka Setelan dan aktifkan Izinkan 2G untuk melanjutkan."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Jaringan seluler tidak tersedia. Sambungkan ke jaringan nirkabel untuk melakukan panggilan."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Jaringan seluler tidak tersedia.\n\nSambungkan ke jaringan nirkabel untuk melakukan panggilan.\n\n2G dinonaktifkan di perangkat ini, yang mungkin memengaruhi konektivitas Anda. Buka Setelan dan aktifkan Izinkan 2G untuk melanjutkan."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Untuk melakukan panggilan telepon, masukkan nomor yang valid."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Telepon gagal."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Panggilan tidak bisa ditambahkan saat ini. Anda bisa mencoba menghubungi dengan mengirim pesan."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Daya Radio Seluler"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulasi Tidak dapat Digunakan (Khusus Build Debug)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mode Satelit Operator Tiruan (khusus Build Debug)."</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Lihat Buku Alamat SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Lihat Panggilan Terbatas"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Lihat Nomor Panggilan Layanan"</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index f7b6837..aeb436e 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Hætta í stillingu fyrir svarhringingu neyðarsímtala til að hringja símtal sem ekki er neyðarsímtal."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Ekki skráð á símkerfi."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Farsímakerfi ekki tiltækt."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Farsímakerfið er ekki tiltækt.\n\nTengstu þráðlausu neti til að hringja.\n\nSlökkt er á 2G í þessu tæki, sem kann að hafa áhrif á tenginguna. Opnaðu stillingar og virkjaðu Leyfa 2G til að halda áfram."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Farsímakerfi er ekki tiltækt. Tengstu þráðlausu neti til að hringja."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Farsímakerfið er ekki tiltækt.\n\nTengstu þráðlausu neti til að hringja.\n\nSlökkt er á 2G í þessu tæki, sem kann að hafa áhrif á tenginguna. Opnaðu stillingar og virkjaðu Leyfa 2G til að halda áfram."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Sláðu inn gilt númer til að hringja símtal."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Tókst ekki að hringja."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Ekki er hægt að bæta símtali við að svo stöddu. Þú getur reynt að hafa samband með því að senda skilaboð."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Loftnetsstyrkur farsíma"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Líkja eftir „Utan þjónustusvæðis“ (aðeins villuleitarsmíði)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Eftirlíking af gervihnattarstillingu símafyrirtækis (aðeins villuleitarsmíði)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Skoða símaskrá SIM-korts"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Skoða læst númeraval"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Skoða þjónustunúmer"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 571124c..330fee2 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Per effettuare chiamate non di emergenza, esci dalla modalità di richiamata di emergenza."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Non registrato sulla rete."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Rete cellulare non disponibile."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Rete mobile non disponibile.\n\nConnettiti a una rete wireless per effettuare una chiamata.\n\nIl 2G è disattivato su questo dispositivo, e questo potrebbe influire sulla tua connettività. Vai alle Impostazioni e attiva Consenti 2G per continuare."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"La rete cellulare non è disponibile. Connettiti a una rete wireless per effettuare una chiamata."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"La rete mobile non è disponibile.\n\nConnettiti a una rete wireless per effettuare una chiamata.\n\nIl 2G è disattivato su questo dispositivo, e questo potrebbe influire sulla tua connettività. Vai alle Impostazioni e attiva Consenti 2G per continuare."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Per effettuare una chiamata, inserisci un numero valido."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Chiamata non riuscita."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Impossibile aggiungere la chiamata al momento. Prova a inviare un messaggio."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Potenza del segnale radio mobile"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulazione non disponibile (solo build di debug)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Modalità satellite operatore fittizio (solo build di debug)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Visualizza rubrica SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Visualizza numeri consentiti"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Visualizza numeri dell\'elenco dei numeri di servizio"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 2e10ddf..0692388 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"עליך לצאת ממצב חירום של התקשרות חזרה כדי לבצע שיחות שאינן שיחות חירום."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"לא רשום ברשת."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"הרשת הסלולרית אינה זמינה."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"הרשת הסלולרית לא זמינה.\n\nצריך להתחבר לרשת אלחוטית כדי להתקשר.\n\nהחיבור ל-2G מושבת במכשיר, ויכול להיות שזה משפיע על הקישוריות. כדי להמשיך, צריך לפתוח את ההגדרות ולאפשר שימוש ב-2G."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"הרשת הסלולרית לא זמינה. עליך להתחבר לרשת אלחוטית כדי להתקשר."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"הרשת הסלולרית לא זמינה.\n\nצריך להתחבר לרשת אלחוטית כדי להתקשר.\n\nהחיבור ל-2G מושבת במכשיר, ויכול להיות שזה משפיע על הקישוריות. כדי להמשיך, צריך לפתוח את ההגדרות ולאפשר שימוש ב-2G."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"כדי להתקשר, יש להזין מספר טלפון חוקי."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"השיחה נכשלה."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"לא ניתן להוסיף את השיחה כרגע. אפשר לנסות לשלוח הודעה."</string>
@@ -844,6 +846,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"הפעלה של רדיו סלולרי"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"סימולציה של המצב \'לא בשירות\' (גרסת build לניפוי באגים בלבד)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"מצב שמדמה תקשורת לוויינית דרך ספק הסלולר (גרסת build לניפוי באגים בלבד)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"הצגת פנקס כתובות של SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"הצגת מספרי חיוג קבועים"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"מספרי חיוג לשירות"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index daa71d4..9011e06 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"緊急通報以外の通話を発信するには、緊急通報待機モードを終了してください。"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"ご加入の通信サービスがありません"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"モバイルネットワークが利用できません。"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"モバイル ネットワークを利用できません。\n\n電話をかけるにはワイヤレス ネットワークに接続してください。\n\nこのデバイスでは 2G が無効になっており、接続性に影響している可能性があります。続行するには、[設定] に移動し、[2G の許可] を有効にしてください。"</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"モバイル ネットワークを利用できません。電話をかけるにはワイヤレス ネットワークに接続してください。"</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"モバイル ネットワークを利用できません。\n\n電話をかけるにはワイヤレス ネットワークに接続してください。\n\nこのデバイスでは 2G が無効になっており、接続性に影響している可能性があります。続行するには、[設定] に移動し、[2G の許可] を有効にしてください。"</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"発信するには、有効な番号を入力してください。"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"発信できませんでした。"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"現在、通話を追加できません。連絡するには、メッセージを送信してみてください。"</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"モバイル無線電力"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"圏外状態のシミュレート(デバッグビルドのみ)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"携帯通信会社の疑似航空写真モード(デバッグビルドのみ)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM のアドレス帳を表示"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"発信番号制限を表示"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"サービス電話番号を表示"</string>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index fc8ff72..0c487d3 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"გამოდით გადაუდებელი გადმორეკვის რეჟიმიდან არაგადაუდებელი ზარის განსახორციელებლად."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"ქსელში რეგისტრირებული არ არის."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"მობილური ქსელი მიუწვდომელია."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"მობილური ქსელი მიუწვდომელია.\n\nდაუკავშირდით უსადენო ქსელს ზარის განსახორციელებლად.\n\n2G გამორთულია ამ მოწყობილობაზე, რამაც შეიძლება გავლენა მოახდინოს თქვენს კავშირზე. გასაგრძელებლად გადადით პარამეტრებზე და ჩართეთ „2G-ის დაშვება“."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"მობილური ქსელი მიუწვდომელია. ზარის განსახორციელებლად დაუკავშირდით უსადენო ქსელს."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"მობილური ქსელი მიუწვდომელია.\n\nდაუკავშირდით უსადენო ქსელს ზარის განსახორციელებლად.\n\n2G გამორთულია ამ მოწყობილობაზე, რამაც შეიძლება გავლენა მოახდინოს თქვენს კავშირზე. გასაგრძელებლად გადადით პარამეტრებზე და ჩართეთ „2G-ის დაშვება“."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"ზარის განხორციელებისათვის, შეიყვანეთ მოქმედი ნომერი."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"ზარი ვერ განხორციელდა."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"ამჟამად ზარის დამატება შეუძლებელია. შეგიძლიათ სცადოთ დაკავშირება შეტყობინების გაგზავნით."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"მობილური რადიოკავშირის ელკვება"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"სიმულაცია სერვისის გარეშე (მხოლოდ გამართვის აგება)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"სიმულაციური ოპერატორის სატელიტის რეჟიმი (მხოლოდ გამართვის აგება)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM-ის მისამართების წიგნის ნახვა"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"დაშვებული ნომრების ნახვა"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"სერვისის დარეკილი ნომრების ნახვა"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index bb11357..c6bdf3f 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Төтенше емес қоңырау шалу үшін төтенше қоңырауды кері шалу режимінен шығыңыз."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Желіде тіркелмеген."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Ұялы желі қол жетімсіз."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Мобильдік желі қолжетімді емес.\n\nҚоңырау шалу үшін сымсыз желіге қосылыңыз.\n\nОсы құрылғыдағы 2G функциясы өшірілген. Бұл байланыс жұмысына әсер етуі мүмкін. Жалғастыру үшін параметрлерге өтіп, \"2G қолдануға рұқсат беру\" опциясын қосыңыз."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Мобильдік желі қолжетімді емес. Қоңырау шалу үшін сымсыз желіге қосылыңыз."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Мобильдік желі қолжетімді емес.\n\nҚоңырау шалу үшін сымсыз желіге қосылыңыз.\n\nОсы құрылғыдағы 2G функциясы өшірілген. Бұл қосылу мүмкіндігіне әсер етуі мүмкін. Жалғастыру үшін \"Параметрлерге\" өтіп, \"2G қолдануға рұқсат беру\" опциясын қосыңыз."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Қоңырау шалу үшін жарамды нөмірді енгізіңіз."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Қоңырау шалынбады."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Қоңырауды қазір қосу мүмкін емес. Хабар жіберіп хабарласуға болады."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Радиосигнал күші"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"\"Істен шыққан\" қызметін симуляциялау (түзету құрамасы ғана)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mock Carrier жер серігі режимі (тек түзету құрамасы)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM мекенжай кітапшасын көру"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Рұқсат нөмірлерді көру"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Қызметтік теру нөмірлерін көру"</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 0606272..17fad57 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"ចាកចេញពីរបៀបហៅទៅវិញពេលមានអាសន្នដើម្បីធ្វើការហៅធម្មតា។"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"មិនបានចុះឈ្មោះនៅលើបណ្ដាញ។"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"បណ្ដាញឧបករណ៍ចល័តមិនអាចប្រើបាន។"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"មិនអាចប្រើបណ្ដាញទូរសព្ទចល័តបានទេ។\n\nសូមភ្ជាប់ទៅបណ្តាញឥតខ្សែ ដើម្បីហៅទូរសព្ទ។\n\n2G ត្រូវបានបិទនៅលើឧបករណ៍នេះ ដែលអាចប៉ះពាល់ដល់ការតភ្ជាប់របស់អ្នក។ សូមចូលទៅកាន់ការកំណត់ ហើយបើក \"អនុញ្ញាត 2G\" ដើម្បីបន្ត។"</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"មិនមានបណ្តាញទូរសព្ទទេ។ ភ្ជាប់ទៅបណ្តាញឥតខ្សែ ដើម្បីអាចហៅទូរសព្ទបាន។"</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"មិនអាចប្រើបណ្ដាញទូរសព្ទចល័តបានទេ។\n\nសូមភ្ជាប់ទៅបណ្តាញឥតខ្សែ ដើម្បីហៅទូរសព្ទ។\n\n2G ត្រូវបានបិទនៅលើឧបករណ៍នេះ ដែលអាចប៉ះពាល់ដល់ការតភ្ជាប់របស់អ្នក។ សូមចូលទៅកាន់ការកំណត់ ហើយបើក \"អនុញ្ញាត 2G\" ដើម្បីបន្ត។"</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"ដើម្បីធ្វើការហៅ បញ្ចូលលេខដែលមានសុពលភាព។"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"បានបរាជ័យការហៅ។"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"មិនអាចបញ្ចូលការហៅបានទេនៅពេលនេះ។ អ្នកអាចព្យាយាមទាក់ទងតាមរយៈការផ្ញើសារ។"</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"ថាមពលវិទ្យុទូរសព្ទចល័ត"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"ត្រាប់តាមពេលគ្មានសេវា (កំណែបង្កើតសម្រាប់ជួសជុលតែប៉ុណ្ណោះ)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"មុខងារផ្កាយរណបក្រុមហ៊ុនសេវាទូរសព្ទសាកល្បង (កំណែបង្កើតសម្រាប់ជួសជុលតែប៉ុណ្ណោះ)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"មើលសៀវភៅអាសយដ្ឋានក្នុងស៊ីមកាត"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"មើលលេខហៅថេរ"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"មើលលេខហៅសេវាកម្ម"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 18f1633..a1438f6 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"ತುರ್ತು ರಹಿತ ಕರೆಯನ್ನು ಮಾಡಲು ತುರ್ತು ಮರು ಕರೆಮಾಡುವಿಕೆ ಮೋಡ್ ಅನ್ನು ನಿರ್ಗಮಿಸಿ."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"ನೆಟ್ವರ್ಕ್ನಲ್ಲಿ ಇನ್ನೂ ನೋಂದಣಿಯಾಗಿಲ್ಲ."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ ಲಭ್ಯವಿಲ್ಲ."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ ಲಭ್ಯವಿಲ್ಲ.\n\nಕರೆ ಮಾಡಲು ವೈರ್ಲೆಸ್ ನೆಟ್ವರ್ಕ್ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಿ.\n\nಈ ಸಾಧನದಲ್ಲಿ 2G ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ, ಇದು ನಿಮ್ಮ ಕನೆಕ್ಟಿವಿಟಿ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರಬಹುದು. ಸೆಟ್ಟಿಂಗ್ಗಳಿಗೆ ಹೋಗಿ ಮತ್ತು ಮುಂದುವರಿಸಲು 2G ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ ಲಭ್ಯವಿಲ್ಲ. ಕರೆ ಮಾಡಲು ವೈರ್ಲೆಸ್ ನೆಟ್ವರ್ಕ್ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಿ."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ ಲಭ್ಯವಿಲ್ಲ.\n\nಕರೆ ಮಾಡಲು ವೈರ್ಲೆಸ್ ನೆಟ್ವರ್ಕ್ಗೆ ಕನೆಕ್ಟ್ ಮಾಡಿ.\n\nಈ ಸಾಧನದಲ್ಲಿ 2G ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ, ಇದು ನಿಮ್ಮ ಕನೆಕ್ಟಿವಿಟಿ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರಬಹುದು. ಸೆಟ್ಟಿಂಗ್ಗಳಿಗೆ ಹೋಗಿ ಮತ್ತು ಮುಂದುವರಿಸಲು 2G ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"ಕರೆಯನ್ನು ಮಾಡಲು, ಮಾನ್ಯವಾದ ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"ಕರೆ ವಿಫಲವಾಗಿದೆ."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"ಈ ಸಮಯದಲ್ಲಿ ಕರೆಯನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುವ ಮೂಲಕ ನೀವು ಸಂಪರ್ಕಿಸಲು ಪ್ರಯತ್ನಿಸಬಹುದು."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"ಮೊಬೈಲ್ ರೇಡಿಯೋ ಪವರ್"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"ಸೇವೆಯಲ್ಲಿಲ್ಲದಿರುವುದನ್ನು ಸಿಮ್ಯುಲೇಟ್ ಮಾಡುವುದು (ಡೀಬಗ್ ಬಿಲ್ಡ್ ಮಾತ್ರ)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mock Carrier ಉಪಗ್ರಹ ಮೋಡ್ (ಡೀಬಗ್ ಬಿಲ್ಡ್ ಮಾತ್ರ)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"ಸಿಮ್ ವಿಳಾಸ ಪುಸ್ತಕವನ್ನು ವೀಕ್ಷಿಸಿ"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"ಸ್ಥಿರ ಡಯಲಿಂಗ್ ಸಂಖ್ಯೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"ಸೇವಾ ಡಯಲಿಂಗ್ ಸಂಖ್ಯೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 8735dfc..8207bae 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"일반 전화를 걸려면 긴급 콜백 모드를 해제하세요."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"네트워크에서 등록되지 않았습니다."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"모바일 네트워크를 사용할 수 없습니다."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"모바일 네트워크를 사용할 수 없습니다.\n\n전화를 걸려면 무선 네트워크에 연결하세요.\n\n기기에서 2G가 사용 중지되어 있어 연결 상태에 영향을 줄 수 있습니다. 계속하려면 \'설정\'으로 이동하여 \'2G 허용\'을 사용 설정하세요."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"모바일 네트워크를 사용할 수 없습니다. 전화를 걸려면 무선 네트워크에 연결하세요."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"모바일 네트워크를 사용할 수 없습니다.\n\n전화를 걸려면 무선 네트워크에 연결하세요.\n\n이 기기에서 2G가 사용 중지되어 있으므로 연결에 영향을 미칠 수 있습니다. 계속하려면 \'설정\'으로 이동하여 \'2G 허용\'을 사용 설정하세요."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"전화를 걸려면 올바른 번호를 입력하세요."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"전화 연결 실패"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"현재는 통화를 추가할 수 없습니다. 메시지를 보내 연락해 보세요."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"모바일 무선 전력"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"\'서비스 지역 벗어남\' 시뮬레이션(디버그 빌드만 해당)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"모의 이동통신사 위성 모드(디버그 빌드만 해당)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM 주소록 보기"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"발신 허용 번호 보기"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"SDN(Service Dialing Numbers) 보기"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 254a91f..cc645cc 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Кадимки шартта чалуу үчүн шашылыш кайра чалуу режиминен чыгыңыз."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Тармакта катталган эмес."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Мобилдик тармак жок."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Мобилдик тармак жеткиликсиз.\n\nЧалуу үчүн зымсыз тармакка туташыңыз.\n\nБул түзмөктө 2G өчүрүлгөндүктөн, байланышка таасирин тийгизиши мүмкүн. Улантуу үчүн параметрлерге өтүп, \"2G тармагына уруксат берүү\" параметрин иштетиңиз."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Мобилдик тармак жеткиликтүү эмес. Чалуу үчүн зымсыз тармакка туташыңыз."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Мобилдик тармак жеткиликсиз.\n\nЧалуу үчүн зымсыз тармакка туташыңыз.\n\nБул түзмөктө 2G өчүрүлгөндүктөн, байланышка таасирин тийгизиши мүмкүн. Улантуу үчүн параметрлерге өтүп, \"2G тармагына уруксат берүү\" параметрин иштетиңиз."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Чалуу үчүн, жарактуу номер киргизиңиз."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Чалынбай калды."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Чалуу бул жолу кошулбай койду. Билдирүү жөнөтүп, байланышсаңыз болот."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Мобилдик радионун кубаты"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Тейлөө аймагынын сыртында режимин иштетүү (Мүчүлүштүктөрдү оңдоо үчүн гана)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Симуляцияланган байланыш операторунун спутниги (Мүчүлүштүктөрдү оңдоо үчүн гана)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM картадагы дарек китепчесин көрүү"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Туруктуу терүү номерлерин көрүү"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Кызматтык терүү номерлерин көрүү"</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 076f31c..5ee78bf 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"ອອກຈາກໂໝດໂທກັບສຸກເສີນ ເພື່ອເຮັດການໂທປົກກະຕິ."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"ບໍ່ໄດ້ລົງທະບຽນໃນເຄືອຂ່າຍ."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"ເຄືອຂ່າຍມືຖືບໍ່ສາມາດໃຊ້ໄດ້."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"ເຄືອຂ່າຍມືຖືບໍ່ມີໃຫ້ໃຊ້.\n\nເຊື່ອມຕໍ່ຫາເຄືອຂ່າຍໄຮ້ສາຍເພື່ອໂທອອກ.\n\n2G ປິດໄວ້ຢູ່ອຸປະກອນນີ້, ເຊິ່ງອາດສົ່ງຜົນຕໍ່ການເຊື່ອມຕໍ່ຂອງທ່ານ. ໄປຫາການຕັ້ງຄ່າ ແລະ ເປີດການນຳໃຊ້ອະນຸຍາດ 2G ເພື່ອສືບຕໍ່."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"ບໍ່ສາມາດໃຊ້ອິນເຕີເນັດມືຖືໄດ້. ກະລຸນາເຊື່ອມຕໍ່ຫາ Wi-Fi ເພື່ອໂທ."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"ເຄືອຂ່າຍມືຖືບໍ່ມີໃຫ້ໃຊ້.\n\nເຊື່ອມຕໍ່ຫາເຄືອຂ່າຍໄຮ້ສາຍເພື່ອໂທອອກ.\n\n2G ປິດໄວ້ຢູ່ອຸປະກອນນີ້, ເຊິ່ງອາດສົ່ງຜົນຕໍ່ການເຊື່ອມຕໍ່ຂອງທ່ານ. ໄປຫາການຕັ້ງຄ່າ ແລະ ເປີດການນຳໃຊ້ອະນຸຍາດ 2G ເພື່ອສືບຕໍ່."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"ເພື່ອທີ່ຈະໂທ, ປ້ອນເບີໂທທີ່ໃຊ້ໄດ້ເຂົ້າໄປ."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"ໂທບໍ່ສຳເລັດ."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"ບໍ່ສາມາດໂທໄດ້ໃນຕອນນີ້. ທ່ານສາມາດລອງຕິດຕໍ່ຫາໄດ້ໂດຍການສົ່ງຂໍ້ຄວາມ."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"ພະລັງງານວິທະຍຸມືຖື"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"ຈໍາລອງເຫດການບໍ່ພ້ອມໃຫ້ບໍລິການ (ສໍາລັບ Build ດີບັກເທົ່ານັ້ນ)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"ຈຳລອງໂໝດດາວທຽມຂອງຜູ້ໃຫ້ບໍລິການ (ສຳລັບ Build ດີບັກເທົ່ານັ້ນ)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"ເບິ່ງສະໝຸດທີ່ຢູ່ໃນຊິມ"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"ເບິ່ງໝາຍເລກໂທອອກທີ່ກຳນົດ"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"ເບິ່ງໝາຍເລກບໍລິການໂທອອກ"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 18cab25..4a1d1a3 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Jei norite skambinti ne pagalbos numeriu, išjunkite atgalinio skambinimo pagalbos numeriu režimą."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Neregistruota tinkle."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilusis tinklas negalimas."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobiliojo ryšio tinklas nepasiekiamas.\n\nPrisijunkite prie belaidžio ryšio tinklo, kad galėtumėte skambinti.\n\n2G išjungtas šiame įrenginyje, o tai gali paveikti jūsų ryšį. Eikite į skiltį „Nustatymai“ ir įgalinkite funkciją „Leisti 2G“, kad galėtumėte tęsti."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobiliojo ryšio tinklas nepasiekiamas. Prisijunkite prie belaidžio ryšio tinklo, kad galėtumėte skambinti."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobiliojo ryšio tinklas nepasiekiamas.\n\nPrisijunkite prie belaidžio ryšio tinklo, kad galėtumėte skambinti.\n\n2G išjungtas šiame įrenginyje, o tai gali paveikti jūsų ryšį. Eikite į skiltį „Nustatymai“ ir įgalinkite funkciją „Leisti 2G“, kad galėtumėte tęsti."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Kad galėtumėte paskambinti, įveskite tinkamą numerį."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Paskambinti nepavyko."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Šiuo metu skambučio pridėti negalima. Galite pabandyti susisiekti išsiųsdami pranešimą."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobiliojo ryšio radijo signalas"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Modeliavimas neteikiamas (tik derinimo versija)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Netikras operatoriaus satelito režimas (tik derinimo versija)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Žiūrėti SIM kortelės adresų knygą"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Žiūrėti fiksuotojo rinkimo numerius"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Žiūrėti paslaugos renkamus numerius"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 87eb18c..9e89b9c 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Lai veiktu parastu zvanu, izejiet no ārkārtas atzvana režīma."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Tīklā nav reģistrēts."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilais tīkls nav pieejams."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobilais tīkls nav pieejams.\n\nLai veiktu zvanu, izveidojiet savienojumu ar bezvadu tīklu.\n\nŠajā ierīcē ir atspējots 2G, un tas var ietekmēt jūsu savienojamību. Lai turpinātu, pārejiet uz iestatījumiem un iespējojiet opciju “Atļaut 2G”."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobilais tīkls nav pieejams. Lai veiktu zvanu, izveidojiet savienojumu ar bezvadu tīklu."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobilais tīkls nav pieejams.\n\nLai veiktu zvanu, izveidojiet savienojumu ar bezvadu tīklu.\n\nŠajā ierīcē ir atspējots 2G, un tas var ietekmēt jūsu savienojamību. Lai turpinātu, pārejiet uz iestatījumiem un iespējojiet opciju “Atļaut 2G”."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Lai veiktu zvanu, ievadiet derīgu numuru."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Zvans neizdevās."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Pašlaik nevar pievienot zvanu. Varat mēģināt sūtīt īsziņu."</string>
@@ -843,6 +845,8 @@
<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>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<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>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Pakalpojuma iezvanes numuru skatīšana"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 11b64b1..f9d4bcf 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Излезете од режимот на итен повратен повик за да направите обичен повик."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Не е регистриран на мрежа."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Не е достапна мобилна мрежа."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Мобилната мрежа не е достапна.\n\nПоврзете се на безжична мрежа за да остварите повик.\n\n2G е оневозможено на уредов, а тоа може да влијае врз поврзливоста. Одете во „Поставки“ и овозможете ја опцијата „Дозволи 2G“ за да продолжите."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Не е достапна мобилна мрежа. Поврзете се на безжична мрежа за да повикате."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Мобилната мрежа не е достапна.\n\nПоврзете се на безжична мрежа за да остварите повик.\n\n2G е оневозможено на уредов, а тоа може да влијае врз поврзливоста. Одете во „Поставки“ и овозможете ја опцијата „Дозволи 2G“ за да продолжите."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"За да повикате, внесете важечки број."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Повикот не успеа."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Повикот не може да се додаде во моментов. Може да се обидете да стапите во контакт со испраќање порака."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Радио-напојување на мобилен"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Симулирање „Надвор од употреба“ (само за верзиите за отстранување грешки)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Симулација на режим на сателит за оператор (само за верзиите за отстранување грешки)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Прикажи именик на SIM-картичката"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Прикажи броеви со ограничено бирање"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Прикажи броеви за бирање служби"</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index db49622..1739135 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"അടിയന്തിരമല്ലാത്ത കോൾ ചെയ്യാൻ അടിയന്തിര കോൾബാക്ക് മോഡിൽ നിന്ന് പുറത്തുകടക്കുക."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"നെറ്റ്വർക്കിൽ രജിസ്റ്റർ ചെയ്തിട്ടില്ല."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"മൊബൈൽ നെറ്റ്വർക്ക് ലഭ്യമല്ല."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"മൊബൈൽ നെറ്റ്വർക്ക് ലഭ്യമല്ല.\n\nകോൾ ചെയ്യാൻ ഒരു വയർലെസ് നെറ്റ്വർക്കിലേക്ക് കണക്റ്റ് ചെയ്യുക.\n\nഈ ഉപകരണത്തിൽ 2G പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു, അത് നിങ്ങളുടെ കണക്റ്റിവിറ്റിയെ ബാധിച്ചേക്കാം. തുടരാൻ, ക്രമീകരണത്തിലേക്ക് പോയി 2G അനുവദിക്കുക പ്രവർത്തനക്ഷമമാക്കുക."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"മൊബൈൽ നെറ്റ്വർക്ക് ലഭ്യമല്ല. കോൾ വിളിക്കാൻ വയർലെസ്സ് നെറ്റ്വർക്കിലേക്ക് കണക്റ്റുചെയ്യുക."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"മൊബൈൽ നെറ്റ്വർക്ക് ലഭ്യമല്ല.\n\nകോൾ ചെയ്യാൻ ഒരു വയർലെസ് നെറ്റ്വർക്കിലേക്ക് കണക്റ്റ് ചെയ്യുക.\n\nഈ ഉപകരണത്തിൽ 2G പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു, അത് നിങ്ങളുടെ കണക്റ്റിവിറ്റിയെ ബാധിച്ചേക്കാം. തുടരാൻ, ക്രമീകരണത്തിലേക്ക് പോയി 2G അനുവദിക്കുക പ്രവർത്തനക്ഷമമാക്കുക."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"ഒരു കോൾ ചെയ്യുന്നതിന്, സാധുതയുള്ള നമ്പർ നൽകുക."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"കോൾ ചെയ്യാനായില്ല."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"ഇപ്പോൾ കോൾ ചേർക്കാനാവില്ല. നിങ്ങൾക്കൊരു സന്ദേശമയച്ചുകൊണ്ട് ബന്ധപ്പെടാൻ ശ്രമിക്കാം."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"മൊബൈൽ റേഡിയോ പവർ"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"സേവനം ലഭ്യമല്ലെന്ന് അനുകരിക്കുക (ഡീബഗ് ബിൽഡ് മാത്രം)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mock സേവനദാതാവ് ഉപഗ്രഹ മോഡ് (ഡീബഗ് ബിൽഡ് മാത്രം)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"സിം വിലാസ പുസ്തകം കാണുക"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"സ്ഥിര ഡയലിംഗ് നമ്പറുകൾ കാണുക"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"സർവീസ് ഡയലിംഗ് നമ്പറുകൾ കാണുക"</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index db914c7..8a05442 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Яаралтай түргэн тусламжийн бус дуудлага хийхийн тулд яаралтай түргэн тусламжийн callback горимоос гарна уу."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Сүлжээнд бүртгэгдээгүй."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Мобайль сүлжээ байхгүй."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Хөдөлгөөнт холбооны сүлжээ боломжгүй байна.\n\nДуудлага хийхийн тулд утасгүй сүлжээнд холбогдоно уу.\n\n2G-г энэ төхөөрөмж дээр идэвхгүй болгосон бөгөөд энэ нь таны холболтод нөлөөлж байж магадгүй. Үргэлжлүүлэхийн тулд Тохиргоо руу очоод, 2G-г зөвшөөрөхийг идэвхжүүлнэ үү."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Хөдөлгөөнт холбооны сүлжээнд холбогдох боломжгүй байна. Дуудлага хийхийн тулд утасгүй интернетэд холбогдоно уу."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Хөдөлгөөнт холбооны сүлжээ боломжгүй байна.\n\nДуудлага хийхийн тулд утасгүй сүлжээнд холбогдоно уу.\n\n2G-г энэ төхөөрөмж дээр идэвхгүй болгосон бөгөөд энэ нь таны холболтод нөлөөлж байж магадгүй. Үргэлжлүүлэхийн тулд Тохиргоо руу очоод, 2G-г зөвшөөрөхийг идэвхжүүлнэ үү."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Дуудлага хийхийн тулд хүчин төгөлдөр дугаар оруулна уу."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Дуудлага амжилтгүй болсон."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Дуудлагыг энэ удаад нэмэх боломжгүй. Та мессеж илгээн холбоо тогтоохыг оролдох боломжтой."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Мобайл радио цахилгаан"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Үйлчилгээний хүрээнээс гарсан нөхцөл байдлыг загварчлах (зөвхөн дебагийн хийц)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Оператор компанийн хуурамч хиймэл дагуулын горим (зөвхөн дебаг хийсэн хийц)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM хаягийн лавлахыг харах"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Залгахаар тохируулсан дугаарыг харах"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Үйлчилгээний залгах дугаарыг харах"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 6918c88..45a7c1f 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"आणीबाणी नसलेला कॉल करण्यासाठी आणीबाणी कॉलबॅक मोडमधून बाहेर पडा."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"नेटवर्कवर नोंदणीकृत नाही."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"मोबाइल नेटवर्क उपलब्ध नाही."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"मोबाइल नेटवर्क उपलब्ध नाही. \n\nकॉल करण्यासाठी वायरलेस नेटवर्कशी कनेक्ट करा.\n\nया डिव्हाइसवर 2G बंद केले आहे, ज्यामुळे तुमच्या कनेक्टिव्हिटीवर परिणाम होत असेल. सेटिंग्ज वर जा आणि पुढे सुरू ठेवण्यासाठी 2G सुरू करा."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"मोबाइल नेटवर्क उपलब्ध नाही. कॉल करण्यासाठी वायरलेस नेटवर्कशी कनेक्ट करा."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"मोबाइल नेटवर्क उपलब्ध नाही. \n\nकॉल करण्यासाठी वायरलेस नेटवर्कशी कनेक्ट करा.\n\nया डिव्हाइसवर 2G बंद केले आहे, ज्यामुळे तुमच्या कनेक्टिव्हिटीवर परिणाम होत असेल. सेटिंग्ज वर जा आणि पुढे सुरू ठेवण्यासाठी 2G सुरू करा."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"कॉल करण्यासाठी, एक वैध नंबर एंटर करा."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"कॉल अयशस्वी झाला."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"या वेळी कॉल जोडू शकत नाही. तुम्ही मेसेज पाठवून संपर्क करण्याचा प्रयत्न करू शकता."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"मोबाइल रेडिओ पॉवर"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"सेवा बंद आहे सिम्युलेट करा (फक्त डीबगचा बिल्ड)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"नमुना वाहकाचा उपग्रह मोड (फक्त डीबग बिल्ड)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"सिम ॲड्रेस बुक पहा"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"निश्चित डायलिंग नंबर पहा"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"सर्व्हिस डायलिंग नंबर पहा"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 993ab81..fc5f76a 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Keluar daripada mod panggil balik kecemasan untuk membuat panggilan bukan kecemasan."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Tidak didaftarkan pada rangkaian."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Rangkaian mudah alih tidak tersedia."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Rangkaian mudah alih tidak tersedia.\n\nBuat sambungan kepada rangkaian wayarles untuk membuat panggilan.\n\n2G dilumpuhkan pada peranti ini, yang mungkin menjejaskan kesambungan anda. Akses Tetapan dan dayakan Benarkan 2G untuk meneruskan kesambungan."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Rangkaian selular tidak tersedia. Sambung ke rangkaian wayarles untuk membuat panggilan."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Rangkaian mudah alih tidak tersedia.\n\nSambungkan kepada rangkaian wayarles untuk membuat panggilan.\n\n2G dilumpuhkan pada peranti ini, yang mungkin menjejaskan kesambungan anda. Akses Tetapan dan dayakan Benarkan 2G untuk meneruskan kesambungan."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Untuk membuat panggilan, masukkan nombor yang sah."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Panggilan gagal."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Panggilan tidak dapat ditambahkan pada masa ini. Anda boleh cuba menghantar mesej untuk berhubung."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Kuasa Radio Mudah Alih"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulasi Rosak (Binaan Penyahpepijatan sahaja)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Contoh Mod Satelit Pembawa (Binaan Penyahpepijatan sahaja)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Lihat Buku Alamat SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Lihat Nombor Dailan Tetap"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Lihat Nombor Dailan Perkhidmatan"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 39011c3..bfaa013 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"အရေးပေါ် မဟုတ်သည့် ခေါ်ဆိုမှုကို ပြုလုပ်ရန် အရေးပေါ် ဖုန်းခေါ်မှုမှ ထွက်ပါ။"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"ကွန်ယက်ပေါ်မှာ မှတ်ပုံတင်မှု မပြုလုပ်ထားပါ"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"မိုဘိုင်းကွန်ယက်များ မရှိပါ"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"မိုဘိုင်းကွန်ရက် မရနိုင်ပါ။\n\nဖုန်းခေါ်ရန် ကြိုးမဲ့ကွန်ရက်သို့ ချိတ်ဆက်ပါ။\n\nဤစက်တွင် 2G ကိုပိတ်ထားပြီး ၎င်းက သင့်ချိတ်ဆက်နိုင်မှုအပေါ် သက်ရောက်နိုင်သည်။ ဆက်တင်များသို့သွားပြီး ရှေ့ဆက်ရန် 2G ကိုခွင့်ပြုပါ။"</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"မိုဘိုင်းကွန်ရက် မရနိုင်ပါ။ ခေါ်ဆိုမှုပြုလုပ်ရန် ကြိုးမဲ့ကွန်ရက်သို့ ချိတ်ဆက်လိုက်ပါ။"</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"မိုဘိုင်းကွန်ရက် မရနိုင်ပါ။\n\nဖုန်းခေါ်ရန် ကြိုးမဲ့ကွန်ရက်သို့ ချိတ်ဆက်ပါ။\n\nဤစက်တွင် 2G ကိုပိတ်ထားပြီး ၎င်းက သင့်ချိတ်ဆက်နိုင်မှုအပေါ် သက်ရောက်နိုင်သည်။ ဆက်တင်များသို့သွားပြီး ရှေ့ဆက်ရန် 2G ကိုခွင့်ပြုပါ။"</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"ဖုန်းခေါ်ရန်အတွက်၊ သင့်လျော်သည့်နံပါတ် ရိုက်ထည့်ပါ။"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"ခေါ်ဆို၍ မရပါ။"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"ယခုအချိန်တွင် ခေါ်ဆိုမှု ထပ်မထည့်နိုင်ပါ။ မက်ဆေ့ဂျ်ပို့ဆောင်ခြင်းဖြင့်လည်း ဆက်သွယ်ရန်ကြိုးစားနိုင်ပါသည်။"</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"မိုဘိုင်း ရေဒီယိုစွမ်းအား"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"အသွင်တူပြုလုပ်သောစက် အလုပ်မလုပ်ပါ (အမှားရှာပြင်ခြင်းသာလျှင်)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mock Carrier Satellite Mode (အမှားရှာပြင်ခြင်း အတွက်သာ)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM ထဲရှိ လိပ်စာ စာအုပ်ကိုကြည့်ပါ"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"ခေါ်ဆိုရန် ကန့်သတ် နံပါတ်ကို ကြည့်မည်"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"ခေါ်ဆိုသည့်ဝန်ဆောင်မှုနံပါတ်အားကြည့်မည်"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 4ed61b8..53ee996 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Avslutt modusen for nødanrop for å gjøre et vanlig anrop."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Ikke registrert på nettverket."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilnettverket er ikke tilgjengelig."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobilnettverk er ikke tilgjengelig.\n\nKoble til et trådløst nettverk for å ringe.\n\n2G er deaktivert på denne enheten – dette kan påvirke tilkoblingen. Gå til Innstillinger og aktiver «Tillat 2G» for å fortsette."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobilnettverk er ikke tilgjengelig. Koble til et trådløst nettverk for å ringe."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobilnettverk er ikke tilgjengelig.\n\nKoble til et trådløst nettverk for å ringe.\n\n2G er deaktivert på denne enheten – dette kan påvirke tilkoblingen. Gå til Innstillinger og aktiver «Tillat 2G» for å fortsette."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Skriv inn et gyldig nummer for å plassere en samtale."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Anropet mislyktes."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Kan ikke legge til anropet akkurat nå. Du kan prøve å ta kontakt ved å sende en melding."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Strømforsyning for mobilradio"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Ute av drift-simulering (bare for feilsøkingsversjoner)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Satelittmodus for fiktiv operatør (feilsøkingsversjon)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Se adressebok for SIM-kort"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Vis forhåndsbestemte numre"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Vis tjenestenumre"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 1afc0ff..f6aba8a 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"गैर-आपत्कालीन कल गर्न आपत्कालीन कलब्याक मोडबाट निस्कनुहोस्।"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"नेटवर्कमा दर्ता भएको छैन।"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"मोबाइल नेटवर्क उपलब्ध छैन।"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"मोबाइल नेटवर्क उपलब्ध छैन।\n\nकल गर्न वायरलेस नेटवर्कमा कनेक्ट गर्नुहोस्।\n\nयो डिभाइसमा 2G नेटवर्क अफ गरिएको छ, यसै कारणले तपाईंको कनेक्टिभिटी प्रभावित भएको हुन सक्छ। सेटिङमा जानुहोस् र जारी राख्नका निम्ति 2G प्रयोग गर्ने अनुमति दिनुहोस्।"</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"मोबाइल नेटवर्क उपलब्ध छैन। कल गर्न तारविनाको नेटवर्कमा कनेक्ट गर्नुहोस्।"</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"मोबाइल नेटवर्क उपलब्ध छैन।\n\nकल गर्न वायरलेस नेटवर्कमा कनेक्ट गर्नुहोस्।\n\nयो डिभाइसमा 2G अफ गरिएको छ, यसै कारणले तपाईंको कनेक्टिभिटी प्रभावित भएको हुन सक्छ। सेटिङमा जानुहोस् र जारी राख्नका निम्ति 2G प्रयोग गर्ने अनुमति दिनुहोस्।"</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"एक कल गर्नको लागि, एक वैध नम्बर प्रविष्टि गर्नुहोस्।"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"कल विफल भयो।"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"यतिबेला कल गर्न सकिएन। तपाईंले कुनै सन्देश पठाएर सम्पर्क गर्ने प्रयास गर्न सक्नुहुन्छ।"</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"मोबाइल रेडियोको पावर"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"\"सेवा उपलब्ध छैन\" सिमुलेट गर्नुहोस् (डिबग बिल्डमा मात्र सिमुलेट गर्न मिल्छ)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"सेवा प्रदायकको स्याटेलाइट मोडको परीक्षण गर्नुहोस् (डिबग बिल्ड मात्र)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM को ठेगाना पुस्तिका हेर्नुहोस्"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"स्थिर डायल गर्ने नम्बरहरू हेर्नुहोस्"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"सेवामा डायल गर्ने नम्बरहरू हेर्नुहोस्"</string>
diff --git a/res/values-night/styles.xml b/res/values-night/styles.xml
index f7d831b..9774396 100644
--- a/res/values-night/styles.xml
+++ b/res/values-night/styles.xml
@@ -25,6 +25,11 @@
<item name="android:navigationBarDividerColor">@color/dialer_divider_color</item>
<item name="android:colorAccent">@color/dialer_theme_color</item>
<item name="android:dialogTheme">@style/DialerAlertDialogTheme</item>
+
+ <!--
+ TODO(b/309578419): Make activities handle insets properly and then remove this.
+ -->
+ <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
</style>
<style name="EmergencyInfoNameTextAppearance"
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 499756c..09d67d8 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Sluit de modus voor noodoproepen af om een niet-noodoproep te plaatsen."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Niet geregistreerd op netwerk."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobiel netwerk niet beschikbaar."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobiel netwerk niet beschikbaar.\n\nMaak verbinding met een draadloos netwerk om te bellen.\n\n2G is uitgezet op dit apparaat. Dit kan gevolgen hebben voor je connectiviteit. Ga naar Instellingen en zet 2G toestaan aan om door te gaan."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobiel netwerk is niet beschikbaar. Maak verbinding met een draadloos netwerk om te bellen."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobiel netwerk is niet beschikbaar.\n\nMaak verbinding met een draadloos netwerk om te bellen.\n\n2G staat uit op dit apparaat. Dit kan gevolgen hebben voor je connectiviteit. Ga naar Instellingen en zet 2G toestaan aan om door te gaan."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Als je wilt bellen, moet je een geldig nummer invoeren."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Gesprek mislukt."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Gesprek kan op dit moment niet worden toegevoegd. Je kunt contact opnemen door een bericht te sturen."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobiel radiovermogen"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"\'Niet in gebruik\' simuleren (alleen in foutopsporingsbuild)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Satellietmodus voor testprovider (alleen in foutopsporingsbuild)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Adresboek op simkaart bekijken"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Vaste nummers bekijken"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Servicenummers bekijken"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 68e48c1..2637939 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"ଗୋଟିଏ ସାଧାରଣ କଲ୍ କରିବା ପାଇଁ ଜରୁରିକାଳୀନ କଲବ୍ୟାକ୍ ମୋଡ୍ରୁ ବାହାରି ଆସନ୍ତୁ।"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"ନେଟ୍ୱର୍କରେ ପଞ୍ଜୀକୃତ କରାଯାଇନାହିଁ।"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"ମୋବାଇଲ୍ ନେଟ୍ୱର୍କ ଉପଲବ୍ଧ ନାହିଁ।"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"ମୋବାଇଲ ନେଟୱାର୍କ ଉପଲବ୍ଧ ନାହିଁ।\n\nଏକ କଲ କରିବାକୁ ଗୋଟିଏ ୱେୟାରଲେସ ନେଟୱାର୍କ ସହ କନେକ୍ଟ କରନ୍ତୁ।\n\nଏହି ଡିଭାଇସରେ 2Gକୁ ଅକ୍ଷମ କରାଯାଇଛି, ଯାହା ଆପଣଙ୍କ କନେକ୍ଟିଭିଟିକୁ ପ୍ରଭାବିତ କରୁଥାଇପାରେ। ଜାରି ରଖିବା ପାଇଁ ସେଟିଂସକୁ ଯାଇ \'2Gକୁ ଅନୁମତି ଦିଅନ୍ତୁ\'କୁ ସକ୍ଷମ କରନ୍ତୁ।"</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"ମୋବାଇଲ୍ ନେଟ୍ୱର୍କ ଉପଲବ୍ଧ ନାହିଁ। କଲ୍ କରିବା ପାଇଁ ଗୋଟିଏ ତାରବିହୀନ ନେଟ୍ୱର୍କରେ କନେକ୍ଟ କରନ୍ତୁ"</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"ମୋବାଇଲ ନେଟୱାର୍କ ଉପଲବ୍ଧ ନାହିଁ।\n\nଏକ କଲ କରିବାକୁ ଗୋଟିଏ ୱେୟାରଲେସ ନେଟୱାର୍କ ସହ କନେକ୍ଟ କରନ୍ତୁ।\n\nଏହି ଡିଭାଇସରେ 2Gକୁ ଅକ୍ଷମ କରାଯାଇଛି, ଯାହା ଆପଣଙ୍କ କନେକ୍ଟିଭିଟିକୁ ପ୍ରଭାବିତ କରୁଥାଇପାରେ। ଜାରି ରଖିବା ପାଇଁ ସେଟିଂସକୁ ଯାଇ \'2Gକୁ ଅନୁମତି ଦିଅନ୍ତୁ\'କୁ ସକ୍ଷମ କରନ୍ତୁ।"</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"ଗୋଟିଏ କଲ୍ କରିବା ପାଇଁ ଏକ ବୈଧ ନମ୍ବର୍ ପ୍ରବେଶ କରନ୍ତୁ।"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"କଲ୍ ହେଲା ନାହିଁ।"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"ଏବେ କଲ୍କୁ ଯୋଡ଼ାଯାଇପାରିବ ନାହିଁ। ଆପଣ ମେସେଜ୍ ପଠାଇ ସମ୍ପର୍କ କରିବା ପାଇଁ ଚେଷ୍ଟା କରିପାରନ୍ତି।"</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"ମୋବାଇଲ୍ ରେଡିଓ ପାୱାର୍"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"\"କାମ କରୁନାହିଁ\"ରେ ସିମୁଲେଟ କରନ୍ତୁ (କେବଳ ଡିବଗ ବିଲ୍ଡ)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"ମକ କେରିଅର ସେଟେଲାଇଟ ମୋଡ (କେବଳ ଡିବଗ ବିଲ୍ଡ)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"ସିମ୍ରେ ଥିବା ଠିକଣା ପୁସ୍ତକ ଦେଖନ୍ତୁ"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"ସ୍ଥାୟୀ ଡାଏଲିଂ ନମ୍ୱରଗୁଡ଼ିକୁ ଦେଖନ୍ତୁ"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"ସର୍ଭିସ୍ ଡାଏଲିଂ ନମ୍ୱରଗୁଡ଼ିକ ଦେଖନ୍ତୁ"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 9754981..20652e9 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"ਇੱਕ ਗ਼ੈਰ-ਅਪਾਤਕਾਲ ਕਾਲ ਕਰਨ ਲਈ ਅਪਾਤਕਾਲ ਕਾਲਬੈਕ ਮੋਡ ਤੋਂ ਬਾਹਰ ਆਓ।"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"ਨੈਟਵਰਕ ਤੇ ਰਜਿਸਟਰ ਨਹੀਂ ਕੀਤਾ।"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"ਮੋਬਾਈਲ ਨੈਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ।"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।\n\nਕਾਲ ਕਰਨ ਲਈ ਵਾਇਰਲੈੱਸ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ।\n\nਇਸ ਡੀਵਾਈਸ \'ਤੇ 2G ਬੰਦ ਹੈ, ਜੋ ਤੁਹਾਡੀ ਕਨੈਕਟੀਵਿਟੀ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦਾ ਹੈ। ਜਾਰੀ ਰੱਖਣ ਲਈ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਜਾ ਕੇ \'2G ਨੂੰ ਆਗਿਆ ਦਿਓ\' ਨੂੰ ਚਾਲੂ ਕਰੋ।"</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ ਹੈ। ਕਾਲ ਕਰਨ ਲਈ ਕਿਸੇ ਵਾਇਰਲੈੱਸ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ।"</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।\n\nਕਾਲ ਕਰਨ ਲਈ ਵਾਇਰਲੈੱਸ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ।\n\nਇਸ ਡੀਵਾਈਸ \'ਤੇ 2G ਬੰਦ ਹੈ, ਜੋ ਤੁਹਾਡੀ ਕਨੈਕਟੀਵਿਟੀ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰ ਸਕਦਾ ਹੈ। ਜਾਰੀ ਰੱਖਣ ਲਈ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਜਾ ਕੇ \'2G ਨੂੰ ਆਗਿਆ ਦਿਓ\' ਨੂੰ ਚਾਲੂ ਕਰੋ।"</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"ਇੱਕ ਕਾਲ ਕਰਨ ਲਈ, ਇੱਕ ਪ੍ਰਮਾਣਿਕ ਨੰਬਰ ਦਰਜ ਕਰੋ।"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"ਕਾਲ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ।"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"ਇਸ ਸਮੇਂ ਕਾਲ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ। ਤੁਸੀਂ ਇੱਕ ਸੁਨੇਹਾ ਭੇਜ ਕੇ ਸੰਪਰਕ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਸਕਦੇ ਹੋ।"</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"ਮੋਬਾਈਲ ਰੇਡੀਓ ਪਾਵਰ"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"\'ਸੇਵਾ ਵਿੱਚ ਨਹੀਂ\' ਨੂੰ ਸਿਮੂਲੇਟ ਕਰੋ (ਸਿਰਫ਼ ਡੀਬੱਗ ਬਿਲਡ)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"ਮੌਕ ਕੈਰੀਅਰ ਉਪਗ੍ਰਹਿ ਮੋਡ (ਸਿਰਫ਼ ਡੀਬੱਗ ਬਿਲਡ)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"ਸਿਮ ਦੀ ਪਤਾ ਬੁੱਕ ਦੇਖੋ"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"ਫਿਕਸਡ ਡਾਇਲਿੰਗ ਨੰਬਰ ਦੇਖੋ"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"ਸੇਵਾ ਡਾਇਲਿੰਗ ਨੰਬਰ ਦੇਖੋ"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index fb2d45d..c4835a6 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Aby zadzwonić normalnie, wyjdź z trybu alarmowego połączenia zwrotnego."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Nie zarejestrowano w sieci"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Sieć komórkowa jest niedostępna."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Sieć komórkowa jest niedostępna.\n\nAby zadzwonić, połącz się z siecią bezprzewodową.\n\nSieć 2G na tym urządzeniu jest wyłączona, co może mieć wpływ na łączność. Aby kontynuować, przejdź do Ustawień i włącz opcję „Zezwól na 2G”."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Sieć komórkowa jest niedostępna. Połącz się z siecią bezprzewodową, by zadzwonić."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Sieć komórkowa jest niedostępna.\n\nAby zadzwonić, połącz się z siecią bezprzewodową.\n\nSieć 2G na tym urządzeniu jest wyłączona, co może mieć wpływ na łączność. Aby kontynuować, przejdź do Ustawień i włącz opcję „Zezwól na 2G”."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Aby zadzwonić, wybierz prawidłowy numer."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Nie udało się połączyć."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"W tej chwili nie możesz zadzwonić. Zamiast tego możesz wysłać wiadomość."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Moc sygnału komórkowego"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Symulowana przerwa w działaniu usługi (tylko w kompilacji do debugowania)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Symulowany tryb satelitarny operatora (tylko kompilacja do debugowania)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Wyświetl książkę adresową z karty SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Wyświetl ustalone numery"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Wyświetl numery usług"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 464f46a..c9f2467 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Sair do modo de chamada de retorno de emergência para efetuar uma chamada que não é de emergência."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Sem registo na rede."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Rede móvel não disponível."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"A rede móvel não está disponível.\n\nLigue-se a uma rede sem fios para fazer uma chamada.\n\nO 2G está desativado neste dispositivo, o que pode estar a afetar a sua conetividade. Aceda às Definições e ative a opção Permitir 2G para continuar."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"A rede móvel não está disponível. Ligue-se a uma rede sem fios para efetuar uma chamada."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"A rede móvel não está disponível.\n\nLigue-se a uma rede sem fios para fazer uma chamada.\n\nO 2G está desativado neste dispositivo, o que pode estar a afetar a sua conetividade. Aceda às Definições e ative a opção Permitir 2G para continuar."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Para telefonar, introduza um número válido."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"A chamada falhou."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Não é possível adicionar a chamada neste momento. Pode tentar entrar em contacto ao enviar uma mensagem."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Potência do rádio móvel"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simule o modo fora de serviço (apenas na versão de depuração)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Modo satélite da operadora fictícia (apenas na versão de depuração)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Ver livro de endereços do SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Ver números autorizados"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Ver números de marcação de serviços"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index bf13d80..67e2e25 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Saia do modo de retorno de chamada de emergência para fazer uma chamada que não seja de emergência."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Não registrado na rede."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Rede móvel não disponível."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Rede móvel indisponível.\n\nConecte-se a uma rede sem fio para fazer uma ligação.\n\nO 2G está desativado neste dispositivo e isso pode afetar sua conectividade. Acesse \"Configurações\" e ative a opção \"Permitir 2G\" para continuar."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"A rede móvel não está disponível. Conecte-se a uma rede sem fio para fazer uma chamada."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"A rede móvel está indisponível.\n\nConecte-se a uma rede sem fio para fazer uma ligação.\n\nO 2G está desativado neste dispositivo e pode estar afetando sua conectividade. Acesse \"Configurações\" e ative a opção \"Permitir 2G\" para continuar."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Para realizar uma chamada, digite um número válido."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Falha na chamada."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Não é possível ligar no momento. Entre em contato enviando uma mensagem."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Potência do rádio celular"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simular o modo fora de serviço (somente build de depuração)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Simulação de modo satélite da operadora (somente build de depuração)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Ver o catálogo de endereços do chip"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Ver números de discagem fixa"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Ver números de discagem do serviço"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index d24ee16..009c54d 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Ieși din modul de apelare inversă de urgență pentru a efectua un apel care nu este de urgență."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Neînregistrat în rețea."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Rețeaua mobilă nu este disponibilă."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Rețeaua mobilă nu este disponibilă.\n\nConectează-te la o rețea wireless pentru a iniția un apel.\n\n2G este dezactivat pe acest dispozitiv, ceea ce poate afecta conectivitatea. Accesează Setări și activează setarea Permite 2G pentru a continua."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Rețeaua mobilă nu este disponibilă. Pentru a apela, conectează-te la o rețea wireless."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Rețeaua mobilă nu este disponibilă.\n\nConectează-te la o rețea wireless pentru a iniția un apel.\n\n2G este dezactivat pe acest dispozitiv, ceea ce poate afecta conectivitatea. Accesează Setări și activează setarea Permite 2G pentru a continua."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Pentru a apela, introdu un număr valid."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Apelul nu a fost inițiat."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Apelul nu poate fi inițiat în acest moment. Poți lua legătura cu persoana respectivă trimițându-i un mesaj."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Alimentare radio celular"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulează modul în afara ariei de acoperire (numai în versiunea pentru remedierea erorilor)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mod Satelit al operatorului de testare (numai versiune pentru remedierea erorilor)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Afișează agenda de pe SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Afișează numerele pentru apeluri restricționate"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Vezi numere de apelare de serviciu"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 3380676..ba3af0a 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Чтобы сделать обычный звонок, выйдите из режима экстренных обратных вызовов."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Нет регистрации в сети."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Мобильная сеть недоступна."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Мобильная сеть недоступна.\n\nЧтобы позвонить, подключитесь к беспроводной сети.\n\nНа этом устройстве отключена передача данных по сетям 2G, что может влиять на функции связи. Чтобы продолжить, перейдите в настройки и включите параметр \"Разрешить 2G\"."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Мобильная сеть недоступна. Чтобы позвонить, подключитесь к Wi-Fi."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Мобильная сеть недоступна.\n\nЧтобы позвонить, подключитесь к беспроводной сети.\n\nНа этом устройстве отключена передача данных по сетям 2G, что может влиять на функции связи. Чтобы продолжить, перейдите в настройки и включите параметр \"Разрешить 2G\"."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Недействительный номер."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Не удалось отправить вызов."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Не удается позвонить. Попробуйте отправить сообщение."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Мощность радиосигнала"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Моделирование нахождения вне зоны обслуживания (только отладочная сборка)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Режим спутниковой связи симуляции оператора (только отладочная сборка)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Посмотреть адресную книгу на SIM-карте"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Список разрешенных номеров"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Посмотреть номера служебного набора"</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index fb2f613..8c630be 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"හදිසි-නොවන ඇමතුමක් සිදු කිරීමට හදිසි අවස්ථා පසු ඇමතුම් ප්රකාරයෙන් ඉවත් වන්න."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"ජාලය මත ලියාපදිංචි වී නැත."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"ජංගම ජාලය නොමැත."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"ජංගම ජාලය නොලැබේ.\n\nඇමතුමක් කිරීමට රැහැන් රහිත ජාලයකට සම්බන්ධ කරන්න.\n\nමෙම උපාංගය මත 2G අබල කර ඇත, එය ඔබේ සම්බන්ධතාවට බලපාමින් තිබේවි. ඉදිරියට යාමට සැකසීම් වෙත ගොස් 2G හට ඉඩ දෙන්න සබල කරන්න."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"ජංගම ජාලය ලබා ගැනීමට නොහැකිය. ඇමතුමක් කිරීමට රැහැන් රහිත ජාලයකට සම්බන්ධ කරන්න."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"ජංගම ජාලය නොලැබේ.\n\nඇමතුමක් කිරීමට රැහැන් රහිත ජාලයකට සම්බන්ධ කරන්න.\n\nමෙම උපාංගය මත 2G අබල කර ඇත, එය ඔබේ සම්බන්ධතාවට බලපාමින් තිබේවි. ඉදිරියට යාමට සැකසීම් වෙත ගොස් 2G හට ඉඩ දෙන්න සබල කරන්න."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"ඇමතුමක් ලබාගැනීමට, වලංගු අංකයක් ලබාගන්න."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"ඇමතුම අසාර්ථක විය."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"ඇමතුම මෙම වේලාවේදී එක් කිරීමට නොහැකිය. ඔබට පණිවිඩයක් යැවීමෙන් ළඟා වීමට උත්සාහ කිරීමට හැකිය."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"ජංගම රේඩියෝ බලය"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"සේවයෙන් බැහැරව අනුකරණය කරන්න (නිදොස් තැනුම පමණි)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"ආදර්ශ වාහක චන්ද්රිකා ප්රකාරය (නිදොස් තැනීමට පමණි)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM ලිපින පොත බලන්න"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"ස්ථාවර ඇමතුම් අංක පෙන්වන්න"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"සේවා ඩයල් කිරීමේ අංක පෙන්වන්න"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 1bfd35f..84d6455 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Ak chcete volať štandardným spôsobom, ukončite režim tiesňového spätného volania."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Prihlásenie do siete nebolo úspešné."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobilná sieť nie je k dispozícii."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobilná sieť nie je k dispozícii.\n\nAk chcete volať, pripojte sa k bezdrôtovej sieti.\n\nV tomto zariadení nie je zapnuté pripojenie 2G, čo môže mať vplyv na možnosti pripojenia. Ak chcete pokračovať, prejdite do nastavení a zapnite možnosť Povoliť 2G."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobilná sieť nie je k dispozícii. Ak chcete volať, pripojte sa k bezdrôtovej sieti."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobilná sieť nie je k dispozícii.\n\nAk chcete volať, pripojte sa k bezdrôtovej sieti.\n\nV tomto zariadení je prístup k 2G vypnutý, čo môže mať vplyv na pripojenie. Ak chcete pokračovať, prejdite do nastavení a zapnite možnosť Povoliť 2G."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Ak chcete volať, zadajte platné číslo"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Hovor zlyhal."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Hovor sa momentálne nedá pridať. Môžete namiesto toho skúsiť poslať správu."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Sila signálu GSM"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulácia nefungujúceho zariadenia (možné iba v ladiacej zostave)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Simulácia satelitného režimu operátora (iba ladiaca zostava)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Zobraziť adresár SIM karty"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Zobraziť povolené čísla"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Zobraziť čísla volaní služieb"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 8b68df6..6a49ff3 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Če ne gre za klic v sili, zaprite način za povratni klici v sili."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Ni registrirano v omrežju."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Omrežje prenosnega telefona ni na voljo."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobilno omrežje ni na voljo.\n\nČe želite opraviti klic, vzpostavite povezavo z brezžičnim omrežjem.\n\nOmrežje 2G je v tej napravi onemogočeno, kar lahko vpliva na povezljivost. Odprite nastavitve in vklopite možnost »Omogoči 2G«, če želite nadaljevati."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobilno omrežje ni na voljo. Če želite opraviti klic, vzpostavite povezavo z brezžičnim omrežjem."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobilno omrežje ni na voljo.\n\nČe želite opraviti klic, vzpostavite povezavo z brezžičnim omrežjem.\n\nOmrežje 2G je v tej napravi onemogočeno, kar lahko vpliva na povezljivost. Odprite nastavitve in vklopite možnost »Omogoči 2G«, če želite nadaljevati."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Če želite opraviti klic, vnesite veljavno številko."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Klic ni uspel."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Trenutno ni mogoče dodati klica. Poskusite poslati sporočilo."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Moč radia mobilne naprave"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulacija nedelovanja (samo za gradnjo za odpravljanje napak)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Lažni satelitski način operaterja (samo gradnja za odpravljanje napak)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Prikaži imenik na kartici SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Prikaži številke za zaporo odhodnih klicev"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Prikaži številke za klicanje storitev"</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 0b46e90..f5d3aba 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Dil nga modaliteti i kthimit të telefonatës së urgjencës për të bërë një telefonatë jo urgjente."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"I paregjistruar në rrjet."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Rrjeti celular nuk mundësohet."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Rrjeti celular nuk ofrohet.\n\nLidhu me një rrjet wireless për të bërë një telefonatë.\n\n2G është çaktivizuar në këtë pajisje, e cila mund të ketë ndikim te lidhshmëria. Shko te \"Cilësimet\" dhe aktivizo \"Lejo 2G\" për të vazhduar."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Rrjeti celular nuk ofrohet. Lidhu me një rrjet wireless për të bërë një telefonatë."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Rrjeti celular nuk ofrohet.\n\nLidhu me një rrjet wireless për të bërë një telefonatë.\n\n2G është çaktivizuar në këtë pajisje, e cila mund të ketë ndikim te lidhshmëria. Shko te \"Cilësimet\" dhe aktivizo \"Lejo 2G\" për të vazhduar."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Për të kryer një telefonatë, fut një numër të vlefshëm."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Thirrja dështoi."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Telefonata nuk mund të shtohet në këtë moment. Mund të provosh të kontaktosh duke dërguar një mesazh."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Fuqia e radios së rrjetit celular"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulo gjendjen jashtë shërbimit (vetëm versioni i korrigjimit)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Simulo modalitetin e satelitit të operatorit celular (vetëm versioni i korrigjimit)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Shiko librin e adresave të kartës SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Shiko numrat me telefonim të përzgjedhur"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Shiko numrat e telefonit të shërbimit"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index ab43cde..e8e3d37 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Изађите из режима хитног повратног позива да бисте упутили позив који није хитан."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Није регистровано на мрежи."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Мобилна мрежа није доступна."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Мобилна мрежа није доступна.\n\nПовежите се на бежичну мрежу да бисте упутили позив.\n\n2G је онемогућен на овом уређају, што може да утиче на повезивање. Идите у Подешавања и омогућите опцију Дозволи 2G да бисте наставили."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Мобилна мрежа није доступна. Повежите се на бежичну да бисте упутили позив."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Мобилна мрежа није доступна.\n\nПовежите се на бежичну мрежу да бисте упутили позив.\n\n2G је онемогућен на овом уређају, што може да утиче на повезивање. Идите у Подешавања и омогућите опцију Дозволи 2G да бисте наставили."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Да бисте упутили позив, унесите важећи број."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Позив није успео."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Додавање позива тренутно није могуће. Можете да покушате да остварите контакт помоћу поруке."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Напајање за радио на мобилним уређајима"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Симулација не функционише (само верзија са отклоњеним грешкама)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Лажни режим мобилног оператера за слање преко сателита (само верзија за отклањање грешака)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Прикажи адресар SIM-а"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Прикажи бројеве за фиксно бирање"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Прикажи бројеве за сервисно бирање"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 2fa62e7..85b070a 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Avsluta läget för återuppringning vid nödsamtal om du vill ringa ett vanligt samtal."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Inte registrerat på nätverk."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Inget mobilt nätverk är tillgängligt."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Det finns inga tillgängliga mobilnätverk.\n\nAnslut till ett trådlöst nätverk om du vill ringa.\n\n2G har inaktiverats på den här enheten, vilket kan påverka anslutningen. Öppna inställningarna och aktivera Tillåt 2G om du vill fortsätta."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Det finns inga tillgängliga mobilnätverk. Anslut till ett trådlöst nätverk om du vill ringa."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Det finns inget mobilnätverk.\n\nAnslut till ett trådlöst nätverk om du vill ringa ett samtal.\n\n2G har inaktiverats på den här enheten, vilket kan påverka anslutningen. Öppna inställningarna och aktivera Tillåt 2G om du vill fortsätta."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Ange ett giltigt nummer om du vill ringa ett samtal."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Det gick inte att koppla samtalet."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Det går inte att lägga till samtalet just nu. Ta istället kontakt genom att skicka ett meddelande."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Strömförsörjning för mobilradio"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Simulera ur funktion (endast felsökningsversion)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Simulering av operatörssatellitläge (version endast för felsökning)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Visa SIM-adressbok"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Visa Fasta nummer"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Visa tjänstenummer"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 97b766a..320588c 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Ondoka kwenye hali ya kupiga simu za dharura ili upige simu zisizokuwa za dharura."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Haijasajiliwa kwa mitandao"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mtandao wa simu haupatikani."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mtandao wa simu haupatikani.\n\nUnganisha kwenye mtandao pasiwaya ili upige simu.\n\n2G imezimwa kwenye kifaa hiki, hali ambayo huenda inaathiri muunganisho wako. Nenda kwenye Mipangilio kisha uwashe \'Ruhusu 2G\' ili uendelee."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mtandao wa simu za mkononi haupatikani. Unganisha kwenye mtandao pasiwaya ili upige simu."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mtandao wa simu haupatikani.\n\nUnganisha kwenye mtandao pasiwaya ili upige simu.\n\n2G imezimwa kwenye kifaa hiki, hali ambayo huenda inaathiri muunganisho wako. Nenda kwenye Mipangilio kisha uwashe \'Ruhusu 2G\' ili uendelee."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Ili upige simu, weka namba sahihi."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Imeshindwa kupiga simu."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Simu haiwezi kuongezwa kwa sasa. Unaweza kujaribu kuwasiliana kwa kutuma ujumbe."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Nishati ya Redio ya Vifaa vya Mkononi"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Kifaa cha Kuiga Hakifanyi Kazi (Muundo wa Utatuzi pekee)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Hali ya Setilaiti ya Jaribio la Mtoa Huduma (Muundo wa Utatuzi pekee)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Angalia Kitabu cha Anwani katika SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Ona Nambari za Simu Zilizobainishwa"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Angalia Nambari Zilizowekwa na Mtoa Huduma"</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index eae57cb..7517612 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"வழக்கமான அழைப்பிற்கு, அவசரகாலத் திரும்ப அழைக்கும் பயன்முறையிலிருந்து வெளியேறவும்."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"நெட்வொர்க்கில் பதிவுசெய்யப்படவில்லை."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"மொபைல் நெட்வொர்க் கிடைக்கவில்லை."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"மொபைல் நெட்வொர்க் கிடைக்கவில்லை.\n\nஅழைப்பைச் செய்ய வயர்லெஸ் நெட்வொர்க்குடன் இணைக்கவும்.\n\nஇந்தச் சாதனத்தில் 2G முடக்கப்பட்டுள்ளதால் இணைப்பு பாதிக்கப்பட்டிருக்கலாம். தொடர, அமைப்புகளுக்குச் சென்று \'2G சேவையை அனுமதி\' என்பதை இயக்கவும்."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"மொபைல் நெட்வொர்க் கிடைக்கவில்லை. அழைக்க, வயர்லெஸ் நெட்வொர்க்குடன் இணைக்கவும்."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"மொபைல் நெட்வொர்க் கிடைக்கவில்லை.\n\nஅழைப்பைச் செய்ய வயர்லெஸ் நெட்வொர்க்குடன் இணைக்கவும்.\n\nஇந்தச் சாதனத்தில் 2G முடக்கப்பட்டுள்ளதால் இணைப்பு பாதிக்கப்பட்டிருக்கலாம். தொடர, அமைப்புகளுக்குச் சென்று \'2G சேவையை அனுமதி\' என்பதை இயக்கவும்."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"அழைக்க, சரியான எண்ணை உள்ளிடவும்."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"அழைப்பு தோல்வியடைந்தது."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"தற்போது அழைக்க முடியவில்லை. செய்தியை அனுப்பி, தொடர்புகொள்ள முயலவும்."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"மொபைல் ரேடியோ பவர்"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"சாதனம் \'வேலை செய்யவில்லை\' என்பதை சிமுலேட் செய்தல் (பிழைதிருத்தப் பதிப்பில் மட்டும்)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mock மொபைல் நிறுவன சாட்டிலைட் பயன்முறை (பிழைதிருத்த பதிப்பு மட்டும்)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"சிம் முகவரிப் புத்தகத்தைக் காட்டு"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"நிலையான அழைப்பு எண்களைக் காட்டு"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"சேவை அழைப்பு எண்களைக் காட்டு"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index db81f01..517d03e 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"సాధారణ కాల్ చేయడానికి అత్యవసర కాల్బ్యాక్ మోడ్ నుండి నిష్క్రమించండి."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"నెట్వర్క్లో నమోదు కాలేదు."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"మొబైల్ నెట్వర్క్ అందుబాటులో లేదు."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"మొబైల్ నెట్వర్క్ అందుబాటులో లేదు.\n\nకాల్ చేయడానికి వైర్లెస్ నెట్వర్క్కు కనెక్ట్ చేయండి.\n\nఈ పరికరంలో 2G డిజేబుల్ చేయబడింది, ఇది మీ కనెక్టివిటీని ప్రభావితం చేస్తూ ఉండవచ్చు. సెట్టింగ్లకు వెళ్లి, \'కొనసాగించడానికి 2Gని అనుమతించండి\'ని ఎనేబుల్ చేయండి."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"మొబైల్ నెట్వర్క్ అందుబాటులో లేదు. కాల్ చేయడానికి వైర్లెస్ నెట్వర్క్కు కనెక్ట్ చేయండి."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"మొబైల్ నెట్వర్క్ అందుబాటులో లేదు.\n\nకాల్ చేయడానికి వైర్లెస్ నెట్వర్క్కు కనెక్ట్ చేయండి.\n\nఈ పరికరంలో 2G డిజేబుల్ చేయబడింది, ఇది మీ కనెక్టివిటీని ప్రభావితం చేస్తూ ఉండవచ్చు. సెట్టింగ్లకు వెళ్లి, \'కొనసాగించడానికి 2Gని అనుమతించండి\'ని ఎనేబుల్ చేయండి."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"కాల్ చేయడానికి, చెల్లుబాటు అయ్యే నంబర్ను నమోదు చేయండి."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"కాల్ విఫలమైంది."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"ఈ సమయంలో కాల్ జోడించబడదు. మీరు మెసేజ్ను పంపడం ద్వారా సంప్రదించవచ్చు."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"మొబైల్ రేడియో పవర్"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"పరికరాన్ని సిమ్యులేట్ చేయడం అందుబాటులో లేదు (డీబగ్ బిల్డ్ మోడ్లో మాత్రమే)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"మాక్ క్యారియర్ శాటిలైట్ మోడ్ (డీబగ్ బిల్డ్ మోడ్లో మాత్రమే)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM అడ్రస్ పుస్తకాన్ని చూడండి"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"ఫిక్స్డ్ డయలింగ్ నంబర్లను చూడండి"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"సర్వీస్ డయలింగ్ నంబర్లను చూడండి"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 2358773..224677f 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"โปรดออกจากโหมดการโทรกลับกรณีฉุกเฉินเพื่อโทรไปยังหมายเลขที่ไม่ใช่หมายเลขฉุกเฉิน"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"ยังไม่ได้ลงทะเบียนบนเครือข่าย"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"เครือข่ายมือถือใช้งานไม่ได้"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"เครือข่ายมือถือไม่พร้อมใช้งาน\n\nเชื่อมต่อเครือข่ายไร้สายเพื่อโทรออก\n\nอุปกรณ์นี้ปิดใช้งาน 2G อยู่ซึ่งอาจส่งผลต่อการเชื่อมต่อ โปรดไปที่การตั้งค่าและเปิด \"อนุญาตให้ใช้ 2G\" เพื่อดำเนินการต่อ"</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"เครือข่ายมือถือไม่พร้อมใช้งาน โปรดเชื่อมต่อเครือข่ายไร้สายเพื่อโทรออก"</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"เครือข่ายมือถือไม่พร้อมใช้งาน\n\nเชื่อมต่อเครือข่ายไร้สายเพื่อโทรออก\n\nอุปกรณ์นี้ปิดใช้งาน 2G อยู่ซึ่งอาจส่งผลต่อการเชื่อมต่อ โปรดไปที่การตั้งค่าและเปิด \"อนุญาตให้ใช้ 2G\" เพื่อดำเนินการต่อ"</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"หากต้องการโทรออก โปรดป้อนหมายเลขที่ถูกต้อง"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"การโทรล้มเหลว"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"เพิ่มการโทรไม่ได้ในขณะนี้ คุณสามารถพยายามติดต่อได้โดยการส่งข้อความ"</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"กำลังส่งของวิทยุเครือข่ายมือถือ"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"จําลองความไม่พร้อมให้บริการ (บิลด์การแก้ไขข้อบกพร่องเท่านั้น)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"โหมดดาวเทียมของผู้ให้บริการจำลอง (บิลด์การแก้ไขข้อบกพร่องเท่านั้น)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"ดูสมุดที่อยู่ของซิม"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"ดูการจำกัดหมายเลขโทรออก"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"ดูหมายเลขรับบริการโทรออก"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index e7fc44e..a3c6666 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Lumabas sa emergency callback mode upang makapagsagawa ng hindi pang-emergency na pagtawag."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Hindi nakarehistro sa network."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Hindi available ang mobile network."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Hindi available ang mobile network.\n\nKumonekta sa wireless network para tumawag.\n\nNaka-disable ang 2G sa device na ito, na posibleng nakakaapekto sa iyong pagkakonekta. Pumunta sa Mga Setting at i-enable ang Payagan ang 2G para magpatuloy."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Hindi available ang mobile network. Kumonekta sa isang wireless network upang tumawag."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Hindi available ang mobile network.\n\nKumonekta sa wireless network para tumawag.\n\nNaka-disable ang 2G sa device na ito, na posibleng nakakaapekto sa iyong pagkakonekta. Pumunta sa Mga Setting at i-enable ang Payagan ang 2G para magpatuloy."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Upang tumawag, maglagay ng wastong numero."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Nabigo ang tawag."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Hindi maidaragdag ang tawag na ito sa ngayon. Maaari mong subukang makipag-ugnayan sa pamamagitan ng pagpapadala ng isang mensahe."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobile Radio Power"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Mag-simulate ng Hindi Gumagana (Build sa Pag-debug lang)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Satellite Mode ng Mock Carrier (Debug Build lang)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Tingnan ang Address Book ng SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Tingnan ang Mga Fixed Dialing Number"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Tingnan ang Mga Service Dialing Number"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index da502a8..eadf7e0 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Acil durum çağrısı dışında bir çağrı yapmak için acil durumda geri aranma modundan çıkın."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Ağda kayıtlı değil."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mobil ağ kullanılamıyor."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobil ağ kullanılamıyor.\n\nArama yapmak için kablosuz ağa bağlanın.\n\nBu cihazda 2G devre dışı olduğundan bağlantınız etkilenebilir. Devam etmek için Ayarlar\'a gidip \"2G\'ye izin ver\" ayarını etkinleştirin."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobil ağ kullanılamıyor. Telefon etmek için kablosuz ağa bağlanın."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobil ağ kullanılamıyor.\n\nArama yapmak için kablosuz ağa bağlanın.\n\nBu cihazda 2G devre dışı olduğundan bağlantınız etkilenebilir. Devam etmek için Ayarlar\'a gidip \"2G\'ye izin ver\" ayarını etkinleştirin."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Arama yapmak için geçerli bir numara girin."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Sesli arama başarısız oldu."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Çağrı şu anda eklenemiyor. Mesaj göndererek ulaşmayı deneyebilirsiniz."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Mobil Radyo Gücü"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Hizmet Dışı Simülasyonu (Yalnızca Hata Ayıklama Derlemesi)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Örnek operatör uydu modu (yalnızca hata ayıklama derlemesi)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM Adres Defterini Görüntüle"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Sabit Arama Numaralarını Görüntüle"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Hizmet Arama Numaralarını Görüntüle"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index c435493..63f69d8 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Щоб зателефонувати на звичайний номер, вимкніть режим екстрених викликів."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Не зареєстровано в мережі."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Мобільна мережа недоступна."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Мобільна мережа недоступна.\n\nЩоб зателефонувати, підключіться до бездротової мережі.\n\nНа цьому пристрої вимкнено 2G, що може вплинути на з’єднання. Щоб продовжити, перейдіть у налаштування й увімкніть \"Дозволити 2G\"."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Мобільна мережа недоступна. Щоб зателефонувати, під’єднайтеся до бездротової мережі."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Мобільна мережа недоступна.\n\nЩоб зателефонувати, підключіться до бездротової мережі.\n\nНа цьому пристрої вимкнено 2G, що може вплинути на з’єднання. Щоб продовжити, перейдіть у налаштування й увімкніть \"Дозволити 2G\"."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Щоб зателефонувати, введіть дійсний номер."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Не вдалося здійснити виклик."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Не вдається додати виклик. Спробуйте надіслати повідомлення."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Потужність мобільного радіо"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Імітація знаходження поза зоною обслуговування (лише складання для налагодження)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Режим супутника оператора Mock (лише складання для налагодження)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Переглянути адресну книгу SIM-карти"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Переглянути фіксовані номери"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Переглянути службові номери"</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index eb36a08..5f5bf30 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"غیر ایمرجنسی کال کرنے کیلئے ایمرجنسی کال بیک موڈ سے اخراج کریں۔"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"نیٹ ورک پر رجسٹرڈ نہیں ہے۔"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"موبائل نیٹ ورک دستیاب نہیں ہے۔"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"موبائل نیٹ ورک دستیاب نہیں ہے۔\n\nکال کرنے کے لیے وائرلیس نیٹ ورک سے منسلک ہوں۔\n\n2G اس آلے پر غیر فعال ہے، جو آپ کی کنیکٹیوٹی کو متاثر کر سکتا ہے۔ ترتیبات پر جائیں اور \'2G کو جاری رکھنے کی اجازت دیں\' کو فعال کریں۔"</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"موبائل نیٹ ورک دستیاب نہیں ہے۔ کال کرنے کیلئے کسی وائرلیس نیٹ ورک سے منسلک ہوں۔"</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"موبائل نیٹ ورک دستیاب نہیں ہے۔\n\nکال کرنے کے لیے وائرلیس نیٹ ورک سے منسلک ہوں۔\n\n2G اس آلے پر غیر فعال ہے، جو آپ کی کنیکٹیوٹی کو متاثر کر سکتا ہے۔ ترتیبات پر جائیں اور \'2G کو جاری رکھنے کی اجازت دیں\' کو فعال کریں۔"</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"کال کرنے کیلئے، ایک درست نمبر درج کریں۔"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"کال ناکام ہوگئی۔"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"اس وقت کال شامل نہیں کی جا سکتی۔ آپ ایک پیغام بھیج کر رابطہ کرنے کی کوشش کر سکتے ہیں۔"</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"موبائل ریڈیو پاور"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"\'سروس دستیاب نہیں ہے\' موڈ کو سمیولیٹ کریں (صرف ڈیبگ بلڈ کیلئے)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"موک کیریئر سیٹلائٹ موڈ (صرف ڈیبگ بلڈ)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM ایڈریس بک دیکھیں"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"فکسڈ ڈائلنگ نمبرز دیکھیں"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"سروس ڈائلنگ نمبرز دیکھیں"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 8f614e2..d07054a 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Odatiy qo‘ng‘iroq qilish uchun favqulodda qayta qo‘ng‘iroq rejimidan chiqing."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Tarmoqda ro‘yxatdan o‘tmagan."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Uyali tarmoq mavjud emas."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Mobil tarmoq ishlamayapti.\n\nTelefon qilish uchun simsiz tarmoqqa ulaning.\n\nBu qurilmada 2G yoqilmagan va aloqaga taʼsir qilishi mumkin. Davom etish uchun Sozlamalar orqali 2G ulanishga ruxsat bering."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Mobil tarmoqdan foydalanib bo‘lmaydi. Qo‘ng‘iroq qilish uchun Wi-Fi tarmog‘iga ulaning."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Mobil tarmoq ishlamayapti.\n\nTelefon qilish uchun simsiz tarmoqqa ulaning.\n\nBu qurilmada 2G yoqilmagan va aloqaga taʼsir qilishi mumkin. Davom etish uchun Sozlamalar orqali 2G ulanishga ruxsat bering."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Qo‘ng‘iroq qilish uchun raqamni to‘g‘ri kiriting."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Chaqiruv amalga oshmadi."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Qo‘ng‘iroq qilib bo‘lmayapti. Xabar yuborib ko‘ring."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Radio signal quvvati"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Xizmatdan tashqari simulyatsiya (faqat nosozliklarni aniqlash dasturi uchun)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Soxta operator sputnik rejimi (faqat debag nashrida)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"SIM kartadagi abonentlar ro‘yxatini ochish"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Ruxsat etilgan raqamlar ro‘yxatini ochish"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Xizmatlarni terish raqamlarini ochish"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 126e715..40a3e50 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Thoát khỏi chế độ gọi lại khẩn cấp để thực hiện cuộc gọi không khẩn cấp."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Chưa được đăng ký trên mạng."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Mạng di động không khả dụng."</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Không có mạng di động.\n\nHãy kết nối với mạng không dây để gọi điện.\n\n2G đã bị tắt trên thiết bị này. Điều này có thể ảnh hưởng đến khả năng kết nối của bạn. Chuyển đến phần Cài đặt rồi bật tuỳ chọn Cho phép 2G để tiếp tục."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Hiện không có mạng di động. Hãy kết nối với mạng không dây để thực hiện cuộc gọi."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Không có mạng di động.\n\nHãy kết nối với mạng không dây để gọi điện.\n\n2G đã bị tắt trên thiết bị này. Điều này có thể ảnh hưởng đến khả năng kết nối của bạn. Chuyển đến phần Cài đặt rồi bật cài đặt Cho phép 2G để tiếp tục."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Để thực hiện cuộc gọi, hãy nhập một số hợp lệ."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Cuộc gọi không thành công."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Không thể thêm cuộc gọi tại thời điểm này. Bạn có thể cố gắng liên hệ bằng cách gửi tin nhắn."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Cường độ của sóng di động"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Mô phỏng thiết bị không hoạt động (chỉ dành cho bản gỡ lỗi)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Mô phỏng chế độ vệ tinh của nhà mạng (chỉ dành cho Bản gỡ lỗi)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Xem sổ địa chỉ trên SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Xem số gọi định sẵn"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Xem số quay số dịch vụ"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index c9734ed..4114bad 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"要拨打非紧急电话,请先退出紧急回拨模式。"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"尚未注册网络。"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"无法连接到移动网络"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"移动网络不可用。\n\n需连接至无线网络才能拨打电话。\n\n此设备已停用 2G,这可能会影响您的连接。如需继续操作,请前往“设置”并启用“允许启用 2G”。"</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"移动网络不可用。需连接至无线网络才能拨打电话。"</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"移动网络不可用。\n\n需连接至无线网络才能拨打电话。\n\n此设备已停用 2G,这可能会影响您的连接。如需继续操作,请前往“设置”并启用“允许启用 2G”。"</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"要拨打电话,请输入有效的电话号码。"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"无法通话。"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"暂时无法拨打电话。您可以尝试通过发送信息来联系对方。"</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"移动无线装置电源"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"模拟服务终止(仅限调试 build)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"模拟运营商卫星模式(仅限调试 build)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"查看 SIM 卡通讯录"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"查看固定拨号号码"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"查看服务拨号号码"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 05f78e7..af63bad 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"離開緊急回撥模式即可撥打非緊急電話。"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"未在網絡上完成註冊。"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"無法使用流動網絡。"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"無法使用流動網絡。\n\n必須連接無線網絡才可打電話。\n\n此裝置已停用 2G,可能影響到裝置的連接性。請先前往「設定」開啟「允許 2G」再試。"</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"無法使用流動網絡。請連接無線網絡,以撥打電話。"</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"無法使用流動網絡。\n\n請連接無線網絡,以撥打電話。\n\n2G 已在此裝置停用,這可能會影響裝置的連接性。請前往「設定」並開啟「允許 2G」以繼續。"</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"要撥打電話,請輸入有效的號碼。"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"無法接通。"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"目前無法新增通話。你可以改以傳送短訊聯絡對方。"</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"流動無線電的電源"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"模擬沒有服務 (僅限偵錯版本)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"模擬流動網絡供應商衛星模式 (僅限偵錯版本)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"查看 SIM 卡通訊錄"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"查看固定撥號"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"查看服務撥號"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 6975707..f29e853 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"結束緊急回撥模式,以便撥打非緊急電話。"</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"尚未註冊網路。"</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"無法使用 Google 行動服務網路。"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"無法使用行動網路。\n\n如要撥打電話,請連線至無線網路。\n\n這部裝置已停用 2G,這可能會影響連線能力。請前往「設定」並啟用「允許啟用 2G」,再繼續操作。"</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"無法使用行動網路。連上 Wi-Fi 網路即可撥打電話。"</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"無法使用行動網路。\n\n如要撥打電話,請連線至無線網路。\n\n這部裝置已停用 2G,這可能會影響連線能力。請前往「設定」並啟用「允許啟用 2G」,再繼續操作。"</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"如要撥打電話,請輸入有效的號碼。"</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"無法通話。"</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"目前無法新增通話,你可以試著傳送簡訊聯絡對方。"</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"行動無線電電源"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"模擬無法使用服務的情況 (僅限偵錯版本)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"模擬電信業者衛星模式 (僅限偵錯版本)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"查看 SIM 通訊錄"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"查看固定撥號"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"查看服務撥號號碼"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 0059afb..ef0abfc 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -542,7 +542,9 @@
<string name="incall_error_ecm_emergency_only" msgid="5622379058883722080">"Phuma kwimodi yokushayela emuva yesiko esiphuthumayo ukuze wenze ikholi yemodi engaphuthumi."</string>
<string name="incall_error_emergency_only" msgid="8786127461027964653">"Ayibhalisiwe kwinethiwekhi."</string>
<string name="incall_error_out_of_service" msgid="1927265196942672791">"Inethiwekhi yefoni ayitholakali"</string>
+ <string name="incall_error_out_of_service_2g" msgid="904434080740846116">"Inethiwekhi yeselula ayitholakali.\n\nXhuma kunethiwekhi e-wireless ukuze ufone.\n\nU-2G ukhutshaziwe kule divayisi, okungenzeka kunomthelela ekuxhumaneni kwakho. Iya Kumasethingi bese uvula u-Vumela u-2G ukuze uqhubeke."</string>
<string name="incall_error_out_of_service_wfc" msgid="4497663185857190885">"Inethiwekhi yeselula ayitholakali. Xhumeka kunethiwekhi engenantambo ukuze wenze ikholi."</string>
+ <string name="incall_error_out_of_service_wfc_2g_user" msgid="8218768986365299663">"Inethiwekhi yeselula ayitholakali.\n\nXhuma kunethiwekhi e-wireless ukuze ufone.\n\nU-2G ukhutshaziwe kule divayisi, okungenzeka kunomthelela ekuxhumaneni kwakho. Iya Kumasethingi bese uvula u-Vumela u-2G ukuze uqhubeke."</string>
<string name="incall_error_no_phone_number_supplied" msgid="8680831089508851894">"Ukuze wenze ikholi, faka inombolo evumelekile."</string>
<string name="incall_error_call_failed" msgid="393508653582682539">"Ikholi ihlulekile."</string>
<string name="incall_error_cannot_add_call" msgid="5425764862628655443">"Ikholi ayikwazi ukungezwa ngalesi sikhathi. Ungazama ukufinyelela ngokuthumela umlayezo."</string>
@@ -843,6 +845,8 @@
<string name="radio_info_radio_power" msgid="8805595022160471587">"Amandla erediyo yeselula"</string>
<string name="simulate_out_of_service_string" msgid="7787925611727597193">"Lingisa okuthi Ayikho Isevisi (Umakhiwo Wokususa Iphutha kuphela)"</string>
<string name="mock_carrier_roaming_satellite_string" msgid="4796300252858292593">"Imodi Yesethelayithi Yenkampani Yenethiwekhi ye-Mock (Susa Iphutha Esakhiweni kuphela)"</string>
+ <!-- no translation found for esos_satellite_string (7291726039210940609) -->
+ <skip />
<string name="radioInfo_menu_viewADN" msgid="4533179730908559846">"Buka incwadi yekheli le-SIM"</string>
<string name="radioInfo_menu_viewFDN" msgid="1847236480527032061">"Buka Izinombolo Zokudayela Okungaguquki"</string>
<string name="radioInfo_menu_viewSDN" msgid="2613431584522392842">"Buka Izinombolo Zokudayela Isevisi"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 31791a6..a191d1b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1206,8 +1206,13 @@
<string name="incall_error_emergency_only">Not registered on network.</string>
<!-- In-call screen: call failure message displayed in an error dialog -->
<string name="incall_error_out_of_service">Mobile network not available.</string>
+ <!-- In-call screen: call failure message displayed in an error dialog if 2G is disabled -->
+ <string name="incall_error_out_of_service_2g">Mobile network not available.\n\nConnect to a wireless network to make a call.\n\n2G is disabled on this device, which may be impacting your connectivity. Go to Settings and enable "Allow 2G" to continue.</string>
<!-- In-call screen: call failure message displayed in an error dialog -->
<string name="incall_error_out_of_service_wfc">Mobile network is not available. Connect to a wireless network to make a call.</string>
+ <!-- In-call screen: call failure message displayed in an error dialog if the user disabled 2G -->
+ <string name="incall_error_out_of_service_wfc_2g_user">Mobile network is not available.\n\nConnect to a wireless network to make a call.\n\n2G is disabled on this device, which may be impacting your connectivity. Go to Settings and enable "Allow 2G" to continue.</string>
+
<!-- In-call screen: call failure message displayed in an error dialog -->
<string name="incall_error_no_phone_number_supplied">To place a call, enter a valid number.</string>
<!-- In-call screen: call failure message displayed in an error dialog -->
@@ -2187,6 +2192,8 @@
<string name="radio_info_nr_frequency">NR Frequency:</string>
<!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
<string name="radio_info_network_slicing_config" translatable="false">Network Slicing Config:</string>
+ <!-- Radio Info screen. Label for a status item. Used for diagnostic info screens, precise translation isn't needed -->
+ <string name="radio_info_euicc_info" translatable="false">eUICC info:</string>
<!-- Band Mode Selection -->
<!-- Band mode screen. Title of activity. -->
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 19798f0..435e3a6 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -202,6 +202,11 @@
<item name="android:colorAccent">@color/dialer_theme_color</item>
<item name="android:dialogTheme">@style/DialerAlertDialogTheme</item>
<item name="android:homeAsUpIndicator">@drawable/ic_back_arrow</item>
+
+ <!--
+ TODO(b/309578419): Make activities handle insets properly and then remove this.
+ -->
+ <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
</style>
<style name="DialerAlertDialogTheme"
diff --git a/src/com/android/phone/CallForwardEditPreference.java b/src/com/android/phone/CallForwardEditPreference.java
index d1c8303..b877112 100644
--- a/src/com/android/phone/CallForwardEditPreference.java
+++ b/src/com/android/phone/CallForwardEditPreference.java
@@ -26,6 +26,7 @@
import com.android.internal.telephony.CommandException;
import com.android.internal.telephony.CommandsInterface;
import com.android.internal.telephony.Phone;
+import com.android.internal.telephony.flags.Flags;
import java.util.HashMap;
import java.util.Locale;
@@ -34,6 +35,9 @@
private static final String LOG_TAG = "CallForwardEditPreference";
private static final String SRC_TAGS[] = {"{0}"};
+
+ private static final int DEFAULT_NO_REPLY_TIMER_FOR_CFNRY = 20;
+
private CharSequence mSummaryOnTemplate;
/**
* Remembers which button was clicked by a user. If no button is clicked yet, this should have
@@ -154,7 +158,14 @@
.getCarrierConfigForSubId(mPhone.getSubId());
if (carrierConfig.getBoolean(
CarrierConfigManager.KEY_SUPPORT_NO_REPLY_TIMER_FOR_CFNRY_BOOL, true)) {
- time = 20;
+ if (Flags.setNoReplyTimerForCfnry()) {
+ // Get timer value from carrier config
+ time = carrierConfig.getInt(
+ CarrierConfigManager.KEY_NO_REPLY_TIMER_FOR_CFNRY_SEC_INT,
+ DEFAULT_NO_REPLY_TIMER_FOR_CFNRY);
+ } else {
+ time = DEFAULT_NO_REPLY_TIMER_FOR_CFNRY;
+ }
}
}
final String number = getPhoneNumber();
diff --git a/src/com/android/phone/CarrierConfigLoader.java b/src/com/android/phone/CarrierConfigLoader.java
index 9b71919..47fd96e 100644
--- a/src/com/android/phone/CarrierConfigLoader.java
+++ b/src/com/android/phone/CarrierConfigLoader.java
@@ -47,6 +47,7 @@
import android.os.Process;
import android.os.RemoteException;
import android.os.ResultReceiver;
+import android.os.SystemProperties;
import android.os.UserHandle;
import android.preference.PreferenceManager;
import android.service.carrier.CarrierIdentifier;
@@ -698,6 +699,7 @@
@NonNull private final FeatureFlags mFeatureFlags;
@NonNull private final PackageManager mPackageManager;
+ private final int mVendorApiLevel;
/**
* Constructs a CarrierConfigLoader, registers it as a service, and registers a broadcast
@@ -736,6 +738,8 @@
}
mFeatureFlags = featureFlags;
mPackageManager = context.getPackageManager();
+ mVendorApiLevel = SystemProperties.getInt(
+ "ro.vendor.api_level", Build.VERSION.DEVICE_INITIAL_SDK_INT);
logd("CarrierConfigLoader has started");
PhoneConfigurationManager.registerForMultiSimConfigChange(
@@ -1884,7 +1888,11 @@
if (!mFeatureFlags.enforceTelephonyFeatureMappingForPublicApis()
|| !CompatChanges.isChangeEnabled(ENABLE_FEATURE_MAPPING, callingPackage,
- Binder.getCallingUserHandle())) {
+ Binder.getCallingUserHandle())
+ || mVendorApiLevel < Build.VERSION_CODES.VANILLA_ICE_CREAM) {
+ // Skip to check associated telephony feature,
+ // if compatibility change is not enabled for the current process or
+ // the SDK version of vendor partition is less than Android V.
return;
}
diff --git a/src/com/android/phone/EmergencyDialer.java b/src/com/android/phone/EmergencyDialer.java
index 5fe8708..a608b1b 100644
--- a/src/com/android/phone/EmergencyDialer.java
+++ b/src/com/android/phone/EmergencyDialer.java
@@ -263,7 +263,7 @@
setTurnScreenOn(true);
CarrierConfigManager configMgr = getSystemService(CarrierConfigManager.class);
- PersistableBundle carrierConfig =
+ PersistableBundle carrierConfig = configMgr == null ? null :
configMgr.getConfigForSubId(SubscriptionManager.getDefaultVoiceSubscriptionId());
mShortcutViewConfig = new ShortcutViewUtils.Config(this, carrierConfig, mEntryType);
@@ -313,12 +313,14 @@
// Check whether we should show the onscreen "Dial" button and co.
// Read carrier config through the public API because PhoneGlobals is not available when we
// run as a secondary user.
- if (carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_ONSCREEN_DIAL_BUTTON_BOOL)) {
+ if (carrierConfig != null
+ && carrierConfig.getBoolean(
+ CarrierConfigManager.KEY_SHOW_ONSCREEN_DIAL_BUTTON_BOOL)) {
mDialButton.setOnClickListener(this);
} else {
mDialButton.setVisibility(View.GONE);
}
- mIsWfcEmergencyCallingWarningEnabled = carrierConfig.getInt(
+ mIsWfcEmergencyCallingWarningEnabled = carrierConfig != null && carrierConfig.getInt(
CarrierConfigManager.KEY_EMERGENCY_NOTIFICATION_DELAY_INT) > -1;
maybeShowWfcEmergencyCallingWarning();
diff --git a/src/com/android/phone/ImsProvisioningController.java b/src/com/android/phone/ImsProvisioningController.java
index b2e34ae..d2c720b 100644
--- a/src/com/android/phone/ImsProvisioningController.java
+++ b/src/com/android/phone/ImsProvisioningController.java
@@ -70,6 +70,7 @@
import com.android.ims.RcsFeatureManager;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.PhoneConfigurationManager;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.util.HandlerExecutor;
import com.android.telephony.Rlog;
@@ -92,6 +93,7 @@
@VisibleForTesting
protected static final int EVENT_MULTI_SIM_CONFIGURATION_CHANGE = 3;
private static final int EVENT_PROVISIONING_VALUE_CHANGED = 4;
+ private static final int EVENT_NOTIFY_INIT_PROVISIONED_VALUE = 5;
// Provisioning Keys that are handled via AOSP cache and not sent to the ImsService
private static final int[] LOCAL_IMS_CONFIG_KEYS = {
@@ -121,6 +123,11 @@
CAPABILITY_TYPE_CALL_COMPOSER
};
+ private static final int[] LOCAL_RCS_CAPABILITY = {
+ CAPABILITY_TYPE_OPTIONS_UCE,
+ CAPABILITY_TYPE_PRESENCE_UCE
+ };
+
/**
* map the MmTelCapabilities.MmTelCapability and
* CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VOICE_INT
@@ -199,6 +206,7 @@
private final SparseArray<ProvisioningCallbackManager> mProvisioningCallbackManagersSlotMap =
new SparseArray<>();
private final ImsProvisioningLoader mImsProvisioningLoader;
+ private final FeatureFlags mFeatureFlags;
private int mNumSlot;
@@ -253,6 +261,18 @@
+ " value : " + (int) msg.obj);
updateCapabilityTechFromKey(msg.arg1, msg.arg2, (int) msg.obj);
break;
+ case EVENT_NOTIFY_INIT_PROVISIONED_VALUE:
+ int slotId = msg.arg1;
+ int subId = msg.arg2;
+ IFeatureProvisioningCallback callback =
+ (IFeatureProvisioningCallback) msg.obj;
+ log("slotId " + slotId + " subId " + subId
+ + " callback " + (callback != null));
+
+ // Notify MmTel Provisioning Status
+ notifyMmTelProvisioningStatus(slotId, subId, callback);
+ notifyRcsProvisioningStatus(slotId, subId, callback);
+ break;
default:
log("unknown message " + msg);
break;
@@ -508,6 +528,13 @@
// notify provisioning key value to ImsService
setInitialProvisioningKeys(mSubId);
+
+ if (mFeatureFlags.notifyInitialImsProvisioningStatus()) {
+ // Notify MmTel provisioning value based on capability and radio tech.
+ if (mProvisioningCallbackManagersSlotMap.get(mSlotId).hasCallblacks()) {
+ notifyMmTelProvisioningStatus(mSlotId, mSubId, null);
+ }
+ }
} else {
// wait until subId is valid
mRequiredNotify = true;
@@ -740,6 +767,13 @@
// notify provisioning key value to ImsService
setInitialProvisioningKeys(mSubId);
+
+ if (mFeatureFlags.notifyInitialImsProvisioningStatus()) {
+ if (mProvisioningCallbackManagersSlotMap.get(mSlotId).hasCallblacks()) {
+ // Notify RCS provisioning value based on capability and radio tech.
+ notifyRcsProvisioningStatus(mSlotId, mSubId, null);
+ }
+ }
} else {
// wait until subId is valid
mRequiredNotify = true;
@@ -828,7 +862,7 @@
@VisibleForTesting
public ImsProvisioningController(PhoneGlobals app, int numSlot, Looper looper,
MmTelFeatureConnector mmTelFeatureConnector, RcsFeatureConnector rcsFeatureConnector,
- ImsProvisioningLoader imsProvisioningLoader) {
+ ImsProvisioningLoader imsProvisioningLoader, FeatureFlags featureFlags) {
log("ImsProvisioningController");
mApp = app;
mNumSlot = numSlot;
@@ -841,6 +875,7 @@
mTelephonyRegistryManager.addOnSubscriptionsChangedListener(
mSubChangedListener, mHandler::post);
mImsProvisioningLoader = imsProvisioningLoader;
+ mFeatureFlags = featureFlags;
PhoneConfigurationManager.registerForMultiSimConfigChange(mHandler,
EVENT_MULTI_SIM_CONFIGURATION_CHANGE, null);
@@ -924,7 +959,8 @@
* create an instance
*/
@VisibleForTesting
- public static ImsProvisioningController make(PhoneGlobals app, int numSlot) {
+ public static ImsProvisioningController make(PhoneGlobals app, int numSlot,
+ FeatureFlags featureFlags) {
synchronized (ImsProvisioningController.class) {
if (sInstance == null) {
Rlog.i(TAG, "ImsProvisioningController created");
@@ -932,7 +968,7 @@
handlerThread.start();
sInstance = new ImsProvisioningController(app, numSlot, handlerThread.getLooper(),
ImsManager::getConnector, RcsFeatureManager::getConnector,
- new ImsProvisioningLoader(app));
+ new ImsProvisioningLoader(app), featureFlags);
}
}
return sInstance;
@@ -966,6 +1002,11 @@
try {
mProvisioningCallbackManagersSlotMap.get(slotId).registerCallback(callback);
log("Feature Provisioning Callback registered.");
+
+ if (mFeatureFlags.notifyInitialImsProvisioningStatus()) {
+ mHandler.sendMessage(mHandler.obtainMessage(EVENT_NOTIFY_INIT_PROVISIONED_VALUE,
+ getSlotId(subId), subId, (Object) callback));
+ }
} catch (NullPointerException e) {
logw("can not access callback manager to add callback");
}
@@ -1639,6 +1680,90 @@
return true;
}
+ private void notifyMmTelProvisioningStatus(int slotId, int subId,
+ @Nullable IFeatureProvisioningCallback callback) {
+ int value = ImsProvisioningLoader.STATUS_NOT_SET;
+ int[] techArray;
+ for (int capability : LOCAL_MMTEL_CAPABILITY) {
+ techArray = getTechsFromCarrierConfig(subId, capability, /*isMmTle*/true);
+ if (techArray == null) {
+ continue;
+ }
+
+ for (int radioTech : techArray) {
+ value = mImsProvisioningLoader.getProvisioningStatus(subId, FEATURE_MMTEL,
+ capability, radioTech);
+ if (value == ImsProvisioningLoader.STATUS_NOT_SET) {
+ // Not yet provisioned
+ continue;
+ }
+
+ value = (value == ImsProvisioningLoader.STATUS_PROVISIONED)
+ ? PROVISIONING_VALUE_ENABLED : PROVISIONING_VALUE_DISABLED;
+
+ // Notify all registered callbacks
+ if (callback == null) {
+ mProvisioningCallbackManagersSlotMap.get(slotId)
+ .notifyProvisioningCapabilityChanged(
+ new FeatureProvisioningData(
+ capability,
+ radioTech,
+ getBoolValue(value),
+ /*isMmTle*/true));
+ } else {
+ try {
+ callback.onFeatureProvisioningChanged(capability, radioTech,
+ getBoolValue(value));
+ } catch (RemoteException e) {
+ logw("notifyMmTelProvisioningStatus callback is not available");
+ }
+ }
+ }
+ }
+ }
+
+ private void notifyRcsProvisioningStatus(int slotId, int subId,
+ @Nullable IFeatureProvisioningCallback callback) {
+ int value = ImsProvisioningLoader.STATUS_NOT_SET;
+ int[] techArray;
+ for (int capability : LOCAL_RCS_CAPABILITY) {
+ techArray = getTechsFromCarrierConfig(subId, capability, /*isMmTle*/false);
+ if (techArray == null) {
+ continue;
+ }
+
+ for (int radioTech : techArray) {
+ value = mImsProvisioningLoader.getProvisioningStatus(subId, FEATURE_RCS,
+ capability, radioTech);
+ if (value == ImsProvisioningLoader.STATUS_NOT_SET) {
+ // Not yet provisioned
+ continue;
+ }
+
+ value = (value == ImsProvisioningLoader.STATUS_PROVISIONED)
+ ? PROVISIONING_VALUE_ENABLED : PROVISIONING_VALUE_DISABLED;
+
+ // Notify all registered callbacks
+ if (callback == null) {
+ mProvisioningCallbackManagersSlotMap.get(slotId)
+ .notifyProvisioningCapabilityChanged(
+ new FeatureProvisioningData(
+ capability,
+ radioTech,
+ getBoolValue(value),
+ /*isMmTle*/false));
+ } else {
+ try {
+ callback.onRcsFeatureProvisioningChanged(capability, radioTech,
+ getBoolValue(value));
+ } catch (RemoteException e) {
+ logw("notifyRcsProvisioningStatus callback is not available");
+ }
+ }
+ }
+ }
+ }
+
private void log(String s) {
Rlog.d(TAG, s);
}
diff --git a/src/com/android/phone/ImsRcsController.java b/src/com/android/phone/ImsRcsController.java
index a778f6a..766d719 100644
--- a/src/com/android/phone/ImsRcsController.java
+++ b/src/com/android/phone/ImsRcsController.java
@@ -32,6 +32,7 @@
import android.os.Build;
import android.os.RemoteException;
import android.os.ServiceSpecificException;
+import android.os.SystemProperties;
import android.os.UserHandle;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyFrameworkInitializer;
@@ -85,6 +86,7 @@
private PackageManager mPackageManager;
// set by shell cmd phone src set-device-enabled true/false
private Boolean mSingleRegistrationOverride;
+ private final int mVendorApiLevel;
/**
* For apps targeting Android T and above, support the publishing state on APIs, such as
@@ -119,6 +121,8 @@
TelephonyFrameworkInitializer
.getTelephonyServiceManager().getTelephonyImsServiceRegisterer().register(this);
mImsResolver = ImsResolver.getInstance();
+ mVendorApiLevel = SystemProperties.getInt(
+ "ro.vendor.api_level", Build.VERSION.DEVICE_INITIAL_SDK_INT);
}
/**
@@ -1000,7 +1004,11 @@
if (!mFeatureFlags.enforceTelephonyFeatureMappingForPublicApis()
|| !CompatChanges.isChangeEnabled(ENABLE_FEATURE_MAPPING, callingPackage,
- Binder.getCallingUserHandle())) {
+ Binder.getCallingUserHandle())
+ || mVendorApiLevel < Build.VERSION_CODES.VANILLA_ICE_CREAM) {
+ // Skip to check associated telephony feature,
+ // if compatibility change is not enabled for the current process or
+ // the SDK version of vendor partition is less than Android V.
return;
}
diff --git a/src/com/android/phone/PhoneGlobals.java b/src/com/android/phone/PhoneGlobals.java
index d685d0a..d0d92c6 100644
--- a/src/com/android/phone/PhoneGlobals.java
+++ b/src/com/android/phone/PhoneGlobals.java
@@ -92,6 +92,7 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
/**
* Global state for the telephony subsystem when running in the primary
@@ -190,13 +191,15 @@
ROAMING_NOTIFICATION_REASON_DATA_ROAMING_SETTING_CHANGED,
ROAMING_NOTIFICATION_REASON_CARRIER_CONFIG_CHANGED,
ROAMING_NOTIFICATION_REASON_SERVICE_STATE_CHANGED,
- ROAMING_NOTIFICATION_REASON_DEFAULT_DATA_SUBS_CHANGED})
+ ROAMING_NOTIFICATION_REASON_DEFAULT_DATA_SUBS_CHANGED,
+ ROAMING_NOTIFICATION_REASON_DISCONNECTED_SINGLE_NETWORK})
public @interface RoamingNotificationReason {}
private static final int ROAMING_NOTIFICATION_REASON_DATA_SETTING_CHANGED = 0;
private static final int ROAMING_NOTIFICATION_REASON_DATA_ROAMING_SETTING_CHANGED = 1;
private static final int ROAMING_NOTIFICATION_REASON_CARRIER_CONFIG_CHANGED = 2;
private static final int ROAMING_NOTIFICATION_REASON_SERVICE_STATE_CHANGED = 3;
private static final int ROAMING_NOTIFICATION_REASON_DEFAULT_DATA_SUBS_CHANGED = 4;
+ private static final int ROAMING_NOTIFICATION_REASON_DISCONNECTED_SINGLE_NETWORK = 5;
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@@ -215,6 +218,14 @@
private int mCurrentRoamingNotification = ROAMING_NOTIFICATION_NO_NOTIFICATION;
/**
+ * If true, update roaming notifications after the Internet is completely disconnected. If
+ * carrier allows only a single data network, wait until the Internet connection is completely
+ * disconnected and then update the roaming notification once more to check if
+ * ONLY_ALLOWED_SINGLE_NETWORK disallow reason is disappeared.
+ */
+ private AtomicBoolean mWaitForInternetDisconnection = new AtomicBoolean(false);
+
+ /**
* Reasons that have already shown notification to prevent duplicate shows for the same reason.
*/
private ArraySet<String> mShownNotificationReasons = new ArraySet<>();
@@ -253,7 +264,8 @@
private FeatureFlags mFeatureFlags = new FeatureFlagsImpl();
private class PhoneAppCallback extends TelephonyCallback implements
- TelephonyCallback.ServiceStateListener {
+ TelephonyCallback.ServiceStateListener,
+ TelephonyCallback.DataConnectionStateListener {
private final int mSubId;
PhoneAppCallback(int subId) {
@@ -267,6 +279,23 @@
handleServiceStateChanged(serviceState, mSubId);
}
+ @Override
+ public void onDataConnectionStateChanged(int state, int networkType) {
+ if (mSubId == mDefaultDataSubId && state == TelephonyManager.DATA_DISCONNECTED) {
+ // onDataConnectionStateChanged is an event about the state of exact DataNetwork,
+ // but since the DataNetwork of internet may not have been completely removed from
+ // the DataNetworkController list, The post handler event expects the internet data
+ // network to be completely removed from the DataNetworkController list.
+ mHandler.post(() -> {
+ if (mWaitForInternetDisconnection.compareAndSet(true, false)) {
+ Log.d(LOG_TAG, "onDisconnectedInternetDataNetwork.");
+ updateDataRoamingStatus(
+ ROAMING_NOTIFICATION_REASON_DISCONNECTED_SINGLE_NETWORK);
+ }
+ });
+ }
+ }
+
public int getSubId() {
return mSubId;
}
@@ -490,7 +519,9 @@
ContentResolver resolver = getContentResolver();
- if (mFeatureFlags.enforceTelephonyFeatureMappingForPublicApis()) {
+ if (mFeatureFlags.enforceTelephonyFeatureMappingForPublicApis()
+ && !getResources().getBoolean(
+ com.android.internal.R.bool.config_force_phone_globals_creation)) {
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) {
Log.v(LOG_TAG, "onCreate()... but not defined FEATURE_TELEPHONY");
return;
@@ -549,7 +580,7 @@
R.string.config_ims_rcs_package);
ImsResolver.make(this, defaultImsMmtelPackage,
defaultImsRcsPackage, PhoneFactory.getPhones().length,
- new ImsFeatureBinderRepository());
+ new ImsFeatureBinderRepository(), mFeatureFlags);
ImsResolver.getInstance().initialize();
// With the IMS phone created, load static config.xml values from the phone process
@@ -609,11 +640,12 @@
mImsStateCallbackController =
ImsStateCallbackController.make(this, PhoneFactory.getPhones().length);
mTelephonyRcsService = new TelephonyRcsService(this,
- PhoneFactory.getPhones().length);
+ PhoneFactory.getPhones().length, mFeatureFlags);
mTelephonyRcsService.initialize();
imsRcsController.setRcsService(mTelephonyRcsService);
mImsProvisioningController =
- ImsProvisioningController.make(this, PhoneFactory.getPhones().length);
+ ImsProvisioningController.make(this, PhoneFactory.getPhones().length,
+ mFeatureFlags);
}
// Create the CallNotifier singleton, which handles
@@ -1008,10 +1040,9 @@
* When roaming, if mobile data cannot be established due to data roaming not enabled, we need
* to notify the user so they can enable it through settings. Vise versa if the condition
* changes, we need to dismiss the notification.
- * @param reason to inform which event is called for notification update.
+ * @param notificationReason to inform which event is called for notification update.
*/
- private void updateDataRoamingStatus(@RoamingNotificationReason int reason) {
- if (VDBG) Log.v(LOG_TAG, "updateDataRoamingStatus");
+ private void updateDataRoamingStatus(@RoamingNotificationReason int notificationReason) {
Phone phone = getPhone(mDefaultDataSubId);
if (phone == null) {
Log.w(LOG_TAG, "Can't get phone with sub id = " + mDefaultDataSubId);
@@ -1024,20 +1055,59 @@
return;
}
+ List<DataDisallowedReason> disallowReasons = phone.getDataNetworkController()
+ .getInternetDataDisallowedReasons();
+
+ if (mFeatureFlags.roamingNotificationForSingleDataNetwork()) {
+ if (disallowReasons.contains(DataDisallowedReason.ONLY_ALLOWED_SINGLE_NETWORK)
+ && disallowReasons.contains(DataDisallowedReason.ROAMING_DISABLED)
+ && (notificationReason == ROAMING_NOTIFICATION_REASON_DATA_SETTING_CHANGED
+ || notificationReason
+ == ROAMING_NOTIFICATION_REASON_DATA_ROAMING_SETTING_CHANGED)) {
+ // If the ONLY_ALLOWED_SINGLE_NETWORK disallow reason has not yet been removed due
+ // to a change in mobile_data (including roaming_data) settings, update roaming
+ // notification again after the Internet is completely disconnected to check
+ // ONLY_ALLOWED_SINGLE_NETWORK disallow reason is removed.
+ mWaitForInternetDisconnection.set(true);
+ Log.d(LOG_TAG, "updateDataRoamingStatus,"
+ + " wait for internet disconnection for single data network");
+ } else if (!disallowReasons.contains(DataDisallowedReason.ONLY_ALLOWED_SINGLE_NETWORK)
+ && mWaitForInternetDisconnection.compareAndSet(true, false)) {
+ // If the ONLY_ALLOWED_SINGLE_NETWORK disallow reason has been removed,
+ // no longer wait for Internet disconnection.
+ Log.d(LOG_TAG, "updateDataRoamingStatus,"
+ + " cancel to wait for internet disconnection for single data network");
+ }
+ }
+
+ updateDataRoamingStatus(notificationReason, disallowReasons, serviceState);
+ }
+
+ /**
+ * When roaming, if mobile data cannot be established due to data roaming not enabled, we need
+ * to notify the user so they can enable it through settings. Vise versa if the condition
+ * changes, we need to dismiss the notification.
+ * @param notificationReason to inform which event is called for notification update.
+ * @param disallowReasons List of reasons why internet data is not allowed. An empty list if
+ * internet is allowed.
+ * @param serviceState Service state from phone
+ */
+ private void updateDataRoamingStatus(@RoamingNotificationReason int notificationReason,
+ List<DataDisallowedReason> disallowReasons, ServiceState serviceState) {
+
+ if (VDBG) Log.v(LOG_TAG, "updateDataRoamingStatus");
String roamingNumeric = serviceState.getOperatorNumeric();
String roamingNumericReason = "RoamingNumeric=" + roamingNumeric;
- String callingReason = "CallingReason=" + reason;
+ String callingReason = "CallingReason=" + notificationReason;
boolean dataIsNowRoaming = serviceState.getDataRoaming();
boolean dataAllowed;
boolean notAllowedDueToRoamingOff;
- List<DataDisallowedReason> reasons = phone.getDataNetworkController()
- .getInternetDataDisallowedReasons();
- dataAllowed = reasons.isEmpty();
- notAllowedDueToRoamingOff = (reasons.size() == 1
- && reasons.contains(DataDisallowedReason.ROAMING_DISABLED));
+ dataAllowed = disallowReasons.isEmpty();
+ notAllowedDueToRoamingOff = (disallowReasons.size() == 1
+ && disallowReasons.contains(DataDisallowedReason.ROAMING_DISABLED));
StringBuilder sb = new StringBuilder("updateDataRoamingStatus");
sb.append(" dataAllowed=").append(dataAllowed);
- sb.append(", reasons=").append(reasons);
+ sb.append(", disallowReasons=").append(disallowReasons);
sb.append(", dataIsNowRoaming=").append(dataIsNowRoaming);
sb.append(", ").append(roamingNumericReason);
sb.append(", ").append(callingReason);
@@ -1048,8 +1118,8 @@
// Determine if a given roaming numeric has never been shown.
boolean shownInThisNumeric = false;
- if (reason == ROAMING_NOTIFICATION_REASON_CARRIER_CONFIG_CHANGED
- || reason == ROAMING_NOTIFICATION_REASON_SERVICE_STATE_CHANGED) {
+ if (notificationReason == ROAMING_NOTIFICATION_REASON_CARRIER_CONFIG_CHANGED
+ || notificationReason == ROAMING_NOTIFICATION_REASON_SERVICE_STATE_CHANGED) {
shownInThisNumeric = mShownNotificationReasons.contains(roamingNumericReason);
}
// Determine if a notification has never been shown by given calling reason.
@@ -1060,7 +1130,7 @@
mShownNotificationReasons.add(roamingNumericReason);
}
if (!shownForThisReason
- && reason == ROAMING_NOTIFICATION_REASON_CARRIER_CONFIG_CHANGED) {
+ && notificationReason == ROAMING_NOTIFICATION_REASON_CARRIER_CONFIG_CHANGED) {
mShownNotificationReasons.add(callingReason);
}
// No need to show it again if we never cancelled it explicitly.
@@ -1087,7 +1157,7 @@
mShownNotificationReasons.add(roamingNumericReason);
}
if (!shownForThisReason
- && reason == ROAMING_NOTIFICATION_REASON_CARRIER_CONFIG_CHANGED) {
+ && notificationReason == ROAMING_NOTIFICATION_REASON_CARRIER_CONFIG_CHANGED) {
mShownNotificationReasons.add(callingReason);
}
boolean shouldShowRoamingNotification = shouldShowRoamingNotification(roamingNumeric);
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 256c515..dc4290d 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -76,6 +76,7 @@
import android.os.ResultReceiver;
import android.os.ServiceSpecificException;
import android.os.SystemClock;
+import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.WorkSource;
@@ -259,8 +260,10 @@
import com.android.phone.vvm.RemoteVvmTaskManager;
import com.android.phone.vvm.VisualVoicemailSettingsUtil;
import com.android.phone.vvm.VisualVoicemailSmsFilterConfig;
+import com.android.server.feature.flags.Flags;
import com.android.services.telephony.TelecomAccountRegistry;
import com.android.services.telephony.TelephonyConnectionService;
+import com.android.services.telephony.domainselection.TelephonyDomainSelectionService;
import com.android.telephony.Rlog;
import java.io.ByteArrayOutputStream;
@@ -424,18 +427,20 @@
private final PhoneGlobals mApp;
private FeatureFlags mFeatureFlags;
+ private com.android.server.telecom.flags.FeatureFlags mTelecomFeatureFlags;
private final CallManager mCM;
private final ImsResolver mImsResolver;
private final SatelliteController mSatelliteController;
private final SatelliteAccessController mSatelliteAccessController;
private final UserManager mUserManager;
- private final AppOpsManager mAppOps;
private final MainThreadHandler mMainThreadHandler;
private final SharedPreferences mTelephonySharedPreferences;
private final PhoneConfigurationManager mPhoneConfigurationManager;
private final RadioInterfaceCapabilityController mRadioInterfaceCapabilities;
+ private AppOpsManager mAppOps;
private PackageManager mPackageManager;
+ private final int mVendorApiLevel;
/** User Activity */
private final AtomicBoolean mNotifyUserActivity;
@@ -1588,7 +1593,7 @@
// This is for the implementation of carrierRestrictionStatus.
CallerCallbackInfo callbackInfo = (CallerCallbackInfo) request.argument;
Consumer<Integer> callback = callbackInfo.getConsumer();
- int callerCarrierId = callbackInfo.getCarrierId();
+ Set<Integer> callerCarrierIds = callbackInfo.getCarrierIds();
int lockStatus = TelephonyManager.CARRIER_RESTRICTION_STATUS_UNKNOWN;
if (ar.exception == null && ar.result instanceof CarrierRestrictionRules) {
CarrierRestrictionRules carrierRestrictionRules =
@@ -1603,8 +1608,10 @@
Rlog.e(LOG_TAG, "CarrierIdentifier exception = " + ex);
}
lockStatus = carrierRestrictionRules.getCarrierRestrictionStatus();
- if (carrierId != -1 && callerCarrierId == carrierId && lockStatus
- == TelephonyManager.CARRIER_RESTRICTION_STATUS_RESTRICTED) {
+ int restrictedStatus =
+ TelephonyManager.CARRIER_RESTRICTION_STATUS_RESTRICTED;
+ if (carrierId != -1 && callerCarrierIds.contains(carrierId) &&
+ lockStatus == restrictedStatus) {
lockStatus = TelephonyManager
.CARRIER_RESTRICTION_STATUS_RESTRICTED_TO_CALLER;
}
@@ -2464,6 +2471,7 @@
private PhoneInterfaceManager(PhoneGlobals app, FeatureFlags featureFlags) {
mApp = app;
mFeatureFlags = featureFlags;
+ mTelecomFeatureFlags = new com.android.server.telecom.flags.FeatureFlagsImpl();
mCM = PhoneGlobals.getInstance().mCM;
mImsResolver = ImsResolver.getInstance();
mSatelliteController = SatelliteController.getInstance();
@@ -2478,6 +2486,9 @@
mPackageManager = app.getPackageManager();
mSatelliteAccessController = SatelliteAccessController.getOrCreateInstance(
getDefaultPhone().getContext(), featureFlags);
+ mVendorApiLevel = SystemProperties.getInt(
+ "ro.vendor.api_level", Build.VERSION.DEVICE_INITIAL_SDK_INT);
+
PropertyInvalidatedCache.invalidateCache(TelephonyManager.CACHE_KEY_PHONE_ACCOUNT_TO_SUBID);
publish();
CarrierAllowListInfo.loadInstance(mApp);
@@ -2720,6 +2731,10 @@
// For async handler to identify request type
private static final int SUPPLY_PIN_COMPLETE = 100;
+ private static final int SUPPLY_PIN_DELAYED = 101;
+ private static final int SUPPLY_PIN_DELAYED_TIMER_IN_MILLIS = 10000;
+ private static final UUID SUPPLY_PIN_UUID = UUID.fromString(
+ "d3768135-4323-491d-a6c8-bda01fc89040");
UnlockSim(int phoneId, IccCard simCard) {
mPhoneId = phoneId;
@@ -2758,9 +2773,17 @@
mResult = PhoneConstants.PIN_RESULT_SUCCESS;
}
mDone = true;
+ removeMessages(SUPPLY_PIN_DELAYED);
UnlockSim.this.notifyAll();
}
break;
+ case SUPPLY_PIN_DELAYED:
+ if(!mDone) {
+ String logStr = "Delay in receiving SIM PIN response ";
+ if (DBG) log(logStr);
+ AnomalyReporter.reportAnomaly(SUPPLY_PIN_UUID, logStr);
+ }
+ break;
}
}
};
@@ -2799,6 +2822,8 @@
while (!mDone) {
try {
Log.d(LOG_TAG, "wait for done");
+ mHandler.sendEmptyMessageDelayed(SUPPLY_PIN_DELAYED,
+ SUPPLY_PIN_DELAYED_TIMER_IN_MILLIS);
wait();
} catch (InterruptedException e) {
// Restore the interrupted status
@@ -9247,15 +9272,15 @@
enforceTelephonyFeatureWithException(packageName,
PackageManager.FEATURE_TELEPHONY_SUBSCRIPTION, "getCarrierRestrictionStatus");
- int carrierId = validateCallerAndGetCarrierId(packageName);
- if (carrierId == CarrierAllowListInfo.INVALID_CARRIER_ID) {
+ Set<Integer> carrierIds = validateCallerAndGetCarrierIds(packageName);
+ if (carrierIds.contains(CarrierAllowListInfo.INVALID_CARRIER_ID)) {
Rlog.e(LOG_TAG, "getCarrierRestrictionStatus: caller is not registered");
throw new SecurityException("Not an authorized caller");
}
final long identity = Binder.clearCallingIdentity();
try {
Consumer<Integer> consumer = FunctionalUtils.ignoreRemoteException(callback::accept);
- CallerCallbackInfo callbackInfo = new CallerCallbackInfo(consumer, carrierId);
+ CallerCallbackInfo callbackInfo = new CallerCallbackInfo(consumer, carrierIds);
sendRequestAsync(CMD_GET_ALLOWED_CARRIERS, callbackInfo);
} finally {
Binder.restoreCallingIdentity(identity);
@@ -9270,9 +9295,9 @@
}
@VisibleForTesting
- public int validateCallerAndGetCarrierId(String packageName) {
+ public Set<Integer> validateCallerAndGetCarrierIds(String packageName) {
CarrierAllowListInfo allowListInfo = CarrierAllowListInfo.loadInstance(mApp);
- return allowListInfo.validateCallerAndGetCarrierId(packageName);
+ return allowListInfo.validateCallerAndGetCarrierIds(packageName);
}
/**
@@ -9476,7 +9501,7 @@
try {
if (reason == TelephonyManager.DATA_ENABLED_REASON_USER && enabled
&& null != callingPackage && opEnableMobileDataByUser()) {
- mAppOps.noteOp(AppOpsManager.OPSTR_ENABLE_MOBILE_DATA_BY_USER,
+ mAppOps.noteOpNoThrow(AppOpsManager.OPSTR_ENABLE_MOBILE_DATA_BY_USER,
callingUid, callingPackage, null, null);
}
Phone phone = getPhone(subId);
@@ -12907,8 +12932,16 @@
public void persistEmergencyCallDiagnosticData(@NonNull String dropboxTag, boolean enableLogcat,
long logcatStartTimestampMillis, boolean enableTelecomDump,
boolean enableTelephonyDump) {
- mApp.enforceCallingPermission(android.Manifest.permission.DUMP,
- "persistEmergencyCallDiagnosticData");
+ // Verify that the caller has READ_DROPBOX_DATA permission.
+ if (mTelecomFeatureFlags.telecomResolveHiddenDependencies()
+ && Flags.enableReadDropboxPermission()) {
+ mApp.enforceCallingPermission(permission.READ_DROPBOX_DATA,
+ "persistEmergencyCallDiagnosticData");
+ } else {
+ // Otherwise, enforce legacy permission.
+ mApp.enforceCallingPermission(android.Manifest.permission.DUMP,
+ "persistEmergencyCallDiagnosticData");
+ }
final long identity = Binder.clearCallingIdentity();
try {
persistEmergencyCallDiagnosticDataInternal(dropboxTag, enableLogcat,
@@ -12993,6 +13026,34 @@
}
/**
+ * Returns whether the AOSP domain selection service is supported.
+ *
+ * @return {@code true} if the AOSP domain selection service is supported,
+ * {@code false} otherwise.
+ */
+ @Override
+ public boolean isAospDomainSelectionService() {
+ mApp.enforceCallingOrSelfPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
+ "isAospDomainSelectionService");
+
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ if (DomainSelectionResolver.getInstance().isDomainSelectionSupported()) {
+ String dssComponentName = mApp.getResources().getString(
+ R.string.config_domain_selection_service_component_name);
+ ComponentName componentName = ComponentName.createRelative(mApp.getPackageName(),
+ TelephonyDomainSelectionService.class.getName());
+ Log.i(LOG_TAG, "isAospDomainSelectionService dss=" + dssComponentName
+ + ", aosp=" + componentName.flattenToString());
+ return TextUtils.equals(componentName.flattenToString(), dssComponentName);
+ }
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ return false;
+ }
+
+ /**
* Request to enable or disable the satellite modem and demo mode. If the satellite modem is
* enabled, this may also disable the cellular modem, and if the satellite modem is disabled,
* this may also re-enable the cellular modem.
@@ -14082,19 +14143,19 @@
*/
private static class CallerCallbackInfo {
private final Consumer<Integer> mConsumer;
- private final int mCarrierId;
+ private final Set<Integer> mCarrierIds;
- public CallerCallbackInfo(Consumer<Integer> consumer, int carrierId) {
+ public CallerCallbackInfo(Consumer<Integer> consumer, Set<Integer> carrierIds) {
mConsumer = consumer;
- mCarrierId = carrierId;
+ mCarrierIds = carrierIds;
}
public Consumer<Integer> getConsumer() {
return mConsumer;
}
- public int getCarrierId() {
- return mCarrierId;
+ public Set<Integer> getCarrierIds() {
+ return mCarrierIds;
}
}
@@ -14109,6 +14170,16 @@
}
/*
+ * PhoneInterfaceManager is a singleton. Unit test calls the init() with context.
+ * But the context that is passed in is unused if the phone app is already alive.
+ * In this case PackageManager object is different in PhoneInterfaceManager and Unit test.
+ */
+ @VisibleForTesting
+ public void setAppOpsManager(AppOpsManager appOps) {
+ mAppOps = appOps;
+ }
+
+ /*
* PhoneInterfaceManager is a singleton. Unit test calls the init() with FeatureFlags.
* But the FeatureFlags that is passed in is unused if the phone app is already alive.
* In this case FeatureFlags object is different in PhoneInterfaceManager and Unit test.
@@ -14131,7 +14202,11 @@
if (!mFeatureFlags.enforceTelephonyFeatureMappingForPublicApis()
|| !CompatChanges.isChangeEnabled(ENABLE_FEATURE_MAPPING, callingPackage,
- Binder.getCallingUserHandle())) {
+ Binder.getCallingUserHandle())
+ || mVendorApiLevel < Build.VERSION_CODES.VANILLA_ICE_CREAM) {
+ // Skip to check associated telephony feature,
+ // if compatibility change is not enabled for the current process or
+ // the SDK version of vendor partition is less than Android V.
return;
}
diff --git a/src/com/android/phone/ServiceStateProvider.java b/src/com/android/phone/ServiceStateProvider.java
index 3fa1e58..894d1c7 100644
--- a/src/com/android/phone/ServiceStateProvider.java
+++ b/src/com/android/phone/ServiceStateProvider.java
@@ -41,6 +41,7 @@
import android.os.Binder;
import android.os.Build;
import android.os.Parcel;
+import android.os.UserHandle;
import android.telephony.LocationAccessPolicy;
import android.telephony.ServiceState;
import android.telephony.SubscriptionManager;
@@ -577,27 +578,31 @@
ServiceState newSS, int subId) {
final boolean firstUpdate = (oldSS == null) ? true : false;
- // for every field, if the field has changed values, notify via the provider
+ // For every field, if the field has changed values, notify via the provider to all users
if (firstUpdate || voiceRegStateChanged(oldSS, newSS)) {
context.getContentResolver().notifyChange(
getUriForSubscriptionIdAndField(subId, VOICE_REG_STATE),
- /* observer= */ null, /* syncToNetwork= */ false);
+ /* observer= */ null, /* syncToNetwork= */ false, UserHandle.USER_ALL);
}
if (firstUpdate || dataRegStateChanged(oldSS, newSS)) {
context.getContentResolver().notifyChange(
- getUriForSubscriptionIdAndField(subId, DATA_REG_STATE), null, false);
+ getUriForSubscriptionIdAndField(subId, DATA_REG_STATE),
+ /* observer= */ null, /* syncToNetwork= */ false, UserHandle.USER_ALL);
}
if (firstUpdate || voiceRoamingTypeChanged(oldSS, newSS)) {
context.getContentResolver().notifyChange(
- getUriForSubscriptionIdAndField(subId, VOICE_ROAMING_TYPE), null, false);
+ getUriForSubscriptionIdAndField(subId, VOICE_ROAMING_TYPE),
+ /* observer= */ null, /* syncToNetwork= */ false, UserHandle.USER_ALL);
}
if (firstUpdate || dataRoamingTypeChanged(oldSS, newSS)) {
context.getContentResolver().notifyChange(
- getUriForSubscriptionIdAndField(subId, DATA_ROAMING_TYPE), null, false);
+ getUriForSubscriptionIdAndField(subId, DATA_ROAMING_TYPE),
+ /* observer= */ null, /* syncToNetwork= */ false, UserHandle.USER_ALL);
}
if (firstUpdate || dataNetworkTypeChanged(oldSS, newSS)) {
context.getContentResolver().notifyChange(
- getUriForSubscriptionIdAndField(subId, DATA_NETWORK_TYPE), null, false);
+ getUriForSubscriptionIdAndField(subId, DATA_NETWORK_TYPE),
+ /* observer= */ null, /* syncToNetwork= */ false, UserHandle.USER_ALL);
}
}
@@ -635,14 +640,15 @@
@VisibleForTesting
public static void notifyChangeForSubId(Context context, ServiceState oldSS, ServiceState newSS,
int subId) {
- // if the voice or data registration or roaming state field has changed values, notify via
- // the provider.
+ // If the voice or data registration or roaming state field has changed values, notify via
+ // the provider to all users.
// If oldSS is null and newSS is not (e.g. first update of service state) this will also
- // notify
+ // notify to all users.
if (oldSS == null || voiceRegStateChanged(oldSS, newSS) || dataRegStateChanged(oldSS, newSS)
|| voiceRoamingTypeChanged(oldSS, newSS) || dataRoamingTypeChanged(oldSS, newSS)
|| dataNetworkTypeChanged(oldSS, newSS)) {
- context.getContentResolver().notifyChange(getUriForSubscriptionId(subId), null, false);
+ context.getContentResolver().notifyChange(getUriForSubscriptionId(subId),
+ /* observer= */ null, /* syncToNetwork= */ false, UserHandle.USER_ALL);
}
}
diff --git a/src/com/android/phone/TelephonyShellCommand.java b/src/com/android/phone/TelephonyShellCommand.java
index 2ae8d28..6969275 100644
--- a/src/com/android/phone/TelephonyShellCommand.java
+++ b/src/com/android/phone/TelephonyShellCommand.java
@@ -3987,7 +3987,7 @@
/**
* Building the string that can be used to build the JsonObject which supports to stub the data
* in CarrierAllowListInfo for CTS testing. sample format is like
- * {"com.android.example":{"carrierId":"10000","callerSHA1Id":["XXXXXXXXXXXXXX"]}}
+ * {"com.android.example":{"carrierIds":[10000],"callerSHA256Ids":["XXXXXXXXXXXXXX"]}}
*/
private String convertToJsonString(int index, String param) {
@@ -3999,7 +3999,7 @@
break;
case 1:
jSonString =
- "{" + QUOTES + token[0] + QUOTES + ":" + QUOTES + token[1] + QUOTES + ",";
+ "{" + QUOTES + token[0] + QUOTES + ":" + "[" + token[1] + "],";
break;
case 2:
jSonString =
diff --git a/src/com/android/phone/euicc/EuiccUiDispatcherActivity.java b/src/com/android/phone/euicc/EuiccUiDispatcherActivity.java
index 5da52d6..3e44062 100644
--- a/src/com/android/phone/euicc/EuiccUiDispatcherActivity.java
+++ b/src/com/android/phone/euicc/EuiccUiDispatcherActivity.java
@@ -113,7 +113,7 @@
@Nullable
Intent resolveEuiccUiIntent() {
EuiccManager euiccManager = (EuiccManager) getSystemService(Context.EUICC_SERVICE);
- if (!euiccManager.isEnabled()) {
+ if (euiccManager == null || !euiccManager.isEnabled()) {
Log.w(TAG, "eUICC not enabled");
return null;
}
diff --git a/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java b/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java
index 38b7d24..5512ff6 100644
--- a/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java
+++ b/src/com/android/phone/satellite/accesscontrol/SatelliteAccessController.java
@@ -70,7 +70,9 @@
import com.android.internal.telephony.satellite.SatelliteConfig;
import com.android.internal.telephony.satellite.SatelliteConstants;
import com.android.internal.telephony.satellite.SatelliteController;
+import com.android.internal.telephony.satellite.metrics.AccessControllerMetricsStats;
import com.android.internal.telephony.satellite.metrics.ConfigUpdaterMetricsStats;
+import com.android.internal.telephony.satellite.metrics.ControllerMetricsStats;
import com.android.internal.telephony.util.TelephonyUtils;
import com.android.phone.PhoneGlobals;
@@ -148,6 +150,10 @@
@NonNull
private final SatelliteController mSatelliteController;
@NonNull
+ private final ControllerMetricsStats mControllerMetricsStats;
+ @NonNull
+ private final AccessControllerMetricsStats mAccessControllerMetricsStats;
+ @NonNull
private final ResultReceiver mInternalSatelliteSupportedResultReceiver;
@NonNull
private final ResultReceiver mInternalSatelliteProvisionedResultReceiver;
@@ -205,6 +211,7 @@
"config_updater_satellite_country_codes";
private static final String CONFIG_UPDATER_SATELLITE_IS_ALLOW_ACCESS_CONTROL_KEY =
"config_updater_satellite_is_allow_access_control";
+
private SharedPreferences mSharedPreferences;
private final ConfigUpdaterMetricsStats mConfigUpdaterMetricsStats;
@Nullable
@@ -224,6 +231,10 @@
private boolean mLatestSatelliteCommunicationAllowed;
private long mLatestSatelliteCommunicationAllowedSetTime;
+ private long mLocationQueryStartTimeMillis;
+ private long mOnDeviceLookupStartTimeMillis;
+ private long mTotalCheckingStartTimeMillis;
+
/**
* Create a SatelliteAccessController instance.
*
@@ -252,6 +263,8 @@
mSatelliteOnDeviceAccessController = satelliteOnDeviceAccessController;
mCountryDetector = TelephonyCountryDetector.getInstance(context);
mSatelliteController = SatelliteController.getInstance();
+ mControllerMetricsStats = ControllerMetricsStats.getInstance();
+ mAccessControllerMetricsStats = AccessControllerMetricsStats.getInstance();
initSharedPreferences(context);
loadOverlayConfigs(context);
// loadConfigUpdaterConfigs has to be called after loadOverlayConfigs
@@ -268,9 +281,6 @@
handleIsSatelliteSupportedResult(resultCode, resultData);
}
};
-
- mConfigUpdaterMetricsStats = ConfigUpdaterMetricsStats.getOrCreateInstance();
-
mInternalSatelliteProvisionedResultReceiver = new ResultReceiver(this) {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
@@ -278,6 +288,8 @@
}
};
+ mConfigUpdaterMetricsStats = ConfigUpdaterMetricsStats.getOrCreateInstance();
+
mInternalSatelliteSupportedStateCallback = new ISatelliteSupportedStateCallback.Stub() {
@Override
public void onSatelliteSupportedStateChanged(boolean isSupported) {
@@ -601,7 +613,7 @@
value).apply();
return true;
} catch (Exception ex) {
- ploge("updateSharedPreferencesAllowRegion : " + ex);
+ ploge("updateSharedPreferencesIsAllowAccessControl error: " + ex);
return false;
}
}
@@ -707,6 +719,8 @@
mSatelliteS2CellFile = null;
}
mLocationFreshDurationNanos = getSatelliteLocationFreshDurationFromOverlayConfig(context);
+ mAccessControllerMetricsStats.setConfigDataSource(
+ SatelliteConstants.CONFIG_DATA_SOURCE_DEVICE_CONFIG);
}
private void loadConfigUpdaterConfigs() {
@@ -737,6 +751,8 @@
mSatelliteS2CellFile = s2CellFile;
mSatelliteCountryCodes = countryCodes.stream().collect(Collectors.toList());
mIsSatelliteAllowAccessControl = isSatelliteAllowAccessControl;
+ mAccessControllerMetricsStats.setConfigDataSource(
+ SatelliteConstants.CONFIG_DATA_SOURCE_CONFIG_UPDATER);
}
private long getLocationFreshDurationNanos() {
@@ -786,6 +802,7 @@
+ "processed");
return;
}
+ mTotalCheckingStartTimeMillis = System.currentTimeMillis();
mSatelliteController.requestIsSatelliteSupported(
requestArguments.first, mInternalSatelliteSupportedResultReceiver);
}
@@ -870,6 +887,7 @@
}
mSatelliteAllowResultReceivers.clear();
}
+ reportMetrics(resultCode, allowed);
}
/**
@@ -885,6 +903,10 @@
boolean allowed = isSatelliteAccessAllowedForLocation(networkCountryIsoList);
Bundle bundle = new Bundle();
bundle.putBoolean(KEY_SATELLITE_COMMUNICATION_ALLOWED, allowed);
+ mAccessControllerMetricsStats
+ .setAccessControlType(
+ SatelliteConstants.ACCESS_CONTROL_TYPE_NETWORK_COUNTRY_CODE)
+ .setCountryCodes(networkCountryIsoList);
sendSatelliteAllowResultToReceivers(SATELLITE_RESULT_SUCCESS, bundle, allowed);
} else {
if (shouldUseOnDeviceAccessController()) {
@@ -970,6 +992,8 @@
countryCodeList = networkCountryCodeInfoMap.keySet().stream().toList();
}
plogd("Use cached country codes=" + String.join(", ", countryCodeList));
+ mAccessControllerMetricsStats.setAccessControlType(
+ SatelliteConstants.ACCESS_CONTROL_TYPE_CACHED_COUNTRY_CODE);
boolean allowed = isSatelliteAccessAllowedForLocation(countryCodeList);
Bundle bundle = new Bundle();
@@ -983,14 +1007,19 @@
* from location service.
*/
private void checkSatelliteAccessRestrictionUsingOnDeviceData() {
+ mOnDeviceLookupStartTimeMillis = System.currentTimeMillis();
synchronized (mLock) {
plogd("Use on-device data");
if (mFreshLastKnownLocation != null) {
+ mAccessControllerMetricsStats.setAccessControlType(
+ SatelliteConstants.ACCESS_CONTROL_TYPE_LAST_KNOWN_LOCATION);
checkSatelliteAccessRestrictionForLocation(mFreshLastKnownLocation);
mFreshLastKnownLocation = null;
} else {
Location freshLastKnownLocation = getFreshLastKnownLocation();
if (freshLastKnownLocation != null) {
+ mAccessControllerMetricsStats.setAccessControlType(
+ SatelliteConstants.ACCESS_CONTROL_TYPE_LAST_KNOWN_LOCATION);
checkSatelliteAccessRestrictionForLocation(freshLastKnownLocation);
} else {
queryCurrentLocation();
@@ -1006,6 +1035,7 @@
return;
}
mLocationRequestCancellationSignal = new CancellationSignal();
+ mLocationQueryStartTimeMillis = System.currentTimeMillis();
mLocationManager.getCurrentLocation(LocationManager.GPS_PROVIDER,
new LocationRequest.Builder(0)
.setQuality(LocationRequest.QUALITY_HIGH_ACCURACY)
@@ -1022,6 +1052,7 @@
synchronized (mLock) {
stopWaitForCurrentLocationTimer();
mLocationRequestCancellationSignal = null;
+ mAccessControllerMetricsStats.setLocationQueryTime(mLocationQueryStartTimeMillis);
Bundle bundle = new Bundle();
if (location != null) {
if (location.isMock() && !isMockModemAllowed()) {
@@ -1030,6 +1061,8 @@
sendSatelliteAllowResultToReceivers(SATELLITE_RESULT_SUCCESS, bundle, false);
return;
}
+ mAccessControllerMetricsStats.setAccessControlType(
+ SatelliteConstants.ACCESS_CONTROL_TYPE_CURRENT_LOCATION);
checkSatelliteAccessRestrictionForLocation(location);
} else {
plogd("current location is not available");
@@ -1070,6 +1103,7 @@
.isSatCommunicationAllowedAtLocation(locationToken);
updateCachedAccessRestrictionMap(locationToken, satelliteAllowed);
}
+ mAccessControllerMetricsStats.setOnDeviceLookupTime(mOnDeviceLookupStartTimeMillis);
Bundle bundle = new Bundle();
bundle.putBoolean(KEY_SATELLITE_COMMUNICATION_ALLOWED, satelliteAllowed);
sendSatelliteAllowResultToReceivers(SATELLITE_RESULT_SUCCESS, bundle,
@@ -1531,6 +1565,25 @@
});
}
+ private void reportMetrics(int resultCode, boolean allowed) {
+ if (resultCode == SATELLITE_RESULT_SUCCESS) {
+ mControllerMetricsStats.reportAllowedSatelliteAccessCount(allowed);
+ } else {
+ mControllerMetricsStats.reportFailedSatelliteAccessCheckCount();
+ }
+
+ mAccessControllerMetricsStats
+ .setLocationQueryTime(mLocationQueryStartTimeMillis)
+ .setTotalCheckingTime(mTotalCheckingStartTimeMillis)
+ .setIsAllowed(allowed)
+ .setIsEmergency(isInEmergency())
+ .setResult(resultCode)
+ .reportAccessControllerMetrics();
+ mLocationQueryStartTimeMillis = 0;
+ mOnDeviceLookupStartTimeMillis = 0;
+ mTotalCheckingStartTimeMillis = 0;
+ }
+
private static void logd(@NonNull String log) {
Rlog.d(TAG, log);
}
diff --git a/src/com/android/phone/security/SafetySourceReceiver.java b/src/com/android/phone/security/SafetySourceReceiver.java
index d2be1a1..76f8e72 100644
--- a/src/com/android/phone/security/SafetySourceReceiver.java
+++ b/src/com/android/phone/security/SafetySourceReceiver.java
@@ -28,8 +28,10 @@
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.flags.Flags;
import com.android.phone.PhoneGlobals;
+import com.android.telephony.Rlog;
public class SafetySourceReceiver extends BroadcastReceiver {
+ private static final String TAG = "TelephonySafetySourceReceiver";
@Override
public void onReceive(Context context, Intent intent) {
@@ -72,6 +74,11 @@
@VisibleForTesting
public Phone getDefaultPhone() {
- return PhoneGlobals.getPhone();
+ try {
+ return PhoneGlobals.getPhone();
+ } catch (IllegalStateException e) {
+ Rlog.i(TAG, "Unable to get phone. Skipping safety source refresh: " + e.getMessage());
+ }
+ return null;
}
}
diff --git a/src/com/android/phone/settings/RadioInfo.java b/src/com/android/phone/settings/RadioInfo.java
index d136b9c..c59f92a 100644
--- a/src/com/android/phone/settings/RadioInfo.java
+++ b/src/com/android/phone/settings/RadioInfo.java
@@ -58,6 +58,7 @@
import android.telephony.CellInfoLte;
import android.telephony.CellInfoNr;
import android.telephony.CellInfoWcdma;
+import android.telephony.CellSignalStrength;
import android.telephony.CellSignalStrengthCdma;
import android.telephony.CellSignalStrengthGsm;
import android.telephony.CellSignalStrengthLte;
@@ -74,6 +75,7 @@
import android.telephony.TelephonyDisplayInfo;
import android.telephony.TelephonyManager;
import android.telephony.data.NetworkSlicingConfig;
+import android.telephony.euicc.EuiccManager;
import android.telephony.ims.ImsException;
import android.telephony.ims.ImsManager;
import android.telephony.ims.ImsMmTelManager;
@@ -110,6 +112,7 @@
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
+import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -170,6 +173,36 @@
"Unknown"
};
+ private static final Integer[] SIGNAL_STRENGTH_LEVEL = new Integer[] {
+ -1 /*clear mock*/,
+ CellSignalStrength.SIGNAL_STRENGTH_NONE_OR_UNKNOWN,
+ CellSignalStrength.SIGNAL_STRENGTH_POOR,
+ CellSignalStrength.SIGNAL_STRENGTH_MODERATE,
+ CellSignalStrength.SIGNAL_STRENGTH_GOOD,
+ CellSignalStrength.SIGNAL_STRENGTH_GREAT
+ };
+ private static final Integer[] MOCK_DATA_NETWORK_TYPE = new Integer[] {
+ -1 /*clear mock*/,
+ ServiceState.RIL_RADIO_TECHNOLOGY_GPRS,
+ ServiceState.RIL_RADIO_TECHNOLOGY_EDGE,
+ ServiceState.RIL_RADIO_TECHNOLOGY_UMTS,
+ ServiceState.RIL_RADIO_TECHNOLOGY_IS95A,
+ ServiceState.RIL_RADIO_TECHNOLOGY_IS95B,
+ ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT,
+ ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0,
+ ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_A,
+ ServiceState.RIL_RADIO_TECHNOLOGY_HSDPA,
+ ServiceState.RIL_RADIO_TECHNOLOGY_HSUPA,
+ ServiceState.RIL_RADIO_TECHNOLOGY_HSPA,
+ ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_B,
+ ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD,
+ ServiceState.RIL_RADIO_TECHNOLOGY_LTE,
+ ServiceState.RIL_RADIO_TECHNOLOGY_HSPAP,
+ ServiceState.RIL_RADIO_TECHNOLOGY_GSM,
+ ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA,
+ ServiceState.RIL_RADIO_TECHNOLOGY_LTE_CA,
+ ServiceState.RIL_RADIO_TECHNOLOGY_NR
+ };
private static String[] sPhoneIndexLabels;
private static final int sCellInfoListRateDisabled = Integer.MAX_VALUE;
@@ -266,6 +299,7 @@
private TextView mNrState;
private TextView mNrFrequency;
private TextView mNetworkSlicingConfig;
+ private TextView mEuiccInfo;
private EditText mSmsc;
private Switch mRadioPowerOnSwitch;
private Switch mSimulateOutOfServiceSwitch;
@@ -286,6 +320,9 @@
private Switch mDsdsSwitch;
private Switch mRemovableEsimSwitch;
private Spinner mPreferredNetworkType;
+ private Spinner mMockSignalStrength;
+ private Spinner mMockDataNetworkType;
+
private Spinner mSelectPhoneIndex;
private Spinner mCellInfoRefreshRateSpinner;
@@ -298,6 +335,7 @@
private ImsManager mImsManager = null;
private Phone mPhone = null;
private ProvisioningManager mProvisioningManager = null;
+ private EuiccManager mEuiccManager;
private String mPingHostnameResultV4;
private String mPingHostnameResultV6;
@@ -308,6 +346,9 @@
private final PersistableBundle[] mCarrierSatelliteOriginalBundle = new PersistableBundle[2];
private List<CellInfo> mCellInfoResult = null;
private final boolean[] mSimulateOos = new boolean[2];
+ private int[] mSelectedSignalStrengthIndex = new int[2];
+ private int[] mSelectedMockDataNetworkTypeIndex = new int[2];
+ private String mEuiccInfoResult = "";
private int mPreferredNetworkTypeResult;
private int mCellInfoRefreshRateIndex;
@@ -524,6 +565,7 @@
mPhone = getPhone(SubscriptionManager.getDefaultSubscriptionId());
mTelephonyManager = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE))
.createForSubscriptionId(mPhone.getSubId());
+ mEuiccManager = getSystemService(EuiccManager.class);
mImsManager = new ImsManager(mPhone.getContext());
try {
@@ -571,6 +613,7 @@
mNrFrequency = (TextView) findViewById(R.id.nr_frequency);
mPhyChanConfig = (TextView) findViewById(R.id.phy_chan_config);
mNetworkSlicingConfig = (TextView) findViewById(R.id.network_slicing_config);
+ mEuiccInfo = (TextView) findViewById(R.id.euicc_info);
// hide 5G stats on devices that don't support 5G
if ((mTelephonyManager.getSupportedRadioAccessFamily()
@@ -585,6 +628,29 @@
.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mPreferredNetworkType.setAdapter(mPreferredNetworkTypeAdapter);
+ mMockSignalStrength = (Spinner) findViewById(R.id.signalStrength);
+ if (!TelephonyUtils.IS_DEBUGGABLE) {
+ mMockSignalStrength.setVisibility(View.GONE);
+ } else {
+ ArrayAdapter<Integer> mSignalStrengthAdapter = new ArrayAdapter<>(this,
+ android.R.layout.simple_spinner_item, SIGNAL_STRENGTH_LEVEL);
+ mSignalStrengthAdapter
+ .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ mMockSignalStrength.setAdapter(mSignalStrengthAdapter);
+ }
+
+ mMockDataNetworkType = (Spinner) findViewById(R.id.dataNetworkType);
+ if (!TelephonyUtils.IS_DEBUGGABLE) {
+ mMockDataNetworkType.setVisibility(View.GONE);
+ } else {
+ ArrayAdapter<String> mNetworkTypeAdapter = new ArrayAdapter<>(this,
+ android.R.layout.simple_spinner_item, Arrays.stream(MOCK_DATA_NETWORK_TYPE)
+ .map(ServiceState::rilRadioTechnologyToString).toArray(String[]::new));
+ mNetworkTypeAdapter
+ .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ mMockDataNetworkType.setAdapter(mNetworkTypeAdapter);
+ }
+
mSelectPhoneIndex = (Spinner) findViewById(R.id.phoneIndex);
ArrayAdapter<String> phoneIndexAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, sPhoneIndexLabels);
@@ -739,6 +805,7 @@
updateDnsCheckState();
updateNetworkType();
updateNrStats();
+ updateEuiccInfo();
updateCellInfo(mCellInfoResult);
updateSubscriptionIds();
@@ -764,6 +831,14 @@
RadioAccessFamily.getNetworkTypeFromRaf(networkType)));
}).start();
+ // mock signal strength
+ mMockSignalStrength.setSelection(mSelectedSignalStrengthIndex[mPhone.getPhoneId()]);
+ mMockSignalStrength.setOnItemSelectedListener(mOnMockSignalStrengthSelectedListener);
+
+ // mock data network type
+ mMockDataNetworkType.setSelection(mSelectedMockDataNetworkTypeIndex[mPhone.getPhoneId()]);
+ mMockDataNetworkType.setOnItemSelectedListener(mOnMockDataNetworkTypeSelectedListener);
+
// set phone index
mSelectPhoneIndex.setSelection(mSelectedPhoneIndex, true);
mSelectPhoneIndex.setOnItemSelectedListener(mSelectPhoneIndexHandler);
@@ -892,11 +967,20 @@
}
private void clearOverride() {
- if (mSimulateOutOfServiceSwitch.isChecked()) {
- mSimulateOosOnChangeListener.onCheckedChanged(mSimulateOutOfServiceSwitch, false);
- }
- if (mMockSatellite.isChecked()) {
- mMockSatelliteListener.onCheckedChanged(mMockSatellite, false);
+ for (int phoneId = 0; phoneId < sPhoneIndexLabels.length; phoneId++) {
+ mPhone = PhoneFactory.getPhone(phoneId);
+ if (mSimulateOos[mPhone.getPhoneId()]) {
+ mSimulateOosOnChangeListener.onCheckedChanged(mSimulateOutOfServiceSwitch, false);
+ }
+ if (mCarrierSatelliteOriginalBundle[mPhone.getPhoneId()] != null) {
+ mMockSatelliteListener.onCheckedChanged(mMockSatellite, false);
+ }
+ if (mSelectedSignalStrengthIndex[mPhone.getPhoneId()] > 0) {
+ mOnMockSignalStrengthSelectedListener.onItemSelected(null, null, 0/*pos*/, 0);
+ }
+ if (mSelectedMockDataNetworkTypeIndex[mPhone.getPhoneId()] > 0) {
+ mOnMockDataNetworkTypeSelectedListener.onItemSelected(null, null, 0/*pos*/, 0);
+ }
}
}
@@ -1383,6 +1467,34 @@
mReceived.setText(rxPackets + " " + packets + ", " + rxBytes + " " + bytes);
}
+ private void updateEuiccInfo() {
+ final Runnable setEuiccInfo = new Runnable() {
+ public void run() {
+ mEuiccInfo.setText(mEuiccInfoResult);
+ }
+ };
+
+ mQueuedWork.execute(new Runnable() {
+ @Override
+ public void run() {
+ if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY_EUICC)) {
+ mEuiccInfoResult = "Euicc Feature is disabled";
+ } else if (mEuiccManager == null || !mEuiccManager.isEnabled()) {
+ mEuiccInfoResult = "EuiccManager is not enabled";
+ } else {
+ try {
+ mEuiccInfoResult = " { Available memory in bytes:"
+ + mEuiccManager.getAvailableMemoryInBytes()
+ + " }";
+ } catch (Exception e) {
+ mEuiccInfoResult = e.getMessage();
+ }
+ }
+ mHandler.post(setEuiccInfo);
+ }
+ });
+ }
+
/**
* Ping a host name
*/
@@ -2045,6 +2157,43 @@
}
};
+ AdapterView.OnItemSelectedListener mOnMockSignalStrengthSelectedListener =
+ new AdapterView.OnItemSelectedListener() {
+
+ public void onItemSelected(AdapterView<?> parent, View v, int pos, long id) {
+ log("mOnSignalStrengthSelectedListener: " + pos);
+ mSelectedSignalStrengthIndex[mPhone.getPhoneId()] = pos;
+ mPhone.getTelephonyTester().setSignalStrength(SIGNAL_STRENGTH_LEVEL[pos]);
+ }
+
+ public void onNothingSelected(AdapterView<?> parent) {}
+ };
+
+
+ AdapterView.OnItemSelectedListener mOnMockDataNetworkTypeSelectedListener =
+ new AdapterView.OnItemSelectedListener() {
+
+ public void onItemSelected(AdapterView<?> parent, View v, int pos, long id) {
+ log("mOnMockDataNetworkTypeSelectedListener: " + pos);
+ mSelectedMockDataNetworkTypeIndex[mPhone.getPhoneId()] = pos;
+ Intent intent = new Intent("com.android.internal.telephony.TestServiceState");
+ if (pos > 0) {
+ log("mOnMockDataNetworkTypeSelectedListener: Override RAT: "
+ + ServiceState.rilRadioTechnologyToString(
+ MOCK_DATA_NETWORK_TYPE[pos]));
+ intent.putExtra("data_reg_state", ServiceState.STATE_IN_SERVICE);
+ intent.putExtra("data_rat", MOCK_DATA_NETWORK_TYPE[pos]);
+ } else {
+ log("mOnMockDataNetworkTypeSelectedListener: Remove RAT override.");
+ intent.putExtra("action", "reset");
+ }
+
+ mPhone.getTelephonyTester().setServiceStateTestIntent(intent);
+ }
+
+ public void onNothingSelected(AdapterView<?> parent) {}
+ };
+
AdapterView.OnItemSelectedListener mSelectPhoneIndexHandler =
new AdapterView.OnItemSelectedListener() {
diff --git a/src/com/android/phone/utils/CarrierAllowListInfo.java b/src/com/android/phone/utils/CarrierAllowListInfo.java
index 8e22cb9..3ab9733 100644
--- a/src/com/android/phone/utils/CarrierAllowListInfo.java
+++ b/src/com/android/phone/utils/CarrierAllowListInfo.java
@@ -23,7 +23,6 @@
import android.content.pm.Signature;
import android.telephony.Rlog;
import android.text.TextUtils;
-import android.util.Log;
import com.android.internal.telephony.uicc.IccUtils;
@@ -37,6 +36,7 @@
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -45,9 +45,9 @@
private static final String LOG_TAG = "CarrierAllowListInfo";
private JSONObject mDataJSON;
private static final String JSON_CHARSET = "UTF-8";
- private static final String MESSAGE_DIGEST_ALGORITHM = "SHA1";
- private static final String CALLER_SHA_1_ID = "callerSHA1Id";
- private static final String CALLER_CARRIER_ID = "carrierId";
+ private static final String MESSAGE_DIGEST_256_ALGORITHM = "SHA-256";
+ private static final String CALLER_SHA256_ID = "callerSHA256Ids";
+ private static final String CALLER_CARRIER_ID = "carrierIds";
public static final int INVALID_CARRIER_ID = -1;
private static final String CARRIER_RESTRICTION_OPERATOR_REGISTERED_FILE =
@@ -68,11 +68,12 @@
return mInstance;
}
- public int validateCallerAndGetCarrierId(String packageName) {
+ public Set<Integer> validateCallerAndGetCarrierIds(String packageName) {
CarrierInfo carrierInfo = parseJsonForCallerInfo(packageName);
boolean isValid = (carrierInfo != null) && validateCallerSignature(mContext, packageName,
carrierInfo.getSHAIdList());
- return (isValid) ? carrierInfo.getCallerCarrierId() : INVALID_CARRIER_ID;
+ return (isValid) ? carrierInfo.getCallerCarrierIdList() : Collections.singleton(
+ INVALID_CARRIER_ID);
}
private void loadJsonFile(Context context) {
@@ -94,13 +95,19 @@
try {
if (mDataJSON != null && callerPackage != null) {
JSONObject callerJSON = mDataJSON.getJSONObject(callerPackage.trim());
- JSONArray callerJSONArray = callerJSON.getJSONArray(CALLER_SHA_1_ID);
- int carrierId = callerJSON.getInt(CALLER_CARRIER_ID);
+ JSONArray callerJSONArray = callerJSON.getJSONArray(CALLER_SHA256_ID);
+ JSONArray carrierIdArray = callerJSON.getJSONArray(CALLER_CARRIER_ID);
+
+ Set<Integer> carrierIds = new HashSet<>();
+ for (int index = 0; index < carrierIdArray.length(); index++) {
+ carrierIds.add(carrierIdArray.getInt(index));
+ }
+
List<String> appSignatures = new ArrayList<>();
for (int index = 0; index < callerJSONArray.length(); index++) {
appSignatures.add((String) callerJSONArray.get(index));
}
- return new CarrierInfo(carrierId, appSignatures);
+ return new CarrierInfo(carrierIds, appSignatures);
}
} catch (JSONException ex) {
Rlog.e(LOG_TAG, "getCallerSignatureInfo: JSONException = " + ex);
@@ -134,7 +141,7 @@
/**
* API fetches all the related signatures of the given package from the packageManager
- * and validate all the signatures.
+ * and validate all the signatures using SHA-256.
*
* @param context context
* @param packageName package name of the caller to validate the signatures.
@@ -150,13 +157,13 @@
}
final PackageManager packageManager = context.getPackageManager();
try {
- MessageDigest sha1MDigest = MessageDigest.getInstance(MESSAGE_DIGEST_ALGORITHM);
+ MessageDigest sha256MDigest = MessageDigest.getInstance(MESSAGE_DIGEST_256_ALGORITHM);
final PackageInfo packageInfo = packageManager.getPackageInfo(packageName,
PackageManager.GET_SIGNATURES);
for (Signature signature : packageInfo.signatures) {
- final byte[] signatureSha1 = sha1MDigest.digest(signature.toByteArray());
- final String hexSignatureSha1 = IccUtils.bytesToHexString(signatureSha1);
- if (!allowListSignatures.contains(hexSignatureSha1)) {
+ final byte[] signatureSha256 = sha256MDigest.digest(signature.toByteArray());
+ final String hexSignatureSha256 = IccUtils.bytesToHexString(signatureSha256);
+ if (!allowListSignatures.contains(hexSignatureSha256)) {
return false;
}
}
@@ -183,16 +190,16 @@
}
private static class CarrierInfo {
- final private int mCallerCarrierId;
+ final private Set<Integer> mCallerCarrierIdList;
final private List<String> mSHAIdList;
- public CarrierInfo(int carrierId, List<String> SHAIds) {
- mCallerCarrierId = carrierId;
+ public CarrierInfo(Set<Integer> carrierIds, List<String> SHAIds) {
+ mCallerCarrierIdList = carrierIds;
mSHAIdList = SHAIds;
}
- public int getCallerCarrierId() {
- return mCallerCarrierId;
+ public Set<Integer> getCallerCarrierIdList() {
+ return mCallerCarrierIdList;
}
public List<String> getSHAIdList() {
@@ -203,10 +210,10 @@
@TestApi
public List<String> getShaIdList(String srcPkg, int carrierId) {
CarrierInfo carrierInfo = parseJsonForCallerInfo(srcPkg);
- if (carrierInfo != null && carrierInfo.getCallerCarrierId() == carrierId) {
+ if (carrierInfo != null && carrierInfo.getCallerCarrierIdList().contains(carrierId)) {
return carrierInfo.getSHAIdList();
}
- Rlog.e(LOG_TAG, "getShaIdList carrierId or shaIdList is empty");
+ Rlog.e(LOG_TAG, "getShaIdList: carrierId or shaIdList is empty");
return Collections.EMPTY_LIST;
}
}
diff --git a/src/com/android/services/telephony/DisconnectCauseUtil.java b/src/com/android/services/telephony/DisconnectCauseUtil.java
index 55d4a49..48786dc 100644
--- a/src/com/android/services/telephony/DisconnectCauseUtil.java
+++ b/src/com/android/services/telephony/DisconnectCauseUtil.java
@@ -23,12 +23,15 @@
import android.telecom.DisconnectCause;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
import android.telephony.ims.ImsReasonInfo;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.CallFailCause;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneFactory;
+import com.android.internal.telephony.flags.FeatureFlags;
+import com.android.internal.telephony.flags.FeatureFlagsImpl;
import com.android.internal.telephony.satellite.SatelliteController;
import com.android.phone.ImsUtil;
import com.android.phone.PhoneGlobals;
@@ -87,7 +90,7 @@
public static DisconnectCause toTelecomDisconnectCause(int telephonyDisconnectCause,
String reason, int phoneId) {
return toTelecomDisconnectCause(telephonyDisconnectCause, CallFailCause.NOT_VALID,
- reason, phoneId, null, new FlagsAdapterImpl());
+ reason, phoneId, null, new FlagsAdapterImpl(), false);
}
/**
@@ -104,7 +107,27 @@
int telephonyDisconnectCause, int telephonyPreciseDisconnectCause, String reason,
int phoneId, ImsReasonInfo imsReasonInfo, FlagsAdapter featureFlags) {
return toTelecomDisconnectCause(telephonyDisconnectCause, telephonyPreciseDisconnectCause,
- reason, phoneId, imsReasonInfo, getCarrierConfigBundle(phoneId), featureFlags);
+ reason, phoneId, imsReasonInfo, getCarrierConfigBundle(phoneId), featureFlags,
+ false);
+ }
+
+ /**
+ * Converts from a disconnect code in {@link android.telephony.DisconnectCause} into a more
+ * generic {@link android.telecom.DisconnectCause}.object, possibly populated with a localized
+ * message and tone for Slot.
+ * @param telephonyDisconnectCause The code for the reason for the disconnect.
+ * @param telephonyPreciseDisconnectCause The code for the precise reason for the disconnect.
+ * @param reason Description of the reason for the disconnect, not intended for the user to see.
+ * @param phoneId To support localized message based on phoneId
+ * @param imsReasonInfo
+ */
+ public static DisconnectCause toTelecomDisconnectCause(
+ int telephonyDisconnectCause, int telephonyPreciseDisconnectCause, String reason,
+ int phoneId, ImsReasonInfo imsReasonInfo, FlagsAdapter featureFlags,
+ boolean shouldTreatAsEmergency) {
+ return toTelecomDisconnectCause(telephonyDisconnectCause, telephonyPreciseDisconnectCause,
+ reason, phoneId, imsReasonInfo, getCarrierConfigBundle(phoneId), featureFlags,
+ shouldTreatAsEmergency);
}
/**
@@ -117,15 +140,15 @@
static DisconnectCause toTelecomDisconnectCause(
int telephonyDisconnectCause, int telephonyPreciseDisconnectCause, String reason,
int phoneId, ImsReasonInfo imsReasonInfo, PersistableBundle carrierConfig,
- FlagsAdapter featureFlags) {
+ FlagsAdapter featureFlags, boolean shouldTreatAsEmergency) {
Context context = PhoneGlobals.getInstance();
- return new DisconnectCause.Builder()
- .setCode(toTelecomDisconnectCauseCode(telephonyDisconnectCause, carrierConfig))
+ return new DisconnectCause.Builder(
+ toTelecomDisconnectCauseCode(telephonyDisconnectCause, carrierConfig))
.setLabel(toTelecomDisconnectCauseLabel(context, telephonyDisconnectCause,
telephonyPreciseDisconnectCause, carrierConfig, featureFlags))
.setDescription(toTelecomDisconnectCauseDescription(
- context, telephonyDisconnectCause, phoneId))
+ context, telephonyDisconnectCause, phoneId, shouldTreatAsEmergency))
.setReason(toTelecomDisconnectReason(
context, telephonyDisconnectCause, reason, phoneId))
.setTone(toTelecomDisconnectCauseTone(
@@ -141,8 +164,8 @@
* {@link android.telecom.DisconnectCause} disconnect code.
* @return The disconnect code as defined in {@link android.telecom.DisconnectCause}.
*/
- private static int toTelecomDisconnectCauseCode(int telephonyDisconnectCause,
- PersistableBundle carrierConfig) {
+ private static @DisconnectCause.DisconnectCauseCode int toTelecomDisconnectCauseCode(
+ int telephonyDisconnectCause, PersistableBundle carrierConfig) {
// special case: some carriers determine what disconnect causes play the BUSY tone.
// hence, must adjust the disconnectCause CODE to match the tone.
@@ -634,7 +657,8 @@
* Returns a description of the disconnect cause to be shown to the user.
*/
private static CharSequence toTelecomDisconnectCauseDescription(
- Context context, int telephonyDisconnectCause, int phoneId) {
+ Context context, int telephonyDisconnectCause, int phoneId,
+ boolean shouldTreatAsEmergency) {
if (context == null ) {
return "";
}
@@ -757,14 +781,31 @@
case android.telephony.DisconnectCause.OUT_OF_SERVICE:
// No network connection.
+ FeatureFlags mFeatureFlags = new FeatureFlagsImpl();
if (ImsUtil.shouldPromoteWfc(context, phoneId)) {
resourceId = R.string.incall_error_promote_wfc;
} else if (ImsUtil.isWfcModeWifiOnly(context, phoneId)) {
resourceId = R.string.incall_error_wfc_only_no_wireless_network;
} else if (ImsUtil.isWfcEnabled(context, phoneId)) {
- resourceId = R.string.incall_error_out_of_service_wfc;
+ if (!mFeatureFlags.showCallFailNotificationFor2gToggle()) {
+ resourceId = R.string.incall_error_out_of_service_wfc;
+ break;
+ }
+ if (is2gDisabled(phoneId) && !shouldTreatAsEmergency) {
+ resourceId = R.string.incall_error_out_of_service_wfc_2g_user;
+ } else {
+ resourceId = R.string.incall_error_out_of_service_wfc;
+ }
} else {
- resourceId = R.string.incall_error_out_of_service;
+ if (!mFeatureFlags.showCallFailNotificationFor2gToggle()) {
+ resourceId = R.string.incall_error_out_of_service;
+ break;
+ }
+ if (is2gDisabled(phoneId) && !shouldTreatAsEmergency) {
+ resourceId = R.string.incall_error_out_of_service_2g;
+ } else {
+ resourceId = R.string.incall_error_out_of_service;
+ }
}
break;
@@ -989,6 +1030,21 @@
return config;
}
+ /**
+ * Returns true if 2G is disabled.
+ */
+ protected static boolean is2gDisabled(int phoneId) {
+ Phone phone = PhoneFactory.getPhone(phoneId);
+ if (phone == null) {
+ return false;
+ }
+ long bitmask2g = TelephonyManager.NETWORK_CLASS_BITMASK_2G;
+ long currentlyAllowedNetworkTypes = phone.getAllowedNetworkTypes(
+ TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_ENABLE_2G);
+ boolean is2gEnabled = (currentlyAllowedNetworkTypes & bitmask2g) != 0;
+ return !is2gEnabled;
+ }
+
private static Integer getSatelliteErrorString() {
if (SatelliteController.getInstance().isSatelliteEnabled()) {
return R.string.incall_error_satellite_enabled;
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index 1509f0d..3dbae8e 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -2566,7 +2566,8 @@
preciseDisconnectCause,
mOriginalConnection.getVendorDisconnectCause(),
getPhone().getPhoneId(), imsReasonInfo,
- new FlagsAdapterImpl()));
+ new FlagsAdapterImpl(),
+ shouldTreatAsEmergencyCall()));
close();
}
break;
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index c3e17a4..51c4fc7 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -33,6 +33,7 @@
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.net.Uri;
import android.os.Bundle;
@@ -154,10 +155,6 @@
private static final String DISCONNECT_REASON_CARRIER_ROAMING_SATELLITE_MODE =
"CARRIER_ROAMING_SATELLITE_MODE";
- private static final String KEY_TURN_OFF_OEM_ENABLED_SATELLITE_DURING_EMERGENCY_CALL =
- "config_turn_off_oem_enabled_satellite_during_emergency_call";
-
-
private final TelephonyConnectionServiceProxy mTelephonyConnectionServiceProxy =
new TelephonyConnectionServiceProxy() {
@Override
@@ -1886,7 +1883,6 @@
// different underlying signaling (CDMA), which is already encapsulated in
// TelephonyConnection.
connection.onReject();
- connection.close();
}
/**
@@ -4728,6 +4724,11 @@
private void handleEmergencyCallStartedForSatelliteSOSMessageRecommender(
@NonNull TelephonyConnection connection, @NonNull Phone phone) {
+ if (!phone.getContext().getPackageManager().hasSystemFeature(
+ PackageManager.FEATURE_TELEPHONY_SATELLITE)) {
+ return;
+ }
+
if (mSatelliteSOSMessageRecommender == null) {
mSatelliteSOSMessageRecommender = new SatelliteSOSMessageRecommender(phone.getContext(),
phone.getContext().getMainLooper());
diff --git a/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java b/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
index daa4b4e..9f2e0a9 100644
--- a/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
+++ b/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelector.java
@@ -167,6 +167,9 @@
@Override
public void onAvailable(Network network) {
logi("onAvailable: " + network);
+ if (network != null && !mWiFiNetworksAvailable.contains(network)) {
+ mWiFiNetworksAvailable.add(network);
+ }
mWiFiAvailable = true;
sendEmptyMessage(MSG_WIFI_AVAILABLE);
}
@@ -174,12 +177,20 @@
@Override
public void onLost(Network network) {
logi("onLost: " + network);
+ if (network != null) {
+ mWiFiNetworksAvailable.remove(network);
+ }
+ if (!mWiFiNetworksAvailable.isEmpty()) {
+ logi("onLost: available networks=" + mWiFiNetworksAvailable);
+ return;
+ }
mWiFiAvailable = false;
}
@Override
public void onUnavailable() {
logi("onUnavailable");
+ mWiFiNetworksAvailable.clear();
mWiFiAvailable = false;
}
};
@@ -258,6 +269,7 @@
private final PowerManager.WakeLock mPartialWakeLock;
private final CrossSimRedialingController mCrossSimRedialingController;
private final DataConnectionStateHelper mEpdnHelper;
+ private final List<Network> mWiFiNetworksAvailable = new ArrayList<>();
/** Constructor. */
public EmergencyCallDomainSelector(Context context, int slotId, int subId,
@@ -639,6 +651,7 @@
mImsRegistered = mImsStateTracker.isImsRegistered();
logi("onImsRegistrationStateChanged " + mImsRegistered);
selectDomain();
+ handleImsStateChange();
}
@Override
@@ -647,6 +660,14 @@
mIsVoiceCapable = mImsStateTracker.isImsVoiceCapable();
logi("onImsMmTelCapabilitiesChanged " + mIsVoiceCapable);
selectDomain();
+ handleImsStateChange();
+ }
+
+ private void handleImsStateChange() {
+ if (!mVoWifiOverEmergencyPdn && !mDomainSelected
+ && (mMaxCellularTimerExpired || mNetworkScanTimerExpired)) {
+ maybeDialOverWlan();
+ }
}
private boolean isSimReady() {
@@ -1622,6 +1643,7 @@
return;
}
+ mWiFiNetworksAvailable.clear();
ConnectivityManager cm = mContext.getSystemService(ConnectivityManager.class);
if (cm != null) {
logi("registerForConnectivityChanges");
@@ -1640,6 +1662,7 @@
return;
}
+ mWiFiNetworksAvailable.clear();
ConnectivityManager cm = mContext.getSystemService(ConnectivityManager.class);
if (cm != null) {
logi("unregisterForConnectivityChanges");
@@ -1972,6 +1995,16 @@
}
}
+ @VisibleForTesting
+ public boolean isWiFiAvailable() {
+ return mWiFiAvailable;
+ }
+
+ @VisibleForTesting
+ public List<Network> getWiFiNetworksAvailable() {
+ return mWiFiNetworksAvailable;
+ }
+
@Override
protected void logi(String msg) {
super.logi(msg);
diff --git a/src/com/android/services/telephony/domainselection/NormalCallDomainSelector.java b/src/com/android/services/telephony/domainselection/NormalCallDomainSelector.java
index 31a1cc2..8d49634 100644
--- a/src/com/android/services/telephony/domainselection/NormalCallDomainSelector.java
+++ b/src/com/android/services/telephony/domainselection/NormalCallDomainSelector.java
@@ -108,7 +108,7 @@
mSelectorState = SelectorState.INACTIVE;
loge("Subscription-ids doesn't match. This instance is associated with sub-id:"
+ getSubId() + ", requested sub-id:" + subId);
- // TODO: Throw anamoly here. This condition should never occur.
+ // TODO: Throw anomaly here. This condition should never occur.
}
}
@@ -314,6 +314,7 @@
private synchronized void selectDomain() {
if (mSelectorState != SelectorState.ACTIVE || mSelectionAttributes == null
|| mTransportSelectorCallback == null) {
+ mSelectorState = SelectorState.INACTIVE;
logd("Domain Selection is stopped.");
return;
}
@@ -429,7 +430,7 @@
}
@VisibleForTesting
- public SelectorState getSelectorState() {
+ protected SelectorState getSelectorState() {
return mSelectorState;
}
}
diff --git a/src/com/android/services/telephony/rcs/TelephonyRcsService.java b/src/com/android/services/telephony/rcs/TelephonyRcsService.java
index f6ba40b..63753c2 100644
--- a/src/com/android/services/telephony/rcs/TelephonyRcsService.java
+++ b/src/com/android/services/telephony/rcs/TelephonyRcsService.java
@@ -33,6 +33,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.PhoneConfigurationManager;
+import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.metrics.RcsStats;
import com.android.internal.util.IndentingPrintWriter;
import com.android.phone.ImsStateCallbackController;
@@ -63,7 +64,8 @@
/**
* @return an instance of {@link UceControllerManager} associated with the slot specified.
*/
- UceControllerManager createUceControllerManager(Context context, int slotId, int subId);
+ UceControllerManager createUceControllerManager(Context context, int slotId, int subId,
+ FeatureFlags featureFlags);
/**
* @return an instance of {@link SipTransportController} for the slot and subscription
@@ -80,8 +82,8 @@
@Override
public UceControllerManager createUceControllerManager(Context context, int slotId,
- int subId) {
- return new UceControllerManager(context, slotId, subId);
+ int subId, FeatureFlags featureFlags) {
+ return new UceControllerManager(context, slotId, subId, featureFlags);
}
@Override
@@ -112,6 +114,7 @@
private final Context mContext;
private final Object mLock = new Object();
+ private final FeatureFlags mFeatureFlags;
private int mNumSlots;
// Maps slot ID -> RcsFeatureController.
@@ -160,23 +163,26 @@
return true;
});
- public TelephonyRcsService(Context context, int numSlots) {
+ public TelephonyRcsService(Context context, int numSlots, FeatureFlags featureFlags) {
mContext = context;
mNumSlots = numSlots;
mFeatureControllers = new SparseArray<>(numSlots);
mSlotToAssociatedSubIds = new SparseArray<>(numSlots);
mRcsUceEnabled = sResourceProxy.getDeviceUceEnabled(mContext);
+ mFeatureFlags = featureFlags;
RcsStats.getInstance().registerUceCallback();
}
@VisibleForTesting
- public TelephonyRcsService(Context context, int numSlots, ResourceProxy resourceProxy) {
+ public TelephonyRcsService(Context context, int numSlots, ResourceProxy resourceProxy,
+ FeatureFlags featureFlags) {
mContext = context;
mNumSlots = numSlots;
mFeatureControllers = new SparseArray<>(numSlots);
mSlotToAssociatedSubIds = new SparseArray<>(numSlots);
sResourceProxy = resourceProxy;
mRcsUceEnabled = sResourceProxy.getDeviceUceEnabled(mContext);
+ mFeatureFlags = featureFlags;
RcsStats.getInstance().registerUceCallback();
}
@@ -310,8 +316,8 @@
private void updateSupportedFeatures(RcsFeatureController c, int slotId, int subId) {
if (isDeviceUceEnabled() && doesSubscriptionSupportPresence(subId)) {
if (c.getFeature(UceControllerManager.class) == null) {
- c.addFeature(mFeatureFactory.createUceControllerManager(mContext, slotId, subId),
- UceControllerManager.class);
+ c.addFeature(mFeatureFactory.createUceControllerManager(
+ mContext, slotId, subId, mFeatureFlags), UceControllerManager.class);
}
} else {
if (c.getFeature(UceControllerManager.class) != null) {
diff --git a/src/com/android/services/telephony/rcs/UceControllerManager.java b/src/com/android/services/telephony/rcs/UceControllerManager.java
index 02ae048..b7e12a3 100644
--- a/src/com/android/services/telephony/rcs/UceControllerManager.java
+++ b/src/com/android/services/telephony/rcs/UceControllerManager.java
@@ -32,6 +32,7 @@
import com.android.ims.RcsFeatureManager;
import com.android.ims.rcs.uce.UceController;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.telephony.flags.FeatureFlags;
import java.io.PrintWriter;
import java.util.List;
@@ -53,15 +54,17 @@
private final int mSlotId;
private final Context mContext;
private final ExecutorService mExecutorService;
+ private final FeatureFlags mFeatureFlags;
private volatile @Nullable UceController mUceController;
private volatile @Nullable RcsFeatureManager mRcsFeatureManager;
- public UceControllerManager(Context context, int slotId, int subId) {
+ public UceControllerManager(Context context, int slotId, int subId, FeatureFlags featureFlags) {
Log.d(LOG_TAG, "create: slotId=" + slotId + ", subId=" + subId);
mSlotId = slotId;
mContext = context;
mExecutorService = Executors.newSingleThreadExecutor();
+ mFeatureFlags = featureFlags;
initUceController(subId);
}
@@ -70,11 +73,12 @@
*/
@VisibleForTesting
public UceControllerManager(Context context, int slotId, ExecutorService executor,
- UceController uceController) {
+ UceController uceController, FeatureFlags featureFlags) {
mSlotId = slotId;
mContext = context;
mExecutorService = executor;
mUceController = uceController;
+ mFeatureFlags = featureFlags;
}
@Override
@@ -440,7 +444,7 @@
if (mUceController == null) {
// Create new UceController only when the subscription ID is valid.
if (SubscriptionManager.isValidSubscriptionId(newSubId)) {
- mUceController = new UceController(mContext, newSubId);
+ mUceController = new UceController(mContext, newSubId, mFeatureFlags);
}
} else if (mUceController.getSubId() != newSubId) {
// The subscription ID is updated. Remove the old UceController instance.
@@ -448,7 +452,7 @@
mUceController = null;
// Create new UceController only when the subscription ID is valid.
if (SubscriptionManager.isValidSubscriptionId(newSubId)) {
- mUceController = new UceController(mContext, newSubId);
+ mUceController = new UceController(mContext, newSubId, mFeatureFlags);
}
}
}
diff --git a/testapps/TestRcsApp/TestApp/Android.bp b/testapps/TestRcsApp/TestApp/Android.bp
index ea62925..7654973 100644
--- a/testapps/TestRcsApp/TestApp/Android.bp
+++ b/testapps/TestRcsApp/TestApp/Android.bp
@@ -24,7 +24,7 @@
product_specific: true,
sdk_version: "system_current",
- min_sdk_version: "30",
+ min_sdk_version: "31",
required: ["privapp-permissions-com.google.android.sample.rcsclient.xml"],
lint: {
baseline_filename: "lint-baseline.xml",
diff --git a/testapps/TestRcsApp/aosp_test_rcsclient/Android.bp b/testapps/TestRcsApp/aosp_test_rcsclient/Android.bp
index e1de685..fc4dc8b 100644
--- a/testapps/TestRcsApp/aosp_test_rcsclient/Android.bp
+++ b/testapps/TestRcsApp/aosp_test_rcsclient/Android.bp
@@ -25,7 +25,7 @@
],
sdk_version: "system_current",
- min_sdk_version: "30",
+ min_sdk_version: "31",
lint: {
baseline_filename: "lint-baseline.xml",
},
diff --git a/testapps/TestSatelliteApp/AndroidManifest.xml b/testapps/TestSatelliteApp/AndroidManifest.xml
index fb30bf3..eaddf95 100644
--- a/testapps/TestSatelliteApp/AndroidManifest.xml
+++ b/testapps/TestSatelliteApp/AndroidManifest.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- ~ Copyright (C) 2023 The Android Open Source Project
+ ~ Copyright (C) 2024 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
@@ -46,6 +46,7 @@
<activity android:name=".Provisioning" />
<activity android:name=".MultipleSendReceive" />
<activity android:name=".SendReceive" />
+ <activity android:name=".NbIotSatellite" />
<activity android:name=".TestSatelliteWrapper" />
</application>
</manifest>
diff --git a/testapps/TestSatelliteApp/res/layout/activity_NbIotSatellite.xml b/testapps/TestSatelliteApp/res/layout/activity_NbIotSatellite.xml
new file mode 100644
index 0000000..c33522e
--- /dev/null
+++ b/testapps/TestSatelliteApp/res/layout/activity_NbIotSatellite.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2024 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License
+ -->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:gravity="center"
+ android:paddingStart="4dp"
+ android:paddingEnd="4dp">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="0dp"
+ android:layout_weight="0"
+ android:textColor="@android:color/holo_blue_dark"
+ android:textSize="20sp"
+ android:text="@string/NbIotSatellite"/>
+ <Button
+ android:id="@+id/testRegisterForSupportedStateChanged"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="4dp"
+ android:paddingEnd="4dp"
+ android:text="@string/testRegisterForSupportedStateChanged"/>
+ <Button
+ android:id="@+id/testUnregisterForSupportedStateChanged"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="4dp"
+ android:paddingEnd="4dp"
+ android:text="@string/testUnregisterForSupportedStateChanged"/>
+ <Button
+ android:id="@+id/testRequestIsSupported"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="4dp"
+ android:paddingEnd="4dp"
+ android:text="@string/testRequestIsSupported"/>
+ <Button
+ android:id="@+id/reportSatelliteSupportedFromModem"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="4dp"
+ android:paddingEnd="4dp"
+ android:text="@string/reportSatelliteSupportedFromModem"/>
+ <Button
+ android:id="@+id/reportSatelliteNotSupportedFromModem"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="4dp"
+ android:paddingEnd="4dp"
+ android:text="@string/reportSatelliteNotSupportedFromModem"/>
+ <Button
+ android:id="@+id/showCurrentSatelliteSupportedStated"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="4dp"
+ android:paddingEnd="4dp"
+ android:text="@string/showCurrentSatelliteSupportedStated"/>
+ <Button
+ android:id="@+id/Back"
+ android:onClick="Back"
+ android:textColor="@android:color/holo_blue_dark"
+ android:layout_marginTop="100dp"
+ android:layout_gravity="center"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingStart="4dp"
+ android:paddingEnd="4dp"
+ android:text="@string/Back"/>
+ <TextView
+ android:id="@+id/text_id"
+ android:layout_width="300dp"
+ android:layout_height="200dp"
+ android:textColor="@android:color/holo_blue_light"
+ android:textSize="15sp" />
+</LinearLayout>
diff --git a/testapps/TestSatelliteApp/res/layout/activity_SatelliteTestApp.xml b/testapps/TestSatelliteApp/res/layout/activity_SatelliteTestApp.xml
index 0753b82..5ba7946 100644
--- a/testapps/TestSatelliteApp/res/layout/activity_SatelliteTestApp.xml
+++ b/testapps/TestSatelliteApp/res/layout/activity_SatelliteTestApp.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- ~ Copyright (C) 2023 The Android Open Source Project
+ ~ Copyright (C) 2024 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
@@ -65,9 +65,17 @@
android:paddingRight="4dp"
android:text="@string/SendReceive"/>
<Button
+ android:id="@+id/NbIotSatellite"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="4dp"
+ android:paddingEnd="4dp"
+ android:text="@string/NbIotSatellite"/>
+ <Button
android:id="@+id/TestSatelliteWrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:paddingStart="4dp"
android:paddingEnd="4dp"
android:text="@string/TestSatelliteWrapper"/>
</LinearLayout>
diff --git a/testapps/TestSatelliteApp/res/values/donottranslate_strings.xml b/testapps/TestSatelliteApp/res/values/donottranslate_strings.xml
index 8ddfee1..df2aaf7 100644
--- a/testapps/TestSatelliteApp/res/values/donottranslate_strings.xml
+++ b/testapps/TestSatelliteApp/res/values/donottranslate_strings.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- ~ Copyright (C) 2023 The Android Open Source Project
+ ~ Copyright (C) 2024 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
@@ -21,6 +21,7 @@
<string name="Provisioning">Provisioning APIs</string>
<string name="MultipleSendReceive">Test multiple poll and send</string>
<string name="SendReceive">Send and Receive datagrams</string>
+ <string name="NbIotSatellite">NB IoT Satellite modem interface test</string>
<string name="enableSatellite">enableSatellite</string>
<string name="disableSatellite">disableSatellite</string>
@@ -83,6 +84,13 @@
<string name="isSatelliteEnabledForCarrier">isSatelliteEnabledForCarrier</string>
<string name="isRequestIsSatelliteEnabledForCarrier">isRequestIsSatelliteEnabledForCarrier</string>
+ <string name="testRegisterForSupportedStateChanged">testRegisterForSupportedStateChanged</string>
+ <string name="testUnregisterForSupportedStateChanged">testUnregisterForSupportedStateChanged</string>
+ <string name="testRequestIsSupported">testRequestIsSupported</string>
+ <string name="reportSatelliteSupportedFromModem">reportSatelliteSupportedFromModem</string>
+ <string name="reportSatelliteNotSupportedFromModem">reportSatelliteNotSupportedFromModem</string>
+ <string name="showCurrentSatelliteSupportedStated">showCurrentSatelliteSupportedStated</string>
+
<string name="Back">Back</string>
<string name="ClearLog">Clear Log</string>
</resources>
diff --git a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/NbIotSatellite.java b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/NbIotSatellite.java
new file mode 100644
index 0000000..17646f0
--- /dev/null
+++ b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/NbIotSatellite.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.phone.testapps.satellitetestapp;
+
+import static android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SUCCESS;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.os.OutcomeReceiver;
+import android.telephony.satellite.SatelliteManager;
+import android.telephony.satellite.SatelliteSupportedStateCallback;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.TextView;
+
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * Activity related to NB IoT satellite APIs.
+ */
+public class NbIotSatellite extends Activity {
+
+ private static final String TAG = "NbIotSatellite";
+ private static final String MY_SHARED_PREF = "MySharedPref";
+ private static final String SHARED_PREF_KEY = "supported_stated";
+ TextView mTextView;
+ private boolean mSatelliteSupported = false;
+ public static TestSatelliteService sSatelliteService;
+ private SatelliteManager mSatelliteManager;
+ private TestSatelliteSupportedStateCallback mSatelliteSupportedStateCallback;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ sSatelliteService = SatelliteTestApp.getTestSatelliteService();
+ mSatelliteManager = getSystemService(SatelliteManager.class);
+
+ setContentView(R.layout.activity_NbIotSatellite);
+ findViewById(R.id.testRegisterForSupportedStateChanged)
+ .setOnClickListener(this::testRegisterForSupportedStateChanged);
+ findViewById(R.id.testUnregisterForSupportedStateChanged)
+ .setOnClickListener(this::testUnregisterForSupportedStateChanged);
+ findViewById(R.id.testRequestIsSupported)
+ .setOnClickListener(this::testRequestIsSupported);
+ findViewById(R.id.reportSatelliteSupportedFromModem)
+ .setOnClickListener(this::reportSatelliteSupportedFromModem);
+ findViewById(R.id.reportSatelliteNotSupportedFromModem)
+ .setOnClickListener(this::reportSatelliteNotSupportedFromModem);
+ findViewById(R.id.showCurrentSatelliteSupportedStated)
+ .setOnClickListener(this::showCurrentSatelliteSupportedStated);
+ findViewById(R.id.Back).setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ startActivity(new Intent(NbIotSatellite.this, SatelliteTestApp.class));
+ }
+ });
+
+ mTextView = findViewById(R.id.text_id);
+ }
+
+ protected class TestSatelliteSupportedStateCallback implements SatelliteSupportedStateCallback {
+ @Override
+ public void onSatelliteSupportedStateChanged(boolean supported) {
+ mSatelliteSupported = supported;
+ updateLogMessage("onSatelliteSupportedStateChanged: "
+ + (mSatelliteSupported ? "Satellite is supported"
+ : "Satellite is not supported"));
+ Log.d(TAG, "onSatelliteSupportedStateChanged(): supported="
+ + mSatelliteSupported);
+ }
+ }
+
+ @SuppressLint("MissingPermission")
+ private void testRegisterForSupportedStateChanged(View view) {
+ if (mSatelliteSupportedStateCallback == null) {
+ mSatelliteSupportedStateCallback = new TestSatelliteSupportedStateCallback();
+ }
+ int result = mSatelliteManager.registerForSupportedStateChanged(Runnable::run,
+ mSatelliteSupportedStateCallback);
+
+ if (result == SATELLITE_RESULT_SUCCESS) {
+ updateLogMessage("testRegisterForSupportedStateChanged(): "
+ + "registered mSatelliteSupportedStateCallback");
+ } else {
+ updateLogMessage("Failed to registerForSupportedStateChanged(), reason=" + result);
+ }
+ }
+
+ @SuppressLint("MissingPermission")
+ private void testUnregisterForSupportedStateChanged(View view) {
+ if (mSatelliteSupportedStateCallback != null) {
+ mSatelliteManager.unregisterForSupportedStateChanged(mSatelliteSupportedStateCallback);
+ mSatelliteSupportedStateCallback = null;
+ updateLogMessage("testUnregisterForSupportedStateChanged(): unregister callback.");
+ } else {
+ updateLogMessage("testUnregisterForSupportedStateChanged(): ignored, "
+ + "mSatelliteSupportedStateCallback is already null");
+ }
+ }
+
+ private void testRequestIsSupported(View view) {
+ final AtomicReference<Boolean> enabled = new AtomicReference<>();
+ final AtomicReference<Integer> errorCode = new AtomicReference<>();
+ OutcomeReceiver<Boolean, SatelliteManager.SatelliteException> mReceiver =
+ new OutcomeReceiver<>() {
+ @Override
+ public void onResult(Boolean result) {
+ enabled.set(result);
+ updateLogMessage("Status for requestIsSupported result: "
+ + enabled.get());
+ }
+
+ @Override
+ public void onError(SatelliteManager.SatelliteException exception) {
+ errorCode.set(exception.getErrorCode());
+ updateLogMessage("Status for requestIsSupported error : "
+ + SatelliteErrorUtils.mapError(errorCode.get()));
+ }
+ };
+ mSatelliteManager.requestIsSupported(Runnable::run, mReceiver);
+ }
+
+ private void showCurrentSatelliteSupportedStated(View view) {
+ boolean mModemSupportedState = sSatelliteService.getSatelliteSupportedState();
+ updateLogMessage("reported supported state is " + mSatelliteSupported
+ + ", modem supported state is " + mModemSupportedState);
+ }
+
+ private void reportSatelliteSupportedFromModem(View view) {
+ sSatelliteService.updateSatelliteSupportedState(true);
+ }
+
+ private void reportSatelliteNotSupportedFromModem(View view) {
+ sSatelliteService.updateSatelliteSupportedState(false);
+ }
+
+ // Fetch the stored data in onResume()
+ // Because this is what will be called when the app opens again
+ @Override
+ protected void onResume() {
+ super.onResume();
+ // Fetching the stored data from the SharedPreference
+ SharedPreferences sh = getSharedPreferences("MySharedPref", MODE_PRIVATE);
+ boolean isProvisioned = sh.getBoolean("provision_state", mSatelliteSupported);
+
+ // Setting the fetched data
+ mSatelliteSupported = isProvisioned;
+ }
+
+ // Store the data in the SharedPreference in the onPause() method
+ // When the user closes the application onPause() will be called and data will be stored
+ @Override
+ protected void onPause() {
+ super.onPause();
+ // Creating a shared pref object with a file name "MySharedPref" in private mode
+ SharedPreferences sharedPreferences = getSharedPreferences(MY_SHARED_PREF, MODE_PRIVATE);
+ SharedPreferences.Editor myEdit = sharedPreferences.edit();
+
+ // write all the data entered by the user in SharedPreference and apply
+ myEdit.putBoolean(SHARED_PREF_KEY, mSatelliteSupported);
+ myEdit.apply();
+ }
+
+ private void updateLogMessage(String message) {
+ runOnUiThread(() -> mTextView.setText(message));
+ }
+
+ protected void onDestroy() {
+ super.onDestroy();
+ SharedPreferences sharedPreferences = getSharedPreferences(MY_SHARED_PREF, MODE_PRIVATE);
+
+ final SharedPreferences.Editor sharedPrefsEditor = sharedPreferences.edit();
+ sharedPrefsEditor.remove(SHARED_PREF_KEY);
+ sharedPrefsEditor.apply();
+ }
+}
diff --git a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteTestApp.java b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteTestApp.java
index c8ee5fa..7c4ae00 100644
--- a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteTestApp.java
+++ b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteTestApp.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2023 The Android Open Source Project
+ * Copyright (C) 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -89,6 +89,13 @@
startActivity(intent);
}
});
+ findViewById(R.id.NbIotSatellite).setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(SatelliteTestApp.this, NbIotSatellite.class);
+ startActivity(intent);
+ }
+ });
findViewById(R.id.TestSatelliteWrapper).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
diff --git a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteService.java b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteService.java
index afa20bc..b5b781c 100644
--- a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteService.java
+++ b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteService.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2023 The Android Open Source Project
+ * Copyright (C) 2024 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -36,6 +36,7 @@
import android.telephony.satellite.stub.SatelliteModemState;
import android.telephony.satellite.stub.SatelliteResult;
import android.telephony.satellite.stub.SatelliteService;
+import android.telephony.satellite.stub.SystemSelectionSpecifier;
import android.util.Log;
import com.android.internal.util.FunctionalUtils;
@@ -434,6 +435,23 @@
mIsRequestIsSatelliteEnabledForCarrier = true;
}
+ @Override
+ public void updateSatelliteSubscription(@NonNull String iccId,
+ @NonNull IIntegerConsumer resultCallback) {
+ logd("updateSatelliteSubscription: iccId=" + iccId + " mErrorCode=" + mErrorCode);
+ runWithExecutor(() -> resultCallback.accept(mErrorCode));
+ }
+
+ @Override
+ public void updateSystemSelectionChannels(
+ @NonNull List<SystemSelectionSpecifier> systemSelectionSpecifiers,
+ @NonNull IIntegerConsumer resultCallback) {
+ logd(" updateSystemSelectionChannels: "
+ + "systemSelectionSpecifiers=" + systemSelectionSpecifiers
+ + " mErrorCode=" + mErrorCode);
+ runWithExecutor(() -> resultCallback.accept(mErrorCode));
+ }
+
public void setLocalSatelliteListener(@NonNull ILocalSatelliteListener listener) {
logd("setLocalSatelliteListener: listener=" + listener);
mLocalListener = listener;
@@ -471,6 +489,16 @@
}
/**
+ * Helper method to report satellite supported from modem side for testing purpose.
+ * @param supported whether satellite is supported from modem or not.
+ */
+ public void sendOnSatelliteSupportedStateChanged(boolean supported) {
+ logd("sendOnSatelliteSupportedStateChanged: supported=" + supported);
+ mRemoteListeners.values().forEach(listener -> runWithExecutor(() ->
+ listener.onSatelliteSupportedStateChanged(supported)));
+ }
+
+ /**
* Helper method to verify that the satellite modem is properly configured to receive
* requests.
*
@@ -574,6 +602,22 @@
}
/**
+ * Helper methoid to provide a way to set supported state from test application to mock modem.
+ * @param supported whether satellite is supported by modem or not.
+ */
+ public void updateSatelliteSupportedState(boolean supported) {
+ logd("updateSatelliteSupportedState: supported=" + supported);
+ mIsSupported = supported;
+ mRemoteListeners.values().forEach(listener -> runWithExecutor(
+ () -> listener.onSatelliteSupportedStateChanged(mIsSupported)));
+
+ }
+
+ public boolean getSatelliteSupportedState() {
+ return mIsSupported;
+ }
+
+ /**
* Log the message to the radio buffer with {@code DEBUG} priority.
*
* @param log The message to log.
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 4f0679d..27967f4 100644
--- a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteWrapper.java
+++ b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteWrapper.java
@@ -248,7 +248,7 @@
String message = "Received SatelliteCapabillities : "
+ SatelliteCapabilities;
logd(message);
- runOnUiThread(() -> addLogMessage(message));
+ addLogMessage(message);
};
}
@@ -281,7 +281,7 @@
@NonNull NtnSignalStrengthWrapper ntnSignalStrength) {
String message = "Received NTN SignalStrength : " + ntnSignalStrength.getLevel();
logd(message);
- runOnUiThread(() -> addLogMessage(message));
+ addLogMessage(message);
}
}
@@ -317,7 +317,7 @@
}
Consumer<Integer> callback = result -> {
- runOnUiThread(() -> addLogMessage("requestAttachEnabledForCarrier result: " + result));
+ addLogMessage("requestAttachEnabledForCarrier result: " + result);
logd("requestAttachEnabledForCarrier result: " + result);
};
@@ -342,7 +342,7 @@
}
Consumer<Integer> callback = result -> {
- runOnUiThread(() -> addLogMessage("requestAttachEnabledForCarrier result: " + result));
+ addLogMessage("requestAttachEnabledForCarrier result: " + result);
logd("requestAttachEnabledForCarrier result: " + result);
};
@@ -409,7 +409,7 @@
int reason = SatelliteManagerWrapper.SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER;
Consumer<Integer> callback = result -> {
- runOnUiThread(() -> addLogMessage("addAttachRestrictionForCarrier result: " + result));
+ addLogMessage("addAttachRestrictionForCarrier result: " + result);
logd("addAttachRestrictionForCarrier result: " + result);
};
@@ -436,8 +436,7 @@
int reason = SatelliteManagerWrapper.SATELLITE_COMMUNICATION_RESTRICTION_REASON_USER;
Consumer<Integer> callback = result -> {
- runOnUiThread(
- () -> addLogMessage("removeAttachRestrictionForCarrier result: " + result));
+ addLogMessage("removeAttachRestrictionForCarrier result: " + result);
logd("removeAttachRestrictionForCarrier result: " + result);
};
@@ -569,9 +568,11 @@
}
private void addLogMessage(String message) {
- mLogMessages.add(message);
- mAdapter.notifyDataSetChanged();
- mLogListView.setSelection(mAdapter.getCount() - 1);
+ runOnUiThread(() -> {
+ mLogMessages.add(message);
+ mAdapter.notifyDataSetChanged();
+ mLogListView.setSelection(mAdapter.getCount() - 1);
+ });
}
private static void logd(String message) {
diff --git a/tests/Android.bp b/tests/Android.bp
index 6914839..0fcd60e 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -50,7 +50,6 @@
"testables",
"platform-compat-test-rules",
"flag-junit",
- "telephony_flags_core_java_lib",
"satellite-s2storage-rw",
"satellite-s2storage-testutils",
"s2-geometry-library-java",
diff --git a/tests/src/com/android/TestContext.java b/tests/src/com/android/TestContext.java
index 111df53..a96ce2e 100644
--- a/tests/src/com/android/TestContext.java
+++ b/tests/src/com/android/TestContext.java
@@ -19,6 +19,7 @@
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.when;
import android.content.AttributionSource;
import android.content.BroadcastReceiver;
@@ -61,6 +62,7 @@
@Mock SubscriptionManager mMockSubscriptionManager;
@Mock ImsManager mMockImsManager;
@Mock UserManager mMockUserManager;
+ @Mock PackageManager mPackageManager;
private final SparseArray<PersistableBundle> mCarrierConfigs = new SparseArray<>();
@@ -80,6 +82,7 @@
int subId = (int) invocation.getArguments()[0];
return getTestConfigs(subId);
}).when(mMockCarrierConfigManager).getConfigForSubId(anyInt(), anyString());
+ when(mPackageManager.hasSystemFeature(anyString())).thenReturn(true);
}
@Override
@@ -145,6 +148,11 @@
}
@Override
+ public PackageManager getPackageManager() {
+ return mPackageManager;
+ }
+
+ @Override
public ContentResolver getContentResolver() {
return null;
}
diff --git a/tests/src/com/android/phone/CarrierConfigLoaderTest.java b/tests/src/com/android/phone/CarrierConfigLoaderTest.java
index f4197d9..bda2313 100644
--- a/tests/src/com/android/phone/CarrierConfigLoaderTest.java
+++ b/tests/src/com/android/phone/CarrierConfigLoaderTest.java
@@ -429,11 +429,16 @@
@Test
@EnableCompatChanges({TelephonyManager.ENABLE_FEATURE_MAPPING})
- public void testGetConfigForSubIdWithFeature_withTelephonyFeatureMapping() {
+ public void testGetConfigForSubIdWithFeature_withTelephonyFeatureMapping() throws Exception {
doNothing().when(mContext).enforcePermission(
eq(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE),
anyInt(), anyInt(), anyString());
+ // Replace field to set SDK version of vendor partition to Android V
+ int vendorApiLevel = Build.VERSION_CODES.VANILLA_ICE_CREAM;
+ replaceInstance(CarrierConfigLoader.class, "mVendorApiLevel", mCarrierConfigLoader,
+ vendorApiLevel);
+
doReturn(true).when(mFeatureFlags).enforceTelephonyFeatureMappingForPublicApis();
doReturn(false).when(mPackageManager).hasSystemFeature(
eq(PackageManager.FEATURE_TELEPHONY_SUBSCRIPTION));
diff --git a/tests/src/com/android/phone/ImsProvisioningControllerTest.java b/tests/src/com/android/phone/ImsProvisioningControllerTest.java
index e12be53..6599f03 100644
--- a/tests/src/com/android/phone/ImsProvisioningControllerTest.java
+++ b/tests/src/com/android/phone/ImsProvisioningControllerTest.java
@@ -77,6 +77,7 @@
import com.android.ims.ImsConfig;
import com.android.ims.ImsManager;
import com.android.ims.RcsFeatureManager;
+import com.android.internal.telephony.flags.FeatureFlags;
import org.junit.After;
import org.junit.Before;
@@ -169,6 +170,9 @@
@Mock
IBinder mIbinder1;
+ @Mock
+ FeatureFlags mFeatureFlags;
+
private SubscriptionManager.OnSubscriptionsChangedListener mSubChangedListener;
private Handler mHandler;
@@ -192,7 +196,7 @@
TestImsProvisioningController() {
super(mPhone, 2, mHandlerThread.getLooper(),
mMmTelFeatureConnector, mRcsFeatureConnector,
- mImsProvisioningLoader);
+ mImsProvisioningLoader, mFeatureFlags);
}
protected int getSubId(int slotId) {
@@ -369,8 +373,6 @@
}
// verify other interactions
- verifyNoMoreInteractions(mIFeatureProvisioningCallback0);
- verifyNoMoreInteractions(mIFeatureProvisioningCallback1);
verifyNoMoreInteractions(mImsConfig);
}
@@ -408,8 +410,6 @@
verify(mImsConfig, times(1)).setConfig(eq(key), anyInt());
// verify other interactions
- verifyNoMoreInteractions(mIFeatureProvisioningCallback0);
- verifyNoMoreInteractions(mIFeatureProvisioningCallback1);
verifyNoMoreInteractions(mImsConfig);
}
@@ -926,8 +926,6 @@
verify(mImsConfig, times(1)).setConfig(
eq(KEY_VOICE_OVER_WIFI_ENABLED_OVERRIDE), eq(PROVISIONING_VALUE_ENABLED));
- verifyNoMoreInteractions(mIFeatureProvisioningCallback0);
- verifyNoMoreInteractions(mIFeatureProvisioningCallback1);
verifyNoMoreInteractions(mImsConfig);
verifyNoMoreInteractions(mImsProvisioningLoader);
}
@@ -1849,6 +1847,184 @@
verifyNoMoreInteractions(mImsConfig);
}
+ @Test
+ @SmallTest
+ public void initialNotifyMmTelProvisioningStatusWhenCallbackRegistered() throws Exception {
+ when(mFeatureFlags.notifyInitialImsProvisioningStatus()).thenReturn(true);
+
+ createImsProvisioningController();
+
+ // Provisioning required for capability on all network type
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY,
+ RADIO_TECHS);
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY,
+ RADIO_TECHS);
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_UT_INT_ARRAY,
+ RADIO_TECHS);
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_SMS_INT_ARRAY,
+ RADIO_TECHS);
+ setCarrierConfig(mSubId0,
+ CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_CALL_COMPOSER_INT_ARRAY, RADIO_TECHS);
+
+ // Stored provisioning Status
+ mMmTelProvisioningStorage = new int[][] {
+ {CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_LTE, 0},
+ {CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_IWLAN, 1},
+ {CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_CROSS_SIM, 1},
+ {CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_NR, 1},
+ {CAPABILITY_TYPE_VIDEO, REGISTRATION_TECH_LTE, 0},
+ {CAPABILITY_TYPE_VIDEO, REGISTRATION_TECH_IWLAN, 0},
+ {CAPABILITY_TYPE_VIDEO, REGISTRATION_TECH_CROSS_SIM, 1},
+ {CAPABILITY_TYPE_VIDEO, REGISTRATION_TECH_NR, 1},
+ {CAPABILITY_TYPE_UT, REGISTRATION_TECH_LTE, 0},
+ {CAPABILITY_TYPE_UT, REGISTRATION_TECH_IWLAN, 0},
+ {CAPABILITY_TYPE_UT, REGISTRATION_TECH_CROSS_SIM, 0},
+ {CAPABILITY_TYPE_UT, REGISTRATION_TECH_NR, 0},
+ {CAPABILITY_TYPE_SMS, REGISTRATION_TECH_LTE, 1},
+ {CAPABILITY_TYPE_SMS, REGISTRATION_TECH_IWLAN, 1},
+ {CAPABILITY_TYPE_SMS, REGISTRATION_TECH_CROSS_SIM, 1},
+ {CAPABILITY_TYPE_SMS, REGISTRATION_TECH_NR, 1},
+ {CAPABILITY_TYPE_CALL_COMPOSER, REGISTRATION_TECH_LTE, 1},
+ {CAPABILITY_TYPE_CALL_COMPOSER, REGISTRATION_TECH_IWLAN, 1},
+ {CAPABILITY_TYPE_CALL_COMPOSER, REGISTRATION_TECH_CROSS_SIM, 0},
+ {CAPABILITY_TYPE_CALL_COMPOSER, REGISTRATION_TECH_NR, 1}
+ };
+
+ try {
+ mTestImsProvisioningController.addFeatureProvisioningChangedCallback(
+ mSubId0, mIFeatureProvisioningCallback0);
+ } catch (Exception e) {
+ throw new AssertionError("not expected exception", e);
+ }
+ processAllMessages();
+
+ for (int[] capa: mMmTelProvisioningStorage) {
+ verify(mIFeatureProvisioningCallback0, times(1))
+ .onFeatureProvisioningChanged(eq(capa[0]), eq(capa[1]), eq(capa[2] == 1));
+ }
+ }
+
+ @Test
+ @SmallTest
+ public void initialNotifyRcsProvisioningStatusWhenCallbackRegistered() throws Exception {
+ when(mFeatureFlags.notifyInitialImsProvisioningStatus()).thenReturn(true);
+
+ createImsProvisioningController();
+
+ // Provisioning required capability : PRESENCE, tech : all
+ setCarrierConfig(mSubId0,
+ CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY, RADIO_TECHS);
+
+ // Stored provisioning Status
+ mRcsProvisioningStorage = new int[][]{
+ {CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_LTE, 1},
+ {CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_IWLAN, 1},
+ {CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_CROSS_SIM, 0},
+ {CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_NR, 1}
+ };
+
+ try {
+ mTestImsProvisioningController.addFeatureProvisioningChangedCallback(
+ mSubId0, mIFeatureProvisioningCallback0);
+ } catch (Exception e) {
+ throw new AssertionError("not expected exception", e);
+ }
+ processAllMessages();
+
+ for (int[] capa: mRcsProvisioningStorage) {
+ verify(mIFeatureProvisioningCallback0, times(1))
+ .onRcsFeatureProvisioningChanged(eq(capa[0]), eq(capa[1]), eq(capa[2] == 1));
+ }
+ }
+
+ @Test
+ @SmallTest
+ public void initialNotifyMmTelProvisioningStatusWhenImsServiceConnected() throws Exception {
+ when(mFeatureFlags.notifyInitialImsProvisioningStatus()).thenReturn(true);
+
+ createImsProvisioningController();
+
+ // Provisioning required for capability on all network type
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VOICE_INT_ARRAY,
+ RADIO_TECHS);
+ setCarrierConfig(mSubId0, CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_VIDEO_INT_ARRAY,
+ RADIO_TECHS);
+
+ // Stored provisioning Status
+ mMmTelProvisioningStorage = new int[][] {
+ {CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_LTE, 1},
+ {CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_IWLAN, 1},
+ {CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_CROSS_SIM, 1},
+ {CAPABILITY_TYPE_VOICE, REGISTRATION_TECH_NR, 1},
+ {CAPABILITY_TYPE_VIDEO, REGISTRATION_TECH_LTE, 1},
+ {CAPABILITY_TYPE_VIDEO, REGISTRATION_TECH_IWLAN, 0},
+ {CAPABILITY_TYPE_VIDEO, REGISTRATION_TECH_CROSS_SIM, 0},
+ {CAPABILITY_TYPE_VIDEO, REGISTRATION_TECH_NR, 1},
+ };
+
+ try {
+ mTestImsProvisioningController.addFeatureProvisioningChangedCallback(
+ mSubId0, mIFeatureProvisioningCallback0);
+ } catch (Exception e) {
+ throw new AssertionError("not expected exception", e);
+ }
+ processAllMessages();
+
+ // clear interactions
+ clearInvocations(mIFeatureProvisioningCallback0);
+
+ // ImsService connected
+ mMmTelConnectorListener0.getValue().connectionReady(mImsManager, mSubId0);
+
+ for (int[] capa: mMmTelProvisioningStorage) {
+ verify(mIFeatureProvisioningCallback0, times(1))
+ .onFeatureProvisioningChanged(eq(capa[0]), eq(capa[1]), eq(capa[2] == 1));
+ }
+
+ verifyNoMoreInteractions(mIFeatureProvisioningCallback0);
+ }
+
+ @Test
+ @SmallTest
+ public void initialNotifyRcsProvisioningStatusWhenRcsServiceConnected() throws Exception {
+ when(mFeatureFlags.notifyInitialImsProvisioningStatus()).thenReturn(true);
+
+ createImsProvisioningController();
+
+ // Provisioning required capability : PRESENCE, tech : all
+ setCarrierConfig(mSubId0,
+ CarrierConfigManager.Ims.KEY_CAPABILITY_TYPE_PRESENCE_UCE_INT_ARRAY, RADIO_TECHS);
+
+ // Stored provisioning Status
+ mRcsProvisioningStorage = new int[][]{
+ {CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_LTE, 1},
+ {CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_IWLAN, 0},
+ {CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_CROSS_SIM, 0},
+ {CAPABILITY_TYPE_PRESENCE_UCE, REGISTRATION_TECH_NR, 1}
+ };
+
+ try {
+ mTestImsProvisioningController.addFeatureProvisioningChangedCallback(
+ mSubId0, mIFeatureProvisioningCallback0);
+ } catch (Exception e) {
+ throw new AssertionError("not expected exception", e);
+ }
+ processAllMessages();
+
+ // clear interactions
+ clearInvocations(mIFeatureProvisioningCallback0);
+
+ // ImsService connected
+ mRcsConnectorListener0.getValue().connectionReady(mRcsFeatureManager, mSubId0);
+
+ for (int[] capa: mRcsProvisioningStorage) {
+ verify(mIFeatureProvisioningCallback0, times(1))
+ .onRcsFeatureProvisioningChanged(eq(capa[0]), eq(capa[1]), eq(capa[2] == 1));
+ }
+
+ verifyNoMoreInteractions(mIFeatureProvisioningCallback0);
+ }
+
private void createImsProvisioningController() throws Exception {
if (Looper.myLooper() == null) {
Looper.prepare();
diff --git a/tests/src/com/android/phone/PhoneInterfaceManagerTest.java b/tests/src/com/android/phone/PhoneInterfaceManagerTest.java
index 2d338f2..2d46c80 100644
--- a/tests/src/com/android/phone/PhoneInterfaceManagerTest.java
+++ b/tests/src/com/android/phone/PhoneInterfaceManagerTest.java
@@ -23,6 +23,8 @@
import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
@@ -32,11 +34,13 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.AppOpsManager;
import android.compat.testing.PlatformCompatChangeRule;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.Resources;
+import android.os.Build;
import android.permission.flags.Flags;
import android.platform.test.flag.junit.SetFlagsRule;
import android.telephony.RadioAccessFamily;
@@ -63,6 +67,7 @@
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
+import java.util.Collections;
import java.util.Locale;
/**
@@ -90,6 +95,9 @@
@Mock
private SubscriptionManagerService mSubscriptionManagerService;
+ @Mock
+ private AppOpsManager mAppOps;
+
@Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Before
@@ -117,6 +125,8 @@
doReturn(false).when(mFeatureFlags).enforceTelephonyFeatureMappingForPublicApis();
mPhoneInterfaceManager.setPackageManager(mPackageManager);
doReturn(true).when(mPackageManager).hasSystemFeature(anyString());
+
+ mPhoneInterfaceManager.setAppOpsManager(mAppOps);
}
@Test
@@ -413,7 +423,8 @@
*/
@Test
public void getCarrierRestrictionStatus() {
- when(mPhoneInterfaceManager.validateCallerAndGetCarrierId(anyString())).thenReturn(1);
+ when(mPhoneInterfaceManager.validateCallerAndGetCarrierIds(anyString())).thenReturn(
+ Collections.singleton(1));
mPhoneInterfaceManager.getCarrierRestrictionStatus(mIIntegerConsumer,
"com.test.package");
}
@@ -422,37 +433,18 @@
public void notifyEnableDataWithAppOps_enableByUser_doNoteOp() {
mSetFlagsRule.enableFlags(Flags.FLAG_OP_ENABLE_MOBILE_DATA_BY_USER);
String packageName = "INVALID_PACKAGE";
- String error = "";
- try {
- mPhoneInterfaceManager.setDataEnabledForReason(1,
- TelephonyManager.DATA_ENABLED_REASON_USER, true, packageName);
- } catch (SecurityException expected) {
- // The test doesn't have access to note the op, but we're just interested that it makes
- // the attempt.
- error = expected.getMessage();
- }
-
- String appop = "ENABLE_MOBILE_DATA_BY_USER";
- assertTrue("expected error to contain " + packageName + " but it didn't: " + error,
- error.contains(packageName));
- assertTrue("expected error to contain " + appop + " but it didn't: " + error,
- error.contains(appop));
+ mPhoneInterfaceManager.setDataEnabledForReason(1,
+ TelephonyManager.DATA_ENABLED_REASON_USER, true, packageName);
+ verify(mAppOps).noteOpNoThrow(eq(AppOpsManager.OPSTR_ENABLE_MOBILE_DATA_BY_USER), anyInt(),
+ eq(packageName), isNull(), isNull());
}
@Test
public void notifyEnableDataWithAppOps_enableByCarrier_doNotNoteOp() {
mSetFlagsRule.enableFlags(Flags.FLAG_OP_ENABLE_MOBILE_DATA_BY_USER);
String packageName = "INVALID_PACKAGE";
- String error = "";
- try {
- mPhoneInterfaceManager.setDataEnabledForReason(1,
- TelephonyManager.DATA_ENABLED_REASON_CARRIER, true, packageName);
- } catch (SecurityException expected) {
- // The test doesn't have access to note the op, but we're just interested that it makes
- // the attempt.
- error = expected.getMessage();
- }
- assertEquals("Expected error to be empty, was " + error, error, "");
+ verify(mAppOps, never()).noteOpNoThrow(eq(AppOpsManager.OPSTR_ENABLE_MOBILE_DATA_BY_USER),
+ anyInt(), eq(packageName), isNull(), isNull());
}
@Test
@@ -507,6 +499,11 @@
@Test
@EnableCompatChanges({TelephonyManager.ENABLE_FEATURE_MAPPING})
public void testWithoutTelephonyFeatureAndCompatChanges() throws Exception {
+ // Replace field to set SDK version of vendor partition to Android V
+ int vendorApiLevel = Build.VERSION_CODES.VANILLA_ICE_CREAM;
+ replaceInstance(PhoneInterfaceManager.class, "mVendorApiLevel", mPhoneInterfaceManager,
+ vendorApiLevel);
+
// telephony features is not defined, expect UnsupportedOperationException.
doReturn(false).when(mPackageManager).hasSystemFeature(
PackageManager.FEATURE_TELEPHONY_CALLING);
diff --git a/tests/src/com/android/phone/ServiceStateProviderTest.java b/tests/src/com/android/phone/ServiceStateProviderTest.java
index 1d2ca74..ab26e94 100644
--- a/tests/src/com/android/phone/ServiceStateProviderTest.java
+++ b/tests/src/com/android/phone/ServiceStateProviderTest.java
@@ -123,6 +123,11 @@
public void notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork) {
throw new TestNotifierException();
}
+ @Override
+ public void notifyChange(Uri uri, ContentObserver observer, boolean syncToNetwork,
+ int userHandle) {
+ throw new TestNotifierException();
+ }
};
doReturn(mContentResolver).when(mContext).getContentResolver();
diff --git a/tests/src/com/android/services/telephony/DisconnectCauseUtilTest.java b/tests/src/com/android/services/telephony/DisconnectCauseUtilTest.java
index e5f7fd3..71a23e6 100644
--- a/tests/src/com/android/services/telephony/DisconnectCauseUtilTest.java
+++ b/tests/src/com/android/services/telephony/DisconnectCauseUtilTest.java
@@ -152,7 +152,8 @@
android.telecom.DisconnectCause tcCause =
DisconnectCauseUtil.toTelecomDisconnectCause(
DisconnectCause.BUSY, -1 /* precise label is NOT given */,
- EMPTY_STRING, PHONE_ID, null, getBundleWithBusyToneArray(), mFeatureFlags);
+ EMPTY_STRING, PHONE_ID, null, getBundleWithBusyToneArray(), mFeatureFlags,
+ false);
assertBusyCauseWithTargetLabel(R.string.callFailed_userBusy, tcCause);
}
@@ -170,7 +171,8 @@
android.telecom.DisconnectCause tcCause =
DisconnectCauseUtil.toTelecomDisconnectCause(DisconnectCause.BUSY,
CallFailCause.USER_BUSY /* Telephony defined a precise label */,
- EMPTY_STRING, PHONE_ID, null, getBundleWithBusyToneArray(), mFeatureFlags);
+ EMPTY_STRING, PHONE_ID, null, getBundleWithBusyToneArray(), mFeatureFlags,
+ false);
// Note: The precise label should not be overridden even though the carrier defined
// the cause to play a busy tone
assertBusyCauseWithTargetLabel(R.string.clh_callFailed_user_busy_txt, tcCause);
diff --git a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
index f783a12..d4ee933 100644
--- a/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
+++ b/tests/src/com/android/services/telephony/domainselection/EmergencyCallDomainSelectorTest.java
@@ -92,6 +92,7 @@
import android.content.Context;
import android.content.res.Resources;
import android.net.ConnectivityManager;
+import android.net.Network;
import android.net.NetworkRequest;
import android.net.Uri;
import android.os.CancellationSignal;
@@ -4228,6 +4229,70 @@
.onSelectionTerminated(eq(DisconnectCause.NOT_VALID));
}
+ @Test
+ public void testMultipleWiFiNetworksAvailable() throws Exception {
+ createSelector(SLOT_0_SUB_ID);
+ unsolBarringInfoChanged(false);
+
+ EmergencyRegistrationResult regResult = getEmergencyRegResult(UNKNOWN,
+ REGISTRATION_STATE_UNKNOWN,
+ 0, false, false, 0, 0, "", "");
+ SelectionAttributes attr = getSelectionAttributes(SLOT_0, SLOT_0_SUB_ID, regResult);
+ mDomainSelector.selectDomain(attr, mTransportSelectorCallback);
+ processAllMessages();
+
+ bindImsServiceUnregistered();
+
+ verifyScanPsPreferred();
+
+ Network network1 = mock(Network.class);
+
+ // Wi-Fi is connected.
+ mNetworkCallback.onAvailable(network1);
+
+ assertTrue(mDomainSelector.isWiFiAvailable());
+ assertFalse(mDomainSelector.getWiFiNetworksAvailable().isEmpty());
+ assertTrue(mDomainSelector.getWiFiNetworksAvailable().contains(network1));
+
+ // Wi-Fi is lost.
+ mNetworkCallback.onLost(network1);
+
+ assertFalse(mDomainSelector.isWiFiAvailable());
+ assertTrue(mDomainSelector.getWiFiNetworksAvailable().isEmpty());
+
+ Network network2 = mock(Network.class);
+ Network network3 = mock(Network.class);
+
+ // Wi-Fi networks are connected.
+ mNetworkCallback.onAvailable(network2);
+
+ assertTrue(mDomainSelector.isWiFiAvailable());
+ assertFalse(mDomainSelector.getWiFiNetworksAvailable().isEmpty());
+ assertTrue(mDomainSelector.getWiFiNetworksAvailable().contains(network2));
+ assertFalse(mDomainSelector.getWiFiNetworksAvailable().contains(network3));
+
+ mNetworkCallback.onAvailable(network3);
+
+ assertTrue(mDomainSelector.isWiFiAvailable());
+ assertFalse(mDomainSelector.getWiFiNetworksAvailable().isEmpty());
+ assertTrue(mDomainSelector.getWiFiNetworksAvailable().contains(network2));
+ assertTrue(mDomainSelector.getWiFiNetworksAvailable().contains(network3));
+
+ // Wi-Fi network2 is lost.
+ mNetworkCallback.onLost(network2);
+
+ assertTrue(mDomainSelector.isWiFiAvailable());
+ assertFalse(mDomainSelector.getWiFiNetworksAvailable().isEmpty());
+ assertFalse(mDomainSelector.getWiFiNetworksAvailable().contains(network2));
+ assertTrue(mDomainSelector.getWiFiNetworksAvailable().contains(network3));
+
+ // Wi-Fi is unavailable.
+ mNetworkCallback.onUnavailable();
+
+ assertFalse(mDomainSelector.isWiFiAvailable());
+ assertTrue(mDomainSelector.getWiFiNetworksAvailable().isEmpty());
+ }
+
private void setupForScanListTest(PersistableBundle bundle) throws Exception {
setupForScanListTest(bundle, false);
}
diff --git a/tests/src/com/android/services/telephony/domainselection/NormalCallDomainSelectorTest.java b/tests/src/com/android/services/telephony/domainselection/NormalCallDomainSelectorTest.java
index 6e438bf..309418e 100644
--- a/tests/src/com/android/services/telephony/domainselection/NormalCallDomainSelectorTest.java
+++ b/tests/src/com/android/services/telephony/domainselection/NormalCallDomainSelectorTest.java
@@ -48,6 +48,7 @@
import android.telephony.ims.ImsManager;
import android.telephony.ims.ImsMmTelManager;
import android.telephony.ims.ImsReasonInfo;
+import android.testing.TestableLooper;
import android.util.Log;
import androidx.test.runner.AndroidJUnit4;
@@ -60,7 +61,6 @@
import org.mockito.MockitoAnnotations;
import java.util.List;
-import java.util.concurrent.Executors;
import java.util.function.Consumer;
/**
@@ -79,7 +79,7 @@
private HandlerThread mHandlerThread;
private NormalCallDomainSelector mNormalCallDomainSelector;
-
+ private TestableLooper mTestableLooper;
@Mock private Context mMockContext;
@Mock private CarrierConfigManager mMockCarrierConfigMgr;
@Mock private ImsManager mMockImsManager;
@@ -124,6 +124,12 @@
mNormalCallDomainSelector = new NormalCallDomainSelector(mMockContext, SLOT_ID, SUB_ID_1,
mHandlerThread.getLooper(), mMockImsStateTracker, mMockDestroyListener);
+
+ try {
+ setUpTestableLooper();
+ } catch (Exception e) {
+ fail(e.toString());
+ }
}
@After
@@ -131,6 +137,23 @@
if (mHandlerThread != null) {
mHandlerThread.quit();
}
+
+ if (mTestableLooper != null) {
+ mTestableLooper.destroy();
+ mTestableLooper = null;
+ }
+ }
+
+ private void setUpTestableLooper() throws Exception {
+ mTestableLooper = new TestableLooper(mNormalCallDomainSelector.getLooper());
+ }
+
+ private void processAllMessages() {
+ Log.d(TAG, "processAllMessages - start");
+ while (!mTestableLooper.getLooper().getQueue().isIdle()) {
+ mTestableLooper.processAllMessages();
+ }
+ Log.d(TAG, "processAllMessages - end");
}
private void initialize(ServiceState serviceState, boolean isImsRegistered,
@@ -154,22 +177,22 @@
@Test
public void testInitialState() {
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
}
@Test
public void testDestroyedState() {
mNormalCallDomainSelector.destroy();
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.DESTROYED);
+ assertEquals(NormalCallDomainSelector.SelectorState.DESTROYED,
+ mNormalCallDomainSelector.getSelectorState());
}
@Test
public void testDestroyedDuringActiveState() {
- MockTransportSelectorCallback transportSelectorCallback =
- new MockTransportSelectorCallback(mNormalCallDomainSelector);
+ TestTransportSelectorCallback transportSelectorCallback =
+ new TestTransportSelectorCallback(mNormalCallDomainSelector);
DomainSelectionService.SelectionAttributes attributes =
new DomainSelectionService.SelectionAttributes.Builder(
@@ -183,19 +206,19 @@
mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.ACTIVE);
+ assertEquals(NormalCallDomainSelector.SelectorState.ACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
mNormalCallDomainSelector.destroy();
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.DESTROYED);
+ assertEquals(NormalCallDomainSelector.SelectorState.DESTROYED,
+ mNormalCallDomainSelector.getSelectorState());
}
@Test
public void testSelectDomainInputParams() {
- MockTransportSelectorCallback transportSelectorCallback =
- new MockTransportSelectorCallback(mNormalCallDomainSelector);
+ TestTransportSelectorCallback transportSelectorCallback =
+ new TestTransportSelectorCallback(mNormalCallDomainSelector);
DomainSelectionService.SelectionAttributes attributes =
new DomainSelectionService.SelectionAttributes.Builder(
@@ -208,8 +231,8 @@
.build();
mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.ACTIVE);
+ assertEquals(NormalCallDomainSelector.SelectorState.ACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
// Case 1: null inputs
try {
@@ -218,8 +241,8 @@
fail("Invalid input params not handled." + e.getMessage());
}
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
// Case 2: null TransportSelectorCallback
try {
@@ -228,8 +251,8 @@
fail("Invalid params (SelectionAttributes) not handled." + e.getMessage());
}
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
// Case 3: null SelectionAttributes
transportSelectorCallback.mSelectionTerminated = false;
@@ -239,11 +262,10 @@
fail("Invalid params (SelectionAttributes) not handled." + e.getMessage());
}
- assertTrue(transportSelectorCallback
- .verifyOnSelectionTerminated(DisconnectCause.OUTGOING_FAILURE));
-
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.DESTROYED);
+ assertTrue(transportSelectorCallback.mSelectionTerminated);
+ assertEquals(transportSelectorCallback.mCauseCode, DisconnectCause.OUTGOING_FAILURE);
+ assertEquals(NormalCallDomainSelector.SelectorState.DESTROYED,
+ mNormalCallDomainSelector.getSelectorState());
// Case 4: Invalid Subscription-id
attributes = new DomainSelectionService.SelectionAttributes.Builder(
@@ -260,11 +282,10 @@
fail("Invalid params (SelectionAttributes) not handled." + e.getMessage());
}
- assertTrue(transportSelectorCallback
- .verifyOnSelectionTerminated(DisconnectCause.OUTGOING_FAILURE));
-
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.DESTROYED);
+ assertTrue(transportSelectorCallback.mSelectionTerminated);
+ assertEquals(transportSelectorCallback.mCauseCode, DisconnectCause.OUTGOING_FAILURE);
+ assertEquals(NormalCallDomainSelector.SelectorState.DESTROYED,
+ mNormalCallDomainSelector.getSelectorState());
// Case 5: Invalid SELECTOR_TYPE
attributes =
@@ -282,11 +303,10 @@
fail("Invalid params (SelectionAttributes) not handled." + e.getMessage());
}
- assertTrue(transportSelectorCallback
- .verifyOnSelectionTerminated(DisconnectCause.OUTGOING_FAILURE));
-
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.DESTROYED);
+ assertTrue(transportSelectorCallback.mSelectionTerminated);
+ assertEquals(transportSelectorCallback.mCauseCode, DisconnectCause.OUTGOING_FAILURE);
+ assertEquals(NormalCallDomainSelector.SelectorState.DESTROYED,
+ mNormalCallDomainSelector.getSelectorState());
// Case 6: Emergency Call
attributes = new DomainSelectionService.SelectionAttributes.Builder(
@@ -303,44 +323,52 @@
fail("Invalid params (SelectionAttributes) not handled." + e.getMessage());
}
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.DESTROYED);
-
- assertTrue(transportSelectorCallback
- .verifyOnSelectionTerminated(DisconnectCause.OUTGOING_FAILURE));
+ assertTrue(transportSelectorCallback.mSelectionTerminated);
+ assertEquals(transportSelectorCallback.mCauseCode, DisconnectCause.OUTGOING_FAILURE);
+ assertEquals(NormalCallDomainSelector.SelectorState.DESTROYED,
+ mNormalCallDomainSelector.getSelectorState());
}
@Test
public void testOutOfService() {
- MockTransportSelectorCallback transportSelectorCallback =
- new MockTransportSelectorCallback(mNormalCallDomainSelector);
- DomainSelectionService.SelectionAttributes attributes =
- new DomainSelectionService.SelectionAttributes.Builder(
- SLOT_ID, SUB_ID_1, SELECTOR_TYPE_CALLING)
- .setAddress(TEST_URI)
- .setCallId(TEST_CALLID)
- .setEmergency(false)
- .setVideoCall(true)
- .setExitedFromAirplaneMode(false)
- .build();
+ final TestTransportSelectorCallback transportSelectorCallback =
+ new TestTransportSelectorCallback(mNormalCallDomainSelector);
+ mNormalCallDomainSelector.post(() -> {
- ServiceState serviceState = new ServiceState();
- serviceState.setStateOutOfService();
- initialize(serviceState, false, false, false, false);
+ DomainSelectionService.SelectionAttributes attributes =
+ new DomainSelectionService.SelectionAttributes.Builder(
+ SLOT_ID, SUB_ID_1, SELECTOR_TYPE_CALLING)
+ .setAddress(TEST_URI)
+ .setCallId(TEST_CALLID)
+ .setEmergency(false)
+ .setVideoCall(true)
+ .setExitedFromAirplaneMode(false)
+ .build();
- mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
+ ServiceState serviceState = new ServiceState();
+ serviceState.setStateOutOfService();
+ initialize(serviceState, false, false, false, false);
- assertTrue(transportSelectorCallback
- .verifyOnSelectionTerminated(DisconnectCause.OUT_OF_SERVICE));
+ mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
+ });
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.DESTROYED);
+ processAllMessages();
+ assertTrue(transportSelectorCallback.mSelectionTerminated);
+ assertEquals(DisconnectCause.OUT_OF_SERVICE, transportSelectorCallback.mCauseCode);
+
+ assertEquals(NormalCallDomainSelector.SelectorState.DESTROYED,
+ mNormalCallDomainSelector.getSelectorState());
}
@Test
public void testDomainSelection() {
- MockTransportSelectorCallback transportSelectorCallback =
- new MockTransportSelectorCallback(mNormalCallDomainSelector);
+ final TestTransportSelectorCallback transportSelectorCallback =
+ new TestTransportSelectorCallback(mNormalCallDomainSelector);
+
+ final ServiceState serviceState = new ServiceState();
+ serviceState.setState(ServiceState.STATE_IN_SERVICE);
+ initialize(serviceState, true, true, true, true);
+ transportSelectorCallback.reset();
DomainSelectionService.SelectionAttributes attributes =
new DomainSelectionService.SelectionAttributes.Builder(
SLOT_ID, SUB_ID_1, SELECTOR_TYPE_CALLING)
@@ -352,34 +380,17 @@
.build();
// Case 1: WLAN
- ServiceState serviceState = new ServiceState();
- serviceState.setState(ServiceState.STATE_IN_SERVICE);
- initialize(serviceState, true, true, true, true);
-
mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
- assertTrue(transportSelectorCallback.verifyOnWlanSelected());
-
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
+ processAllMessages();
+ assertTrue(transportSelectorCallback.mWlanSelected);
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
// Case 2: 5G
- mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
-
+ serviceState.setState(ServiceState.STATE_IN_SERVICE);
initialize(serviceState, true, false, true, true);
- mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
-
- assertTrue(transportSelectorCallback.verifyOnWwanSelected());
-
- assertTrue(transportSelectorCallback
- .verifyOnDomainSelected(NetworkRegistrationInfo.DOMAIN_PS));
-
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
-
- // Case 3: PS -> CS redial
- ImsReasonInfo imsReasonInfo = new ImsReasonInfo();
- imsReasonInfo.mCode = ImsReasonInfo.CODE_LOCAL_CALL_CS_RETRY_REQUIRED;
+ transportSelectorCallback.reset();
attributes = new DomainSelectionService.SelectionAttributes.Builder(
SLOT_ID, SUB_ID_1, SELECTOR_TYPE_CALLING)
.setAddress(TEST_URI)
@@ -387,54 +398,89 @@
.setEmergency(false)
.setVideoCall(false)
.setExitedFromAirplaneMode(false)
- .setPsDisconnectCause(imsReasonInfo)
+ .build();
+
+ mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
+
+ processAllMessages();
+ assertTrue(transportSelectorCallback.mWwanSelected);
+ assertEquals(NetworkRegistrationInfo.DOMAIN_PS, transportSelectorCallback.mSelectedDomain);
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
+
+
+ // Case 3: PS -> CS redial
+ final ImsReasonInfo imsReasonInfoCsRetry = new ImsReasonInfo(
+ ImsReasonInfo.CODE_LOCAL_CALL_CS_RETRY_REQUIRED, 0, null);
+ transportSelectorCallback.reset();
+ 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)
+ .setPsDisconnectCause(imsReasonInfoCsRetry)
.build();
mNormalCallDomainSelector.reselectDomain(attributes);
- assertTrue(transportSelectorCallback
- .verifyOnDomainSelected(NetworkRegistrationInfo.DOMAIN_CS));
-
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
+ processAllMessages();
+ assertEquals(transportSelectorCallback.mSelectedDomain, NetworkRegistrationInfo.DOMAIN_CS);
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
// Case 4: CS call
+ transportSelectorCallback.reset();
+ 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);
+ 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)
+ .setPsDisconnectCause(imsReasonInfoCsRetry)
+ .build();
mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
- initialize(serviceState, false, false, false, false);
- mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
-
- assertTrue(transportSelectorCallback.verifyOnWwanSelected());
-
- assertTrue(transportSelectorCallback
- .verifyOnDomainSelected(NetworkRegistrationInfo.DOMAIN_CS));
-
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
+ processAllMessages();
+ assertEquals(transportSelectorCallback.mSelectedDomain, NetworkRegistrationInfo.DOMAIN_CS);
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
//Case 5: Backup calling
serviceState.setStateOutOfService();
+ transportSelectorCallback.reset();
+ 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)
+ .setPsDisconnectCause(imsReasonInfoCsRetry)
+ .build();
initialize(serviceState, true, true, true, true);
-
mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
- assertTrue(transportSelectorCallback.verifyOnWlanSelected());
-
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.ACTIVE);
+ processAllMessages();
+ assertTrue(transportSelectorCallback.mWlanSelected);
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
}
@Test
public void testWPSCallDomainSelection() {
- MockTransportSelectorCallback transportSelectorCallback =
- new MockTransportSelectorCallback(mNormalCallDomainSelector);
+ TestTransportSelectorCallback transportSelectorCallback =
+ new TestTransportSelectorCallback(mNormalCallDomainSelector);
DomainSelectionService.SelectionAttributes attributes =
new DomainSelectionService.SelectionAttributes.Builder(
SLOT_ID, SUB_ID_1, SELECTOR_TYPE_CALLING)
@@ -457,46 +503,43 @@
mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
- assertTrue(transportSelectorCallback.verifyOnWwanSelected());
-
- assertTrue(transportSelectorCallback
- .verifyOnDomainSelected(NetworkRegistrationInfo.DOMAIN_CS));
-
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
+ processAllMessages();
+ assertTrue(transportSelectorCallback.mWwanSelected);
+ assertEquals(transportSelectorCallback.mSelectedDomain, NetworkRegistrationInfo.DOMAIN_CS);
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
//Case 2: WPS supported by IMS and WLAN registered
+ transportSelectorCallback.reset();
config.putBoolean(CarrierConfigManager.KEY_SUPPORT_WPS_OVER_IMS_BOOL, true);
serviceState.setState(ServiceState.STATE_IN_SERVICE);
initialize(serviceState, true, true, true, true);
mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
- assertTrue(transportSelectorCallback.verifyOnWlanSelected());
-
+ processAllMessages();
+ assertTrue(transportSelectorCallback.mWlanSelected);
assertEquals(mNormalCallDomainSelector.getSelectorState(),
NormalCallDomainSelector.SelectorState.INACTIVE);
//Case 2: WPS supported by IMS and LTE registered
+ transportSelectorCallback.reset();
config.putBoolean(CarrierConfigManager.KEY_SUPPORT_WPS_OVER_IMS_BOOL, true);
serviceState.setState(ServiceState.STATE_IN_SERVICE);
initialize(serviceState, true, false, true, true);
mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
- assertTrue(transportSelectorCallback.verifyOnWwanSelected());
-
- assertTrue(transportSelectorCallback
- .verifyOnDomainSelected(NetworkRegistrationInfo.DOMAIN_PS));
-
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
+ processAllMessages();
+ assertEquals(transportSelectorCallback.mSelectedDomain, NetworkRegistrationInfo.DOMAIN_PS);
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
}
@Test
public void testTtyCallDomainSelection() {
- MockTransportSelectorCallback transportSelectorCallback =
- new MockTransportSelectorCallback(mNormalCallDomainSelector);
+ TestTransportSelectorCallback transportSelectorCallback =
+ new TestTransportSelectorCallback(mNormalCallDomainSelector);
DomainSelectionService.SelectionAttributes attributes =
new DomainSelectionService.SelectionAttributes.Builder(
SLOT_ID, SUB_ID_1, SELECTOR_TYPE_CALLING)
@@ -520,42 +563,34 @@
mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
- assertTrue(transportSelectorCallback.verifyOnWwanSelected());
-
- assertTrue(transportSelectorCallback
- .verifyOnDomainSelected(NetworkRegistrationInfo.DOMAIN_CS));
-
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
+ processAllMessages();
+ assertTrue(transportSelectorCallback.mWwanSelected);
+ assertEquals(transportSelectorCallback.mSelectedDomain, NetworkRegistrationInfo.DOMAIN_CS);
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
//Case 2: TTY supported by IMS and TTY enabled
+ transportSelectorCallback.reset();
config.putBoolean(CarrierConfigManager.KEY_CARRIER_VOLTE_TTY_SUPPORTED_BOOL, true);
mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
- assertTrue(transportSelectorCallback.verifyOnWwanSelected());
-
- assertTrue(transportSelectorCallback
- .verifyOnDomainSelected(NetworkRegistrationInfo.DOMAIN_PS));
-
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
+ processAllMessages();
+ assertEquals(transportSelectorCallback.mSelectedDomain, NetworkRegistrationInfo.DOMAIN_PS);
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
//Case 3: TTY supported by IMS and TTY disabled
+ transportSelectorCallback.reset();
doReturn(TelecomManager.TTY_MODE_OFF).when(mMockTelecomManager).getCurrentTtyMode();
mNormalCallDomainSelector.selectDomain(attributes, transportSelectorCallback);
- assertTrue(transportSelectorCallback.verifyOnWwanSelected());
-
- assertTrue(transportSelectorCallback
- .verifyOnDomainSelected(NetworkRegistrationInfo.DOMAIN_PS));
-
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
+ processAllMessages();
+ assertEquals(transportSelectorCallback.mSelectedDomain, NetworkRegistrationInfo.DOMAIN_PS);
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
}
-
-
- static class MockTransportSelectorCallback implements TransportSelectorCallback,
+ static class TestTransportSelectorCallback implements TransportSelectorCallback,
WwanSelectorCallback {
public boolean mCreated;
public boolean mWlanSelected;
@@ -566,8 +601,9 @@
int mSelectedDomain;
NormalCallDomainSelector mNormalCallDomainSelector;
- MockTransportSelectorCallback(NormalCallDomainSelector normalCallDomainSelector) {
+ TestTransportSelectorCallback(NormalCallDomainSelector normalCallDomainSelector) {
mNormalCallDomainSelector = normalCallDomainSelector;
+ mCauseCode = DisconnectCause.NOT_VALID;
}
@Override
@@ -575,50 +611,21 @@
Log.d(TAG, "onCreated");
mCreated = true;
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
-
- notifyAll();
- }
-
- public boolean verifyOnCreated() {
- mCreated = false;
- Log.d(TAG, "verifyOnCreated");
- waitForCallback(mCreated);
- return mCreated;
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
}
@Override
public synchronized void onWlanSelected(boolean useEmergencyPdn) {
Log.d(TAG, "onWlanSelected");
mWlanSelected = true;
-
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
-
- notifyAll();
- }
-
- public boolean verifyOnWlanSelected() {
- Log.d(TAG, "verifyOnWlanSelected");
- waitForCallback(mWlanSelected);
- return mWlanSelected;
}
@Override
public void onWwanSelected(final Consumer<WwanSelectorCallback> consumer) {
+ Log.d(TAG, "onWwanSelected");
mWwanSelected = true;
- Executors.newSingleThreadExecutor().execute(() -> {
- consumer.accept(this);
- });
-
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
- }
-
- public boolean verifyOnWwanSelected() {
- waitForCallback(mWwanSelected);
- return mWwanSelected;
+ consumer.accept(this);
}
@Override
@@ -627,31 +634,12 @@
mCauseCode = cause;
mSelectionTerminated = true;
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
notifyAll();
}
- public boolean verifyOnSelectionTerminated(int cause) {
- Log.i(TAG, "verifyOnSelectionTerminated - called");
- waitForCallback(mSelectionTerminated);
- return (mSelectionTerminated && cause == mCauseCode);
- }
-
- private synchronized void waitForCallback(boolean condition) {
- long now = System.currentTimeMillis();
- long deadline = now + 1000;
- try {
- while (!condition && now < deadline) {
- wait(deadline - now);
- now = System.currentTimeMillis();
- }
- } catch (Exception e) {
- Log.i(TAG, e.getMessage());
- }
- }
-
@Override
public void onRequestEmergencyNetworkScan(@NonNull List<Integer> preferredNetworks,
int scanType,
@@ -668,17 +656,19 @@
mSelectedDomain = domain;
mDomainSelected = true;
- assertEquals(mNormalCallDomainSelector.getSelectorState(),
- NormalCallDomainSelector.SelectorState.INACTIVE);
+ assertEquals(NormalCallDomainSelector.SelectorState.INACTIVE,
+ mNormalCallDomainSelector.getSelectorState());
notifyAll();
}
-
- public boolean verifyOnDomainSelected(int domain) {
- Log.i(TAG, "verifyOnDomainSelected - called");
+ public void reset() {
+ mCreated = false;
+ mWlanSelected = false;
+ mWwanSelected = false;
+ mSelectionTerminated = false;
mDomainSelected = false;
- waitForCallback(mDomainSelected);
- return (domain == mSelectedDomain);
+ mCauseCode = DisconnectCause.NOT_VALID;
+ mSelectedDomain = NetworkRegistrationInfo.DOMAIN_UNKNOWN;
}
}
}
diff --git a/tests/src/com/android/services/telephony/rcs/TelephonyRcsServiceTest.java b/tests/src/com/android/services/telephony/rcs/TelephonyRcsServiceTest.java
index d575d77..4cabf95 100644
--- a/tests/src/com/android/services/telephony/rcs/TelephonyRcsServiceTest.java
+++ b/tests/src/com/android/services/telephony/rcs/TelephonyRcsServiceTest.java
@@ -39,6 +39,7 @@
import com.android.ims.FeatureConnector;
import com.android.ims.RcsFeatureManager;
import com.android.internal.telephony.ISub;
+import com.android.internal.telephony.flags.FeatureFlags;
import org.junit.After;
import org.junit.Before;
@@ -68,6 +69,8 @@
@Mock
private TelephonyManager mTelephonyManager;
+ @Mock FeatureFlags mFeatureFlags;
+
private RcsFeatureController mFeatureControllerSlot0;
private RcsFeatureController mFeatureControllerSlot1;
@@ -91,9 +94,9 @@
doReturn(mFeatureControllerSlot1).when(mFeatureFactory).createController(any(), eq(1),
anyInt());
doReturn(mMockUceSlot0).when(mFeatureFactory).createUceControllerManager(any(), eq(0),
- anyInt());
+ anyInt(), any());
doReturn(mMockUceSlot1).when(mFeatureFactory).createUceControllerManager(any(), eq(1),
- anyInt());
+ anyInt(), any());
doReturn(mMockSipTransportSlot0).when(mFeatureFactory).createSipTransportController(any(),
eq(0), anyInt());
doReturn(mMockSipTransportSlot1).when(mFeatureFactory).createSipTransportController(any(),
@@ -363,7 +366,8 @@
}
private TelephonyRcsService createRcsService(int numSlots) {
- TelephonyRcsService service = new TelephonyRcsService(mContext, numSlots, mResourceProxy);
+ TelephonyRcsService service = new TelephonyRcsService(mContext, numSlots, mResourceProxy,
+ mFeatureFlags);
service.setFeatureFactory(mFeatureFactory);
service.initialize();
verify(mContext).registerReceiver(mReceiverCaptor.capture(), any());
diff --git a/tests/src/com/android/services/telephony/rcs/UceControllerManagerTest.java b/tests/src/com/android/services/telephony/rcs/UceControllerManagerTest.java
index 17decb9..e506931 100644
--- a/tests/src/com/android/services/telephony/rcs/UceControllerManagerTest.java
+++ b/tests/src/com/android/services/telephony/rcs/UceControllerManagerTest.java
@@ -35,6 +35,7 @@
import com.android.TestExecutorService;
import com.android.ims.RcsFeatureManager;
import com.android.ims.rcs.uce.UceController;
+import com.android.internal.telephony.flags.FeatureFlags;
import org.junit.After;
import org.junit.Before;
@@ -52,6 +53,7 @@
@Mock private UceController mUceController;
@Mock private RcsFeatureManager mRcsFeatureManager;
+ @Mock private FeatureFlags mFeatureFlags;
private final ExecutorService mExecutorService = new TestExecutorService();
@@ -260,7 +262,7 @@
private UceControllerManager getUceControllerManager() {
UceControllerManager manager = new UceControllerManager(mContext, mSlotId,
- mExecutorService, mUceController);
+ mExecutorService, mUceController, mFeatureFlags);
return manager;
}
}